提交 db5f3295 编写于 作者: L Liufang Sang 提交者: whs

[PaddleSlim] save infer model for each epoch (#3570)

上级 4f7bf849
......@@ -44,7 +44,6 @@ step1: 设置gpu卡
export CUDA_VISIBLE_DEVICES=0
```
step2: 开始训练
```
使用PaddleDetection提供的配置文件在用8卡进行训练:
```
......
......@@ -239,6 +239,7 @@ def main():
eval_feed_list=test_feed,
eval_func={'map': eval_func},
eval_fetch_list=[eval_fetch_list[0]],
prune_infer_model=[["image", "im_size"],["multiclass_nms_0.tmp_0"]],
train_optimizer=None)
com.config(FLAGS.slim_file)
com.run()
......
......@@ -142,7 +142,7 @@ def main():
assert os.path.exists(FLAGS.model_path)
infer_prog, feed_names, fetch_targets = fluid.io.load_inference_model(
dirname=FLAGS.model_path, executor=exe,
model_filename='__model__',
model_filename='__model__.infer',
params_filename='__params__')
eval_keys = ['bbox', 'gt_box', 'gt_label', 'is_difficult']
......
......@@ -95,6 +95,7 @@ def compress(args):
eval_fetch_list=val_fetch_list,
teacher_programs=[],
train_optimizer=opt,
prune_infer_model=[[image.name], [out.name]],
distiller_optimizer=None)
com_pass.config(args.config_file)
com_pass.run()
......
......@@ -53,20 +53,32 @@ def eval(args):
val_program, feed_names, fetch_targets = fluid.io.load_inference_model(args.model_path,
exe,
model_filename="__model__",
model_filename="__model__.infer",
params_filename="__params__")
val_reader = paddle.batch(reader.val(), batch_size=128)
feeder = fluid.DataFeeder(place=place, feed_list=feed_names, program=val_program)
results=[]
for batch_id, data in enumerate(val_reader()):
# top1_acc, top5_acc
result = exe.run(val_program,
feed=feeder.feed(data),
image = [[d[0]] for d in data]
label = [[d[1]] for d in data]
feed_data = feeder.feed(image)
pred = exe.run(val_program,
feed=feed_data,
fetch_list=fetch_targets)
result = [np.mean(r) for r in result]
results.append(result)
pred = np.array(pred[0])
label = np.array(label)
sort_array = pred.argsort(axis=1)
top_1_pred = sort_array[:, -1:][:, ::-1]
top_1 = np.mean(label == top_1_pred)
top_5_pred = sort_array[:, -5:][:, ::-1]
acc_num = 0
for i in range(len(label)):
if label[i][0] in top_5_pred[i]:
acc_num += 1
top_5 = acc_num / len(label)
results.append([top_1, top_5])
result = np.mean(np.array(results), axis=0)
print("top1_acc/top5_acc= {}".format(result))
sys.stdout.flush()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册