预测引擎

预测引擎提供了存储预测模型 save_inference_model 和加载预测模型 load_inference_model 两个接口。

预测模型的存储格式

预测模型的存储格式有两种,由上述两个接口中的 model_filenameparams_filename 变量控制:

  • 参数保存到各个独立的文件,如设置 model_filenameNoneparams_filenameNone
  1. ls recognize_digits_conv.inference.model/*
  2. __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
  • 参数保存到同一个文件,如设置 modelfilenameNoneparamsfilename__params
  1. ls recognize_digits_conv.inference.model/*
  2. __model__ __params__

存储预测模型

  1. exe = fluid.Executor(fluid.CPUPlace())
  2. path = "./infer_model"
  3. fluid.io.save_inference_model(dirname=path, feeded_var_names=['img'],
  4. target_vars=[predict_var], executor=exe)

在这个示例中,fluid.io.saveinferencemodel 接口对默认的 fluid.Program 进行裁剪,只保留预测 predict_var 所需部分。裁剪后的 program 会保存在 ./infer_model/__model 下,参数会保存到 ./infer_model 下的各个独立文件。

加载预测模型

  1. exe = fluid.Executor(fluid.CPUPlace())
  2. path = "./infer_model"
  3. [inference_program, feed_target_names, fetch_targets] =
  4. fluid.io.load_inference_model(dirname=path, executor=exe)
  5. results = exe.run(inference_program,
  6. feed={feed_target_names[0]: tensor_img},
  7. fetch_list=fetch_targets)

在这个示例中,首先调用 fluid.io.load_inference_model 接口,获得预测的 program 、输入数据的 variable 名称和输出结果的 variable ;然后调用 executor 执行预测的 program 获得预测结果。

原文: http://paddlepaddle.org/documentation/docs/zh/1.3/api_guides/low_level/inference.html