load_vars

paddle.fluid.io. load_vars ( executor, dirname, main_program=None, vars=None, predicate=None, filename=None ) [source]
Api_attr

Static Graph

This API loads variables from files by executor.

There are two ways to specify the variables to be loaded: the first way, set variables in a list and assign it to the vars; the second way, use the predicate function to select variables that make predicate(variable) == True. The first way has a higher priority.

The dirname is used to specify the folder where to load variables. If variables were saved in separate files in the folder dirname, set filename None. If all variables were saved in a single file, use filename to specify it.

Parameters
  • executor (Executor) – The executor to run for loading variables.

  • dirname (str) – The folder where to load the variables.

  • main_program (Program, optional) – The program whose variables will be loaded. If it is None, the default main program will be used automatically. Default: None

  • vars (list[Variable], optional) – The list that contains all variables to be loaded. Default: None

  • predicate (function, optional) – The function selects variables that make predicate(variable) == True. Default: None

  • filename (str, optional) – The file which saved all required variables. If variables were saved in separate files, set it to be None. Default: None

Returns

None

Raises

TypeError – If main_program is not an instance of Program nor None.

Examples

import paddle
import paddle.fluid as fluid

paddle.enable_static()
main_prog = fluid.Program()
startup_prog = fluid.Program()
with fluid.program_guard(main_prog, startup_prog):
    data = fluid.layers.data(name="img", shape=[64, 784], append_batch_size=False)
    w = fluid.layers.create_parameter(shape=[784, 200], dtype='float32', name='fc_w')
    b = fluid.layers.create_parameter(shape=[200], dtype='float32', name='fc_b')
    hidden_w = fluid.layers.matmul(x=data, y=w)
    hidden_b = fluid.layers.elementwise_add(hidden_w, b)
place = fluid.CPUPlace()
exe = fluid.Executor(place)
exe.run(startup_prog)

# The first usage: using `vars` to specify the variables.
path = "./my_paddle_vars"
var_list = [w, b]
fluid.io.save_vars(executor=exe, dirname=path, vars=var_list,
                   filename="vars_file")
fluid.io.load_vars(executor=exe, dirname=path, vars=var_list,
                   filename="vars_file")
# w and b will be loaded, and they are supposed to
# be saved in the same file named 'var_file' in the path "./my_paddle_vars".

# The second usage: using the `predicate` function to select variables
param_path = "./my_paddle_model"
def name_has_fc(var):
    res = "fc" in var.name
    return res
fluid.io.save_vars(executor=exe, dirname=param_path, main_program=main_prog,
                  vars=None, predicate=name_has_fc)
fluid.io.load_vars(executor=exe, dirname=param_path, main_program=main_prog,
                   vars=None, predicate=name_has_fc)
# Load All variables in the `main_program` whose name includes "fc".
# And all the variables are supposed to be saved in separate files.