Skip to content

Commit 8feb583

Browse files
committed
Merge branch 'feature/fix_ccache_not_in_path' into feature/c_api
2 parents 3519c63 + 0f8cc82 commit 8feb583

File tree

26 files changed

+685
-529
lines changed

26 files changed

+685
-529
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "book"]
2+
path = book
3+
url = https://github.com/PaddlePaddle/book.git

.pre-commit-config.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
sha: c25201a00e6b0514370501050cf2a8538ac12270
33
hooks:
44
- id: remove-crlf
5-
files: (?!.*third_party)^.*$
5+
files: (?!.*third_party)^.*$ | (?!.*book)^.*$
66
- repo: https://github.com/reyoung/mirrors-yapf.git
77
sha: v0.13.2
88
hooks:
99
- id: yapf
10-
files: (.*\.(py|bzl)|BUILD|.*\.BUILD|WORKSPACE)$ # Bazel BUILD files follow Python syntax.
10+
files: (.*\.(py|bzl)|BUILD|.*\.BUILD|WORKSPACE)$
1111
- repo: https://github.com/pre-commit/pre-commit-hooks
1212
sha: 7539d8bd1a00a3c1bfd34cdb606d3a6372e83469
1313
hooks:
1414
- id: check-added-large-files
1515
- id: check-merge-conflict
1616
- id: check-symlinks
1717
- id: detect-private-key
18-
files: (?!.*third_party)^.*$
18+
files: (?!.*third_party)^.*$ | (?!.*book)^.*$
1919
- id: end-of-file-fixer
2020
- repo: https://github.com/PaddlePaddle/clang-format-pre-commit-hook.git
2121
sha: 28c0ea8a67a3e2dbbf4822ef44e85b63a0080a29

authors

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,16 @@ Luo, Tao
2929
Lyu, Qin
3030
Mao, Hongyue
3131
Qian, Xiaojun
32+
Qiao, Longfei
3233
Qi, Jun
3334
Qin, Duohao
3435
Shen, Guolong
3536
Shi, Guangchuan
3637
Song, Xiang
38+
Wang, Helin
3739
Wang, Jiang
3840
Wang, Yanfei
41+
Wang, Yi
3942
Wang, Yong
4043
Weng, Renliang
4144
Xu, Tianbing

book

Submodule book added at 22ed2a0

cmake/ccache.cmake

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Use ccache if found ccache program
22

3-
find_program(CCACHE_FOUND ccache)
3+
find_program(CCACHE_PATH ccache)
44

5-
if(CCACHE_FOUND)
5+
if(CCACHE_PATH)
66
message(STATUS "Ccache is founded, use ccache to speed up compile.")
7-
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
8-
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
9-
endif(CCACHE_FOUND)
7+
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_PATH})
8+
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE_PATH})
9+
endif(CCACHE_PATH)

cmake/external/protobuf.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
INCLUDE(ExternalProject)
1616

17-
FIND_PACKAGE(Protobuf)
17+
FIND_PACKAGE(Protobuf 3.1)
1818

1919
IF(NOT PROTOBUF_FOUND)
2020
SET(PROTOBUF_SOURCES_DIR ${THIRD_PARTY_PATH}/protobuf)

demo/image_classification/api_v2_train.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,27 @@
1313
# limitations under the License
1414

1515
import sys
16+
1617
import paddle.v2 as paddle
18+
1719
from api_v2_vgg import vgg_bn_drop
18-
from api_v2_resnet import resnet_cifar10
1920

2021

2122
def main():
2223
datadim = 3 * 32 * 32
2324
classdim = 10
2425

2526
# PaddlePaddle init
26-
paddle.init(use_gpu=True, trainer_count=1)
27+
paddle.init(use_gpu=False, trainer_count=1)
2728

2829
image = paddle.layer.data(
2930
name="image", type=paddle.data_type.dense_vector(datadim))
3031

3132
# Add neural network config
3233
# option 1. resnet
33-
net = resnet_cifar10(image, depth=32)
34+
# net = resnet_cifar10(image, depth=32)
3435
# option 2. vgg
35-
# net = vgg_bn_drop(image)
36+
net = vgg_bn_drop(image)
3637

3738
out = paddle.layer.fc(input=net,
3839
size=classdim,
@@ -68,8 +69,8 @@ def event_handler(event):
6869
result = trainer.test(
6970
reader=paddle.batch(
7071
paddle.dataset.cifar.test10(), batch_size=128),
71-
reader_dict={'image': 0,
72-
'label': 1})
72+
feeding={'image': 0,
73+
'label': 1})
7374
print "\nTest with Pass %d, %s" % (event.pass_id, result.metrics)
7475

7576
# Create trainer
@@ -83,8 +84,8 @@ def event_handler(event):
8384
batch_size=128),
8485
num_passes=5,
8586
event_handler=event_handler,
86-
reader_dict={'image': 0,
87-
'label': 1})
87+
feeding={'image': 0,
88+
'label': 1})
8889

8990

9091
if __name__ == '__main__':

demo/introduction/api_train_v2.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,26 +30,26 @@ def main():
3030
def event_handler(event):
3131
if isinstance(event, paddle.event.EndIteration):
3232
if event.batch_id % 100 == 0:
33-
print "Pass %d, Batch %d, Cost %f, %s" % (
34-
event.pass_id, event.batch_id, event.cost, event.metrics)
33+
print "Pass %d, Batch %d, Cost %f" % (
34+
event.pass_id, event.batch_id, event.cost)
3535

3636
if isinstance(event, paddle.event.EndPass):
37-
result = trainer.test(
38-
reader=paddle.reader.batched(
39-
uci_housing.test(), batch_size=2),
40-
reader_dict={'x': 0,
37+
if (event.pass_id + 1) % 10 == 0:
38+
result = trainer.test(
39+
reader=paddle.batch(
40+
uci_housing.test(), batch_size=2),
41+
feeding={'x': 0,
4142
'y': 1})
42-
if event.pass_id % 10 == 0:
43-
print "Test %d, %s" % (event.pass_id, result.metrics)
43+
print "Test %d, %.2f" % (event.pass_id, result.cost)
4444

4545
# training
4646
trainer.train(
47-
reader=paddle.reader.batched(
47+
reader=paddle.batch(
4848
paddle.reader.shuffle(
4949
uci_housing.train(), buf_size=500),
5050
batch_size=2),
51-
reader_dict={'x': 0,
52-
'y': 1},
51+
feeding={'x': 0,
52+
'y': 1},
5353
event_handler=event_handler,
5454
num_passes=30)
5555

demo/mnist/api_train_v2.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,18 +92,14 @@ def main():
9292
def event_handler(event):
9393
if isinstance(event, paddle.event.EndIteration):
9494
if event.batch_id % 1000 == 0:
95-
result = trainer.test(reader=paddle.reader.batched(
96-
paddle.dataset.mnist.test(), batch_size=256))
97-
98-
print "Pass %d, Batch %d, Cost %f, %s, Testing metrics %s" % (
99-
event.pass_id, event.batch_id, event.cost, event.metrics,
100-
result.metrics)
95+
print "Pass %d, Batch %d, Cost %f, %s" % (
96+
event.pass_id, event.batch_id, event.cost, event.metrics)
10197

10298
with gzip.open('params.tar.gz', 'w') as f:
10399
parameters.to_tar(f)
104100

105101
elif isinstance(event, paddle.event.EndPass):
106-
result = trainer.test(reader=paddle.reader.batched(
102+
result = trainer.test(reader=paddle.batch(
107103
paddle.dataset.mnist.test(), batch_size=128))
108104
print "Test with Pass %d, Cost %f, %s\n" % (
109105
event.pass_id, result.cost, result.metrics)
@@ -123,17 +119,17 @@ def event_handler(event):
123119
print 'Best pass is %s, testing Avgcost is %s' % (best[0], best[1])
124120
print 'The classification accuracy is %.2f%%' % (100 - float(best[2]) * 100)
125121

122+
test_creator = paddle.dataset.mnist.test()
123+
test_data = []
124+
for item in test_creator():
125+
test_data.append((item[0], ))
126+
if len(test_data) == 100:
127+
break
128+
126129
# output is a softmax layer. It returns probabilities.
127130
# Shape should be (100, 10)
128131
probs = paddle.infer(
129-
output=predict,
130-
parameters=parameters,
131-
reader=paddle.batch(
132-
paddle.reader.firstn(
133-
paddle.reader.map_readers(lambda item: (item[0], ),
134-
paddle.dataset.mnist.test()),
135-
n=100),
136-
batch_size=32))
132+
output_layer=predict, parameters=parameters, input=test_data)
137133
print probs.shape
138134

139135

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import paddle.v2 as paddle
2+
import cPickle
3+
import copy
4+
5+
6+
def main():
7+
paddle.init(use_gpu=False)
8+
movie_title_dict = paddle.dataset.movielens.get_movie_title_dict()
9+
uid = paddle.layer.data(
10+
name='user_id',
11+
type=paddle.data_type.integer_value(
12+
paddle.dataset.movielens.max_user_id() + 1))
13+
usr_emb = paddle.layer.embedding(input=uid, size=32)
14+
15+
usr_gender_id = paddle.layer.data(
16+
name='gender_id', type=paddle.data_type.integer_value(2))
17+
usr_gender_emb = paddle.layer.embedding(input=usr_gender_id, size=16)
18+
19+
usr_age_id = paddle.layer.data(
20+
name='age_id',
21+
type=paddle.data_type.integer_value(
22+
len(paddle.dataset.movielens.age_table)))
23+
usr_age_emb = paddle.layer.embedding(input=usr_age_id, size=16)
24+
25+
usr_job_id = paddle.layer.data(
26+
name='job_id',
27+
type=paddle.data_type.integer_value(paddle.dataset.movielens.max_job_id(
28+
) + 1))
29+
30+
usr_job_emb = paddle.layer.embedding(input=usr_job_id, size=16)
31+
32+
usr_combined_features = paddle.layer.fc(
33+
input=[usr_emb, usr_gender_emb, usr_age_emb, usr_job_emb],
34+
size=200,
35+
act=paddle.activation.Tanh())
36+
37+
mov_id = paddle.layer.data(
38+
name='movie_id',
39+
type=paddle.data_type.integer_value(
40+
paddle.dataset.movielens.max_movie_id() + 1))
41+
mov_emb = paddle.layer.embedding(input=mov_id, size=32)
42+
43+
mov_categories = paddle.layer.data(
44+
name='category_id',
45+
type=paddle.data_type.sparse_binary_vector(
46+
len(paddle.dataset.movielens.movie_categories())))
47+
48+
mov_categories_hidden = paddle.layer.fc(input=mov_categories, size=32)
49+
50+
mov_title_id = paddle.layer.data(
51+
name='movie_title',
52+
type=paddle.data_type.integer_value_sequence(len(movie_title_dict)))
53+
mov_title_emb = paddle.layer.embedding(input=mov_title_id, size=32)
54+
mov_title_conv = paddle.networks.sequence_conv_pool(
55+
input=mov_title_emb, hidden_size=32, context_len=3)
56+
57+
mov_combined_features = paddle.layer.fc(
58+
input=[mov_emb, mov_categories_hidden, mov_title_conv],
59+
size=200,
60+
act=paddle.activation.Tanh())
61+
62+
inference = paddle.layer.cos_sim(
63+
a=usr_combined_features, b=mov_combined_features, size=1, scale=5)
64+
cost = paddle.layer.regression_cost(
65+
input=inference,
66+
label=paddle.layer.data(
67+
name='score', type=paddle.data_type.dense_vector(1)))
68+
69+
parameters = paddle.parameters.create(cost)
70+
71+
trainer = paddle.trainer.SGD(cost=cost,
72+
parameters=parameters,
73+
update_equation=paddle.optimizer.Adam(
74+
learning_rate=1e-4))
75+
feeding = {
76+
'user_id': 0,
77+
'gender_id': 1,
78+
'age_id': 2,
79+
'job_id': 3,
80+
'movie_id': 4,
81+
'category_id': 5,
82+
'movie_title': 6,
83+
'score': 7
84+
}
85+
86+
def event_handler(event):
87+
if isinstance(event, paddle.event.EndIteration):
88+
if event.batch_id % 100 == 0:
89+
print "Pass %d Batch %d Cost %.2f" % (
90+
event.pass_id, event.batch_id, event.cost)
91+
92+
trainer.train(
93+
reader=paddle.batch(
94+
paddle.reader.shuffle(
95+
paddle.dataset.movielens.train(), buf_size=8192),
96+
batch_size=256),
97+
event_handler=event_handler,
98+
feeding=feeding,
99+
num_passes=1)
100+
101+
user_id = 234
102+
movie_id = 345
103+
104+
user = paddle.dataset.movielens.user_info()[user_id]
105+
movie = paddle.dataset.movielens.movie_info()[movie_id]
106+
107+
feature = user.value() + movie.value()
108+
109+
def reader():
110+
yield feature
111+
112+
infer_dict = copy.copy(feeding)
113+
del infer_dict['score']
114+
115+
prediction = paddle.infer(
116+
output=inference,
117+
parameters=parameters,
118+
reader=paddle.batch(
119+
reader, batch_size=32),
120+
feeding=infer_dict)
121+
print(prediction + 5) / 2
122+
123+
124+
if __name__ == '__main__':
125+
main()

0 commit comments

Comments
 (0)