save_inference_model¶
- paddle.static. save_inference_model ( path_prefix, feed_vars, fetch_vars, executor, **kwargs ) [源代码] ¶
将模型及其参数保存到指定的路径。例如,path_prefix="PATH/modelname"
,在调用 save_inference_model(path_prefix, feed_vars, fetch_vars, executor)
之后,你可以在 PATH
目录下找到两个文件,分别是 modelname.pdmodel
和 modelname.pdiparams
,前者表示序列化之后的模型文件,后者表示序列化之后的参数文件。
参数¶
path_prefix (str) – 要保存到的目录 + 模型名称(不包含后缀)。
feed_vars (Variable | list[Variable]) – 模型的所有输入变量。
fetch_vars (Variable | list[Variable]) – 模型的所有输出变量。
executor (Executor) – 用于保存预测模型的
executor
,详见 执行引擎 。kwargs - 支持的 key 包括 'program'和 'clip_extra'。(注意:kwargs 主要是用来做反向兼容的)。
program - 指定想要序列化的 program,默认使用 default_main_program。
clip_extra - 保存模型 program 时是否对每个算子附加额外的参数进行裁剪,默认值为 True(即默认会裁剪掉算子非标准定义的参数)。
返回¶
无。
代码示例¶
>>> import paddle
>>> paddle.enable_static()
>>> path_prefix = "./infer_model"
# User defined network, here a softmax regression example
>>> image = paddle.static.data(name='img', shape=[None, 28, 28], dtype='float32')
>>> label = paddle.static.data(name='label', shape=[None, 1], dtype='int64')
>>> predict = paddle.static.nn.fc(image, 10, activation='softmax')
>>> loss = paddle.nn.functional.cross_entropy(predict, label)
>>> exe = paddle.static.Executor(paddle.CPUPlace())
>>> exe.run(paddle.static.default_startup_program())
# Feed data and train process
# Save inference model. Note we don't save label and loss in this example
>>> paddle.static.save_inference_model(path_prefix, [image], [predict], exe)
# In this example, the save_inference_mode inference will prune the default
# main program according to the network's input node (img) and output node(predict).
# The pruned inference program is going to be saved in file "./infer_model.pdmodel"
# and parameters are going to be saved in file "./infer_model.pdiparams".