Skip to content

Commit d34eb34

Browse files
committed
Merge branch 'develop' of github.com:baidu/Paddle into feature/serialize_deserialize_in_parameters
2 parents efe5381 + 5f2cbce commit d34eb34

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+906
-272
lines changed

demo/image_classification/api_v2_train.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def event_handler(event):
6666
sys.stdout.flush()
6767
if isinstance(event, paddle.event.EndPass):
6868
result = trainer.test(
69-
reader=paddle.reader.batched(
69+
reader=paddle.batch(
7070
paddle.dataset.cifar.test10(), batch_size=128),
7171
reader_dict={'image': 0,
7272
'label': 1})
@@ -77,7 +77,7 @@ def event_handler(event):
7777
parameters=parameters,
7878
update_equation=momentum_optimizer)
7979
trainer.train(
80-
reader=paddle.reader.batched(
80+
reader=paddle.batch(
8181
paddle.reader.shuffle(
8282
paddle.dataset.cifar.train10(), buf_size=50000),
8383
batch_size=128),

demo/mnist/api_train_v2.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ def event_handler(event):
111111
result.metrics['classification_error_evaluator']))
112112

113113
trainer.train(
114-
reader=paddle.reader.batched(
114+
reader=paddle.batch(
115115
paddle.reader.shuffle(
116116
paddle.dataset.mnist.train(), buf_size=8192),
117117
batch_size=128),
@@ -128,7 +128,7 @@ def event_handler(event):
128128
probs = paddle.infer(
129129
output=predict,
130130
parameters=parameters,
131-
reader=paddle.reader.batched(
131+
reader=paddle.batch(
132132
paddle.reader.firstn(
133133
paddle.reader.map_readers(lambda item: (item[0], ),
134134
paddle.dataset.mnist.test()),

demo/seqToseq/api_train_v2.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,31 +72,35 @@ def main():
7272
# define network topology
7373
cost = seqToseq_net_v2(source_dict_dim, target_dict_dim)
7474
parameters = paddle.parameters.create(cost)
75-
optimizer = paddle.optimizer.Adam(learning_rate=1e-4)
76-
77-
def event_handler(event):
78-
if isinstance(event, paddle.event.EndIteration):
79-
if event.batch_id % 10 == 0:
80-
print "Pass %d, Batch %d, Cost %f, %s" % (
81-
event.pass_id, event.batch_id, event.cost, event.metrics)
8275

76+
# define optimize method and trainer
77+
optimizer = paddle.optimizer.Adam(learning_rate=1e-4)
8378
trainer = paddle.trainer.SGD(cost=cost,
8479
parameters=parameters,
8580
update_equation=optimizer)
8681

82+
# define data reader
8783
reader_dict = {
8884
'source_language_word': 0,
8985
'target_language_word': 1,
9086
'target_language_next_word': 2
9187
}
9288

93-
trn_reader = paddle.reader.batched(
89+
wmt14_reader = paddle.reader.batched(
9490
paddle.reader.shuffle(
9591
train_reader("data/pre-wmt14/train/train"), buf_size=8192),
9692
batch_size=5)
9793

94+
# define event_handler callback
95+
def event_handler(event):
96+
if isinstance(event, paddle.event.EndIteration):
97+
if event.batch_id % 10 == 0:
98+
print "Pass %d, Batch %d, Cost %f, %s" % (
99+
event.pass_id, event.batch_id, event.cost, event.metrics)
100+
101+
# start to train
98102
trainer.train(
99-
reader=trn_reader,
103+
reader=wmt14_reader,
100104
event_handler=event_handler,
101105
num_passes=10000,
102106
reader_dict=reader_dict)

demo/seqToseq/seqToseq_net_v2.py

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
import paddle.v2.activation as activation
2-
import paddle.v2.attr as attr
3-
import paddle.v2.data_type as data_type
4-
import paddle.v2.layer as layer
5-
import paddle.v2.networks as networks
1+
import paddle.v2 as paddle
62

73

84
def seqToseq_net_v2(source_dict_dim, target_dict_dim):
@@ -12,79 +8,85 @@ def seqToseq_net_v2(source_dict_dim, target_dict_dim):
128
encoder_size = 512 # dimension of hidden unit in GRU Encoder network
139

1410
#### Encoder
15-
src_word_id = layer.data(
11+
src_word_id = paddle.layer.data(
1612
name='source_language_word',
17-
type=data_type.integer_value_sequence(source_dict_dim))
18-
src_embedding = layer.embedding(
13+
type=paddle.data_type.integer_value_sequence(source_dict_dim))
14+
src_embedding = paddle.layer.embedding(
1915
input=src_word_id,
2016
size=word_vector_dim,
21-
param_attr=attr.ParamAttr(name='_source_language_embedding'))
22-
src_forward = networks.simple_gru(input=src_embedding, size=encoder_size)
23-
src_backward = networks.simple_gru(
17+
param_attr=paddle.attr.ParamAttr(name='_source_language_embedding'))
18+
src_forward = paddle.networks.simple_gru(
19+
input=src_embedding, size=encoder_size)
20+
src_backward = paddle.networks.simple_gru(
2421
input=src_embedding, size=encoder_size, reverse=True)
25-
encoded_vector = layer.concat(input=[src_forward, src_backward])
22+
encoded_vector = paddle.layer.concat(input=[src_forward, src_backward])
2623

2724
#### Decoder
28-
with layer.mixed(size=decoder_size) as encoded_proj:
29-
encoded_proj += layer.full_matrix_projection(input=encoded_vector)
25+
with paddle.layer.mixed(size=decoder_size) as encoded_proj:
26+
encoded_proj += paddle.layer.full_matrix_projection(
27+
input=encoded_vector)
3028

31-
backward_first = layer.first_seq(input=src_backward)
29+
backward_first = paddle.layer.first_seq(input=src_backward)
3230

33-
with layer.mixed(size=decoder_size, act=activation.Tanh()) as decoder_boot:
34-
decoder_boot += layer.full_matrix_projection(input=backward_first)
31+
with paddle.layer.mixed(
32+
size=decoder_size, act=paddle.activation.Tanh()) as decoder_boot:
33+
decoder_boot += paddle.layer.full_matrix_projection(
34+
input=backward_first)
3535

3636
def gru_decoder_with_attention(enc_vec, enc_proj, current_word):
3737

38-
decoder_mem = layer.memory(
38+
decoder_mem = paddle.layer.memory(
3939
name='gru_decoder', size=decoder_size, boot_layer=decoder_boot)
4040

41-
context = networks.simple_attention(
41+
context = paddle.networks.simple_attention(
4242
encoded_sequence=enc_vec,
4343
encoded_proj=enc_proj,
4444
decoder_state=decoder_mem)
4545

46-
with layer.mixed(size=decoder_size * 3) as decoder_inputs:
47-
decoder_inputs += layer.full_matrix_projection(input=context)
48-
decoder_inputs += layer.full_matrix_projection(input=current_word)
46+
with paddle.layer.mixed(size=decoder_size * 3) as decoder_inputs:
47+
decoder_inputs += paddle.layer.full_matrix_projection(input=context)
48+
decoder_inputs += paddle.layer.full_matrix_projection(
49+
input=current_word)
4950

50-
gru_step = layer.gru_step(
51+
gru_step = paddle.layer.gru_step(
5152
name='gru_decoder',
5253
input=decoder_inputs,
5354
output_mem=decoder_mem,
5455
size=decoder_size)
5556

56-
with layer.mixed(
57-
size=target_dict_dim, bias_attr=True,
58-
act=activation.Softmax()) as out:
59-
out += layer.full_matrix_projection(input=gru_step)
57+
with paddle.layer.mixed(
58+
size=target_dict_dim,
59+
bias_attr=True,
60+
act=paddle.activation.Softmax()) as out:
61+
out += paddle.layer.full_matrix_projection(input=gru_step)
6062
return out
6163

6264
decoder_group_name = "decoder_group"
63-
group_input1 = layer.StaticInputV2(input=encoded_vector, is_seq=True)
64-
group_input2 = layer.StaticInputV2(input=encoded_proj, is_seq=True)
65+
group_input1 = paddle.layer.StaticInputV2(input=encoded_vector, is_seq=True)
66+
group_input2 = paddle.layer.StaticInputV2(input=encoded_proj, is_seq=True)
6567
group_inputs = [group_input1, group_input2]
6668

67-
trg_embedding = layer.embedding(
68-
input=layer.data(
69+
trg_embedding = paddle.layer.embedding(
70+
input=paddle.layer.data(
6971
name='target_language_word',
70-
type=data_type.integer_value_sequence(target_dict_dim)),
72+
type=paddle.data_type.integer_value_sequence(target_dict_dim)),
7173
size=word_vector_dim,
72-
param_attr=attr.ParamAttr(name='_target_language_embedding'))
74+
param_attr=paddle.attr.ParamAttr(name='_target_language_embedding'))
7375
group_inputs.append(trg_embedding)
7476

7577
# For decoder equipped with attention mechanism, in training,
7678
# target embeding (the groudtruth) is the data input,
7779
# while encoded source sequence is accessed to as an unbounded memory.
7880
# Here, the StaticInput defines a read-only memory
7981
# for the recurrent_group.
80-
decoder = layer.recurrent_group(
82+
decoder = paddle.layer.recurrent_group(
8183
name=decoder_group_name,
8284
step=gru_decoder_with_attention,
8385
input=group_inputs)
8486

85-
lbl = layer.data(
87+
lbl = paddle.layer.data(
8688
name='target_language_next_word',
87-
type=data_type.integer_value_sequence(target_dict_dim))
88-
cost = layer.classification_cost(input=decoder, label=lbl)
89+
type=paddle.data_type.integer_value_sequence(target_dict_dim))
90+
cost = paddle.layer.classification_cost(input=decoder, label=lbl)
8991

9092
return cost

demo/word2vec/train_v2.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import math
2+
3+
import paddle.v2 as paddle
4+
5+
dictsize = 1953
6+
embsize = 32
7+
hiddensize = 256
8+
N = 5
9+
10+
11+
def wordemb(inlayer):
12+
wordemb = paddle.layer.table_projection(
13+
input=inlayer,
14+
size=embsize,
15+
param_attr=paddle.attr.Param(
16+
name="_proj",
17+
initial_std=0.001,
18+
learning_rate=1,
19+
l2_rate=0, ))
20+
return wordemb
21+
22+
23+
def main():
24+
paddle.init(use_gpu=False, trainer_count=1)
25+
word_dict = paddle.dataset.imikolov.build_dict()
26+
dict_size = len(word_dict)
27+
firstword = paddle.layer.data(
28+
name="firstw", type=paddle.data_type.integer_value(dict_size))
29+
secondword = paddle.layer.data(
30+
name="secondw", type=paddle.data_type.integer_value(dict_size))
31+
thirdword = paddle.layer.data(
32+
name="thirdw", type=paddle.data_type.integer_value(dict_size))
33+
fourthword = paddle.layer.data(
34+
name="fourthw", type=paddle.data_type.integer_value(dict_size))
35+
nextword = paddle.layer.data(
36+
name="fifthw", type=paddle.data_type.integer_value(dict_size))
37+
38+
Efirst = wordemb(firstword)
39+
Esecond = wordemb(secondword)
40+
Ethird = wordemb(thirdword)
41+
Efourth = wordemb(fourthword)
42+
43+
contextemb = paddle.layer.concat(input=[Efirst, Esecond, Ethird, Efourth])
44+
hidden1 = paddle.layer.fc(input=contextemb,
45+
size=hiddensize,
46+
act=paddle.activation.Sigmoid(),
47+
layer_attr=paddle.attr.Extra(drop_rate=0.5),
48+
bias_attr=paddle.attr.Param(learning_rate=2),
49+
param_attr=paddle.attr.Param(
50+
initial_std=1. / math.sqrt(embsize * 8),
51+
learning_rate=1))
52+
predictword = paddle.layer.fc(input=hidden1,
53+
size=dict_size,
54+
bias_attr=paddle.attr.Param(learning_rate=2),
55+
act=paddle.activation.Softmax())
56+
57+
def event_handler(event):
58+
if isinstance(event, paddle.event.EndIteration):
59+
if event.batch_id % 100 == 0:
60+
result = trainer.test(
61+
paddle.batch(
62+
paddle.dataset.imikolov.test(word_dict, N), 32))
63+
print "Pass %d, Batch %d, Cost %f, %s, Testing metrics %s" % (
64+
event.pass_id, event.batch_id, event.cost, event.metrics,
65+
result.metrics)
66+
67+
cost = paddle.layer.classification_cost(input=predictword, label=nextword)
68+
parameters = paddle.parameters.create(cost)
69+
adam_optimizer = paddle.optimizer.Adam(
70+
learning_rate=3e-3,
71+
regularization=paddle.optimizer.L2Regularization(8e-4))
72+
trainer = paddle.trainer.SGD(cost, parameters, adam_optimizer)
73+
trainer.train(
74+
paddle.batch(paddle.dataset.imikolov.train(word_dict, N), 32),
75+
num_passes=30,
76+
event_handler=event_handler)
77+
78+
79+
if __name__ == '__main__':
80+
main()

doc/api/index_cn.rst

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,26 @@
11
API
2-
===
2+
===
3+
4+
模型配置 API
5+
------------
6+
7+
.. toctree::
8+
:maxdepth: 1
9+
10+
v2/model_configs.rst
11+
12+
数据 API
13+
--------
14+
15+
.. toctree::
16+
:maxdepth: 1
17+
18+
v2/data.rst
19+
20+
训练 API
21+
--------
22+
23+
.. toctree::
24+
:maxdepth: 1
25+
26+
v2/run_logic.rst

doc/api/index_en.rst

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,20 @@ Model Config API
77
.. toctree::
88
:maxdepth: 1
99

10-
v2/model_configs.rst
10+
v2/model_configs.rst
11+
12+
Data API
13+
--------
14+
15+
.. toctree::
16+
:maxdepth: 1
17+
18+
v2/data.rst
19+
20+
Train API
21+
---------
22+
23+
.. toctree::
24+
:maxdepth: 1
25+
26+
v2/run_logic.rst

0 commit comments

Comments
 (0)