@@ -241,9 +241,11 @@ def create_multi_devices_program(program, loss_var_name, for_quant=False):
241
241
build_strategy .enable_inplace = True
242
242
if for_quant :
243
243
build_strategy .fuse_all_reduce_ops = False
244
+ else :
245
+ program = fluid .CompiledProgram (program )
244
246
exec_strategy = fluid .ExecutionStrategy ()
245
247
exec_strategy .num_iteration_per_drop_scope = 1
246
- compile_program = fluid . CompiledProgram ( program ) .with_data_parallel (
248
+ compile_program = program .with_data_parallel (
247
249
loss_name = loss_var_name ,
248
250
build_strategy = build_strategy ,
249
251
exec_strategy = exec_strategy )
@@ -254,7 +256,7 @@ def train_eval_det_run(config,
254
256
exe ,
255
257
train_info_dict ,
256
258
eval_info_dict ,
257
- is_pruning = False ):
259
+ is_slim = None ):
258
260
'''
259
261
main program of evaluation for detection
260
262
'''
@@ -313,14 +315,17 @@ def train_eval_det_run(config,
313
315
best_batch_id = train_batch_id
314
316
best_epoch = epoch
315
317
save_path = save_model_dir + "/best_accuracy"
316
- if is_pruning :
317
- import paddleslim as slim
318
- slim .prune .save_model (
319
- exe , train_info_dict ['train_program' ],
320
- save_path )
321
- else :
318
+ if is_slim is None :
322
319
save_model (train_info_dict ['train_program' ],
323
320
save_path )
321
+ else :
322
+ import paddleslim as slim
323
+ if is_slim == "prune" :
324
+ slim .prune .save_model (
325
+ exe , train_info_dict ['train_program' ],
326
+ save_path )
327
+ elif is_slim == "quant" :
328
+ save_model (eval_info_dict ['program' ], save_path )
324
329
strs = 'Test iter: {}, metrics:{}, best_hmean:{:.6f}, best_epoch:{}, best_batch_id:{}' .format (
325
330
train_batch_id , metrics , best_eval_hmean , best_epoch ,
326
331
best_batch_id )
@@ -331,24 +336,34 @@ def train_eval_det_run(config,
331
336
train_loader .reset ()
332
337
if epoch == 0 and save_epoch_step == 1 :
333
338
save_path = save_model_dir + "/iter_epoch_0"
334
- if is_pruning :
335
- import paddleslim as slim
336
- slim .prune .save_model (exe , train_info_dict ['train_program' ],
337
- save_path )
338
- else :
339
+ if is_slim is None :
339
340
save_model (train_info_dict ['train_program' ], save_path )
341
+ else :
342
+ import paddleslim as slim
343
+ if is_slim == "prune" :
344
+ slim .prune .save_model (exe , train_info_dict ['train_program' ],
345
+ save_path )
346
+ elif is_slim == "quant" :
347
+ save_model (eval_info_dict ['program' ], save_path )
340
348
if epoch > 0 and epoch % save_epoch_step == 0 :
341
349
save_path = save_model_dir + "/iter_epoch_%d" % (epoch )
342
- if is_pruning :
343
- import paddleslim as slim
344
- slim .prune .save_model (exe , train_info_dict ['train_program' ],
345
- save_path )
346
- else :
350
+ if is_slim is None :
347
351
save_model (train_info_dict ['train_program' ], save_path )
352
+ else :
353
+ import paddleslim as slim
354
+ if is_slim == "prune" :
355
+ slim .prune .save_model (exe , train_info_dict ['train_program' ],
356
+ save_path )
357
+ elif is_slim == "quant" :
358
+ save_model (eval_info_dict ['program' ], save_path )
348
359
return
349
360
350
361
351
- def train_eval_rec_run (config , exe , train_info_dict , eval_info_dict ):
362
+ def train_eval_rec_run (config ,
363
+ exe ,
364
+ train_info_dict ,
365
+ eval_info_dict ,
366
+ is_slim = None ):
352
367
'''
353
368
main program of evaluation for recognition
354
369
'''
@@ -428,7 +443,17 @@ def train_eval_rec_run(config, exe, train_info_dict, eval_info_dict):
428
443
best_batch_id = train_batch_id
429
444
best_epoch = epoch
430
445
save_path = save_model_dir + "/best_accuracy"
431
- save_model (train_info_dict ['train_program' ], save_path )
446
+ if is_slim is None :
447
+ save_model (train_info_dict ['train_program' ],
448
+ save_path )
449
+ else :
450
+ import paddleslim as slim
451
+ if is_slim == "prune" :
452
+ slim .prune .save_model (
453
+ exe , train_info_dict ['train_program' ],
454
+ save_path )
455
+ elif is_slim == "quant" :
456
+ save_model (eval_info_dict ['program' ], save_path )
432
457
strs = 'Test iter: {}, acc:{:.6f}, best_acc:{:.6f}, best_epoch:{}, best_batch_id:{}, eval_sample_num:{}' .format (
433
458
train_batch_id , eval_acc , best_eval_acc , best_epoch ,
434
459
best_batch_id , eval_sample_num )
@@ -439,14 +464,34 @@ def train_eval_rec_run(config, exe, train_info_dict, eval_info_dict):
439
464
train_loader .reset ()
440
465
if epoch == 0 and save_epoch_step == 1 :
441
466
save_path = save_model_dir + "/iter_epoch_0"
442
- save_model (train_info_dict ['train_program' ], save_path )
467
+ if is_slim is None :
468
+ save_model (train_info_dict ['train_program' ], save_path )
469
+ else :
470
+ import paddleslim as slim
471
+ if is_slim == "prune" :
472
+ slim .prune .save_model (exe , train_info_dict ['train_program' ],
473
+ save_path )
474
+ elif is_slim == "quant" :
475
+ save_model (eval_info_dict ['program' ], save_path )
443
476
if epoch > 0 and epoch % save_epoch_step == 0 :
444
477
save_path = save_model_dir + "/iter_epoch_%d" % (epoch )
445
- save_model (train_info_dict ['train_program' ], save_path )
478
+ if is_slim is None :
479
+ save_model (train_info_dict ['train_program' ], save_path )
480
+ else :
481
+ import paddleslim as slim
482
+ if is_slim == "prune" :
483
+ slim .prune .save_model (exe , train_info_dict ['train_program' ],
484
+ save_path )
485
+ elif is_slim == "quant" :
486
+ save_model (eval_info_dict ['program' ], save_path )
446
487
return
447
488
448
489
449
- def train_eval_cls_run (config , exe , train_info_dict , eval_info_dict ):
490
+ def train_eval_cls_run (config ,
491
+ exe ,
492
+ train_info_dict ,
493
+ eval_info_dict ,
494
+ is_slim = None ):
450
495
train_batch_id = 0
451
496
log_smooth_window = config ['Global' ]['log_smooth_window' ]
452
497
epoch_num = config ['Global' ]['epoch_num' ]
@@ -509,7 +554,17 @@ def train_eval_cls_run(config, exe, train_info_dict, eval_info_dict):
509
554
best_batch_id = train_batch_id
510
555
best_epoch = epoch
511
556
save_path = save_model_dir + "/best_accuracy"
512
- save_model (train_info_dict ['train_program' ], save_path )
557
+ if is_slim is None :
558
+ save_model (train_info_dict ['train_program' ],
559
+ save_path )
560
+ else :
561
+ import paddleslim as slim
562
+ if is_slim == "prune" :
563
+ slim .prune .save_model (
564
+ exe , train_info_dict ['train_program' ],
565
+ save_path )
566
+ elif is_slim == "quant" :
567
+ save_model (eval_info_dict ['program' ], save_path )
513
568
strs = 'Test iter: {}, acc:{:.6f}, best_acc:{:.6f}, best_epoch:{}, best_batch_id:{}, eval_sample_num:{}' .format (
514
569
train_batch_id , eval_acc , best_eval_acc , best_epoch ,
515
570
best_batch_id , eval_sample_num )
@@ -520,10 +575,26 @@ def train_eval_cls_run(config, exe, train_info_dict, eval_info_dict):
520
575
train_loader .reset ()
521
576
if epoch == 0 and save_epoch_step == 1 :
522
577
save_path = save_model_dir + "/iter_epoch_0"
523
- save_model (train_info_dict ['train_program' ], save_path )
578
+ if is_slim is None :
579
+ save_model (train_info_dict ['train_program' ], save_path )
580
+ else :
581
+ import paddleslim as slim
582
+ if is_slim == "prune" :
583
+ slim .prune .save_model (exe , train_info_dict ['train_program' ],
584
+ save_path )
585
+ elif is_slim == "quant" :
586
+ save_model (eval_info_dict ['program' ], save_path )
524
587
if epoch > 0 and epoch % save_epoch_step == 0 :
525
588
save_path = save_model_dir + "/iter_epoch_%d" % (epoch )
526
- save_model (train_info_dict ['train_program' ], save_path )
589
+ if is_slim is None :
590
+ save_model (train_info_dict ['train_program' ], save_path )
591
+ else :
592
+ import paddleslim as slim
593
+ if is_slim == "prune" :
594
+ slim .prune .save_model (exe , train_info_dict ['train_program' ],
595
+ save_path )
596
+ elif is_slim == "quant" :
597
+ save_model (eval_info_dict ['program' ], save_path )
527
598
return
528
599
529
600
0 commit comments