预测引擎¶
预测引擎提供了存储预测模型 cn_api_fluid_io_save_inference_model 和加载预测模型 cn_api_fluid_io_load_inference_model 两个接口。
预测模型的存储格式¶
预测模型的存储格式有两种,由上述两个接口中的 model_filename
和 params_filename
变量控制:
参数保存到各个独立的文件,如设置
model_filename
为None
、params_filename
为None
ls recognize_digits_conv.inference.model/* __model__ conv2d_1.w_0 conv2d_2.w_0 fc_1.w_0 conv2d_1.b_0 conv2d_2.b_0 fc_1.b_0
参数保存到同一个文件,如设置
model_filename
为None
、params_filename
为__params__
ls recognize_digits_conv.inference.model/* __model__ __params__
存储预测模型¶
存储预测模型时,一般通过 fluid.io.save_inference_model
接口对默认的 fluid.Program
进行裁剪,只保留预测 predict_var
所需部分。 裁剪后的 program 会保存在指定路径 ./infer_model/__model__ 下,参数会保存到 ./infer_model 下的各个独立文件。
示例代码如下:
exe = fluid.Executor(fluid.CPUPlace())
path = "./infer_model"
fluid.io.save_inference_model(dirname=path, feeded_var_names=['img'],
target_vars=[predict_var], executor=exe)
加载预测模型¶
exe = fluid.Executor(fluid.CPUPlace())
path = "./infer_model"
[inference_program, feed_target_names, fetch_targets] =
fluid.io.load_inference_model(dirname=path, executor=exe)
results = exe.run(inference_program,
feed={feed_target_names[0]: tensor_img},
fetch_list=fetch_targets)
在这个示例中,首先调用 fluid.io.load_inference_model
接口,获得预测的 inference_program
、输入数据的名称 feed_target_names
和输出结果的 fetch_targets
; 然后调用 executor
执行预测的 inference_program
获得预测结果。