@@ -174,6 +174,9 @@ def conv_bn_layer(self,
174
174
padding = (filter_size - 1 ) / 2 ,
175
175
groups = groups ,
176
176
act = None ,
177
+ # avoid pserver CPU init differs from GPU
178
+ param_attr = fluid .ParamAttr (
179
+ initializer = fluid .initializer .Constant ()),
177
180
bias_attr = False )
178
181
return fluid .layers .batch_norm (input = conv , act = act )
179
182
@@ -194,10 +197,8 @@ def squeeze_excitation(self, input, num_channels, reduction_ratio):
194
197
195
198
def get_model (batch_size ):
196
199
# Input data
197
- image = fluid .layers .fill_constant (
198
- shape = [batch_size , 3 , 224 , 224 ], dtype = 'float32' , value = 0.0 )
199
- label = fluid .layers .fill_constant (
200
- shape = [batch_size , 1 ], dtype = 'int64' , value = 0.0 )
200
+ image = fluid .layers .data (name = "data" , shape = [3 , 224 , 224 ], dtype = 'float32' )
201
+ label = fluid .layers .data (name = "int64" , shape = [1 ], dtype = 'int64' )
201
202
202
203
# Train program
203
204
model = SE_ResNeXt (layers = 50 )
@@ -222,8 +223,10 @@ def get_model(batch_size):
222
223
lr = [base_lr * (0.1 ** i ) for i in range (len (bd ) + 1 )]
223
224
224
225
optimizer = fluid .optimizer .Momentum (
225
- learning_rate = fluid .layers .piecewise_decay (
226
- boundaries = bd , values = lr ),
226
+ # FIXME(typhoonzero): add back LR decay once ParallelExecutor fixed.
227
+ #learning_rate=fluid.layers.piecewise_decay(
228
+ # boundaries=bd, values=lr),
229
+ learning_rate = base_lr ,
227
230
momentum = 0.9 ,
228
231
regularization = fluid .regularizer .L2Decay (1e-4 ))
229
232
optimizer .minimize (avg_cost )
@@ -232,7 +235,7 @@ def get_model(batch_size):
232
235
train_reader = paddle .batch (
233
236
paddle .dataset .flowers .train (), batch_size = batch_size )
234
237
test_reader = paddle .batch (
235
- paddle .dataset .flowers .test (), batch_size = batch_size )
238
+ paddle .dataset .flowers .test (use_xmap = False ), batch_size = batch_size )
236
239
237
240
return test_program , avg_cost , train_reader , test_reader , acc_top1 , out
238
241
@@ -256,7 +259,6 @@ def run_pserver(self, pserver_endpoints, trainers, current_endpoint,
256
259
trainers )
257
260
pserver_prog = t .get_pserver_program (current_endpoint )
258
261
startup_prog = t .get_startup_program (current_endpoint , pserver_prog )
259
-
260
262
place = fluid .CPUPlace ()
261
263
exe = fluid .Executor (place )
262
264
exe .run (startup_prog )
@@ -302,12 +304,19 @@ def run_trainer(self, place, endpoints, trainer_id, trainers, is_dist=True):
302
304
]
303
305
304
306
feeder = fluid .DataFeeder (feed_var_list , place )
305
- reader_generator = train_reader ()
306
- first_loss , = exe .run (fetch_list = [avg_cost .name ])
307
+ reader_generator = test_reader ()
308
+
309
+ data = next (reader_generator )
310
+ first_loss , = exe .run (fetch_list = [avg_cost .name ],
311
+ feed = feeder .feed (data ))
307
312
print (first_loss )
313
+
308
314
for i in xrange (5 ):
309
- loss , = exe .run (fetch_list = [avg_cost .name ])
310
- last_loss , = exe .run (fetch_list = [avg_cost .name ])
315
+ data = next (reader_generator )
316
+ loss , = exe .run (fetch_list = [avg_cost .name ], feed = feeder .feed (data ))
317
+
318
+ data = next (reader_generator )
319
+ last_loss , = exe .run (fetch_list = [avg_cost .name ], feed = feeder .feed (data ))
311
320
print (last_loss )
312
321
313
322
0 commit comments