save_vars

查看属性与别名

API属性:声明式编程(静态图)专用API

paddle.fluid.io.save_vars ( executor, dirname, main_program=None, vars=None, predicate=None, filename=None ) [源代码]

该接口将 Program 的变量保存到文件中。

通过 vars 指定需要保存的变量,或者通过 predicate 筛选需要保存的变量, varspredicate 不能同时为None。

参数

  • executor (Executor)- 运行的执行器,执行器的介绍请参考 模型保存与加载
  • dirname (str)- 保存变量的目录路径。
  • main_program (Program,可选)- 需要保存变量的 ProgramProgram 的介绍请参考 基础概念 。如果 main_program 为None,则使用默认的主程序。默认值为None。
  • vars (list [Variable],可选)- 通过该列表指定需要保存的变量。默认值为None。
  • predicate (function,可选)- 通过该函数筛选

    save_vars - 图1

    的变量进行保存。如果通过 vars 指定了需要保存的变量,则该参数无效。默认值为None。

  • filename (str,可选)- 保存所有变量的文件。如果设置为None,所有变量会按照变量名称单独保存成文件;如果设置为非None,所有变量会保存成一个文件名为该设置值的文件。默认值为None。

返回

抛出异常

  • TypeError - 如果main_program不是Program的实例,也不是None。

代码示例

  1. import paddle.fluid as fluid
  2. main_prog = fluid.Program()
  3. startup_prog = fluid.Program()
  4. with fluid.program_guard(main_prog, startup_prog):
  5. data = fluid.layers.data(name="img", shape=[64, 784], append_batch_size=False)
  6. w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32', name='fc_w')
  7. b = fluid.layers.create_parameter(shape=[200], dtype='float32', name='fc_b')
  8. hidden_w = fluid.layers.matmul(x=data, y=w)
  9. hidden_b = fluid.layers.elementwise_add(hidden_w, b)
  10. place = fluid.CPUPlace()
  11. exe = fluid.Executor(place)
  12. exe.run(startup_prog)
  13. # 示例一:用vars来指定变量。
  14. var_list = [w, b]
  15. path = "./my_paddle_vars"
  16. fluid.io.save_vars(executor=exe, dirname=path, vars=var_list,
  17. filename="vars_file")
  18. # w, b 将被保存,使用同一文件名“var_file”,保存在路径“./my_paddle_vars”下。
  19. # 示例二:通过predicate筛选变量。
  20. def name_has_fc(var):
  21. res = "fc" in var.name
  22. return res
  23. param_path = "./my_paddle_model"
  24. fluid.io.save_vars(executor=exe, dirname=param_path, main_program=main_prog, vars=None, predicate = name_has_fc)
  25. # 将main_program中名中包含“fc”的的所有变量保存。
  26. # 变量将分开保存。