在保存模型时完善模型裁剪功能
Created by: mapingshuo
现在paddle的模型存储实现为:
def save_inference_model(dirname,
feeded_var_names,
target_vars,
executor,
main_program=None,
model_filename=None,
params_filename=None,
export_for_deployment=True,
program_only=False):
很多用户提出需求,希望完善模型裁剪功能,例如:https://github.com/PaddlePaddle/Paddle/issues/17021
save_inference_model支持对模型的裁剪,但是当设置feeded_var_names
不是原program的输入Variable
时,裁剪时会漏掉一些Operator
,导致 inference_program 跑不起来。例如在文本分类任务的bow net的训练过程中,当save_inference_model时设置feeded_var_names
为lookup_table
op的输出时,会发现inference_program中仍然有lookup_table
op(我们期望裁掉这一op)。
功能描述: 用户提供feeded_var_names与target_vars, 自动裁剪模型。