13
13
# limitations under the License.
14
14
15
15
import sys
16
- import paddle .trainer_config_helpers .attrs as attrs
17
- from paddle .trainer_config_helpers .poolings import MaxPooling
18
16
import paddle .v2 as paddle
19
17
20
18
@@ -51,16 +49,14 @@ def stacked_lstm_net(input_dim,
51
49
emb_dim: dimension of word embedding.
52
50
hid_dim: dimension of hidden layer.
53
51
stacked_num: number of stacked lstm-hidden layer.
54
- is_predict: is predicting or not.
55
- Some layers is not needed in network when predicting.
56
52
"""
57
53
assert stacked_num % 2 == 1
58
54
59
- layer_attr = attrs . ExtraLayerAttribute (drop_rate = 0.5 )
60
- fc_para_attr = attrs . ParameterAttribute (learning_rate = 1e-3 )
61
- lstm_para_attr = attrs . ParameterAttribute (initial_std = 0. , learning_rate = 1. )
55
+ layer_attr = paddle . attr . Extra (drop_rate = 0.5 )
56
+ fc_para_attr = paddle . attr . Param (learning_rate = 1e-3 )
57
+ lstm_para_attr = paddle . attr . Param (initial_std = 0. , learning_rate = 1. )
62
58
para_attr = [fc_para_attr , lstm_para_attr ]
63
- bias_attr = attrs . ParameterAttribute (initial_std = 0. , l2_rate = 0. )
59
+ bias_attr = paddle . attr . Param (initial_std = 0. , l2_rate = 0. )
64
60
relu = paddle .activation .Relu ()
65
61
linear = paddle .activation .Linear ()
66
62
@@ -90,8 +86,10 @@ def stacked_lstm_net(input_dim,
90
86
layer_attr = layer_attr )
91
87
inputs = [fc , lstm ]
92
88
93
- fc_last = paddle .layer .pooling (input = inputs [0 ], pooling_type = MaxPooling ())
94
- lstm_last = paddle .layer .pooling (input = inputs [1 ], pooling_type = MaxPooling ())
89
+ fc_last = paddle .layer .pooling (
90
+ input = inputs [0 ], pooling_type = paddle .pooling .Max ())
91
+ lstm_last = paddle .layer .pooling (
92
+ input = inputs [1 ], pooling_type = paddle .pooling .Max ())
95
93
output = paddle .layer .fc (input = [fc_last , lstm_last ],
96
94
size = class_dim ,
97
95
act = paddle .activation .Softmax (),
@@ -105,14 +103,23 @@ def stacked_lstm_net(input_dim,
105
103
106
104
if __name__ == '__main__' :
107
105
# init
108
- paddle .init (use_gpu = False , trainer_count = 4 )
106
+ paddle .init (use_gpu = False )
109
107
110
- # network config
108
+ #data
111
109
print 'load dictionary...'
112
110
word_dict = paddle .dataset .imdb .word_dict ()
113
111
dict_dim = len (word_dict )
114
112
class_dim = 2
113
+ train_reader = paddle .batch (
114
+ paddle .reader .shuffle (
115
+ lambda : paddle .dataset .imdb .train (word_dict ), buf_size = 1000 ),
116
+ batch_size = 100 )
117
+ test_reader = paddle .batch (
118
+ lambda : paddle .dataset .imdb .test (word_dict ), batch_size = 100 )
119
+
120
+ feeding = {'word' : 0 , 'label' : 1 }
115
121
122
+ # network config
116
123
# Please choose the way to build the network
117
124
# by uncommenting the corresponding line.
118
125
cost = convolution_net (dict_dim , class_dim = class_dim )
@@ -137,12 +144,7 @@ def event_handler(event):
137
144
sys .stdout .write ('.' )
138
145
sys .stdout .flush ()
139
146
if isinstance (event , paddle .event .EndPass ):
140
- result = trainer .test (
141
- reader = paddle .batch (
142
- lambda : paddle .dataset .imdb .test (word_dict ),
143
- batch_size = 128 ),
144
- feeding = {'word' : 0 ,
145
- 'label' : 1 })
147
+ result = trainer .test (reader = test_reader , feeding = feeding )
146
148
print "\n Test with Pass %d, %s" % (event .pass_id , result .metrics )
147
149
148
150
# create trainer
@@ -151,11 +153,7 @@ def event_handler(event):
151
153
update_equation = adam_optimizer )
152
154
153
155
trainer .train (
154
- reader = paddle .batch (
155
- paddle .reader .shuffle (
156
- lambda : paddle .dataset .imdb .train (word_dict ), buf_size = 1000 ),
157
- batch_size = 100 ),
156
+ reader = train_reader ,
158
157
event_handler = event_handler ,
159
- feeding = {'word' : 0 ,
160
- 'label' : 1 },
161
- num_passes = 10 )
158
+ feeding = feeding ,
159
+ num_passes = 2 )
0 commit comments