diff --git a/doc/paddle/api/alias_api_mapping b/doc/paddle/api/alias_api_mapping index 30943860d65396c71d9a0315fc21a1f9963da853..0da2989975f7c57e4f4a97a513173c4688a0f2a6 100644 --- a/doc/paddle/api/alias_api_mapping +++ b/doc/paddle/api/alias_api_mapping @@ -405,7 +405,7 @@ paddle.tensor.math.isnan paddle.isnan,paddle.tensor.isnan paddle.nn.functional.activation.hsigmoid paddle.nn.functional.hsigmoid paddle.nn.functional.loss.kl_div paddle.nn.functional.kl_div paddle.tensor.manipulation.expand paddle.expand,paddle.tensor.expand -paddle.fluid.dygraph.jit.SaveLoadConfig paddle.jit.SaveLoadConfig +paddle.fluid.dygraph.jit.SaveLoadConfig paddle.SaveLoadConfig paddle.nn.functional.common.dropout paddle.nn.functional.dropout paddle.nn.functional.common.linear paddle.nn.functional.linear paddle.nn.layer.activation.LogSoftmax paddle.nn.LogSoftmax,paddle.nn.layer.LogSoftmax diff --git a/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst b/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst index 39b18d7830eaafa66c6a99a770cf8e85b8fc32b5..f9e86e0108e5d982e1a9e58ad34921496ab922cb 100644 --- a/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst +++ b/doc/paddle/api/paddle/fluid/dygraph/checkpoint/load_dygraph_cn.rst @@ -1,27 +1,27 @@ .. _cn_api_fluid_dygraph_load_dygraph: -load_dygraph -------------------------------- +load +---- -.. py:function:: paddle.fluid.dygraph.load_dygraph(model_path) +.. py:function:: paddle.load(model_path, configs=None) :api_attr: 命令式编程模式(动态图) +该接口用于从磁盘中加载Layer和Optimizer的 ``state_dict`` ,该接口会同时加载 ``model_path + ".pdparams"`` 和 ``model_path + ".pdopt"`` 中的内容。 - -该接口尝试从磁盘中加载参数或优化器的 ``dict`` 。 - -该接口会同时加载 ``model_path + ".pdparams"`` 和 ``model_path + ".pdopt"`` 中的内容。 +.. note:: + 由于一些历史原因,如果从 ``paddle.io.save_inference_model`` 的存储结果中载入 ``state_dict`` ,动态图模式下参数的结构性变量名将无法被恢复。并且在将载入的 ``state_dict`` 配置到当前Layer中时,需要配置 ``Layer.set_state_dict`` 的参数 ``use_structured_name=False`` 。 参数: - - **model_path** (str) – 保存state_dict的文件前缀。该路径不应该包括后缀 ``.pdparams`` 或 ``.pdopt``。 + - **model_path** (str) – 保存state_dict的文件前缀。该路径不应该包括后缀 ``.pdparams`` 或 ``.pdopt``。 + - **configs** (SaveLoadConfig, 可选) - 用于指定额外配置选项的 :ref:`cn_api_fluid_dygraph_jit_SaveLoadConfig` 对象,这些选项主要是用于兼容 ``paddle.io.save_inference_model`` 存储模型的格式。默认为 ``None``。 -返回: 两个 ``dict`` ,即从文件中恢复的参数 ``dict`` 和优化器 ``dict`` +返回: 两个 ``dict`` ,即从文件中恢复的模型参数 ``dict`` 和优化器参数 ``dict``,如果只找到其中一个的存储文件,另一个返回None -- para_dict: 从文件中恢复的参数 ``dict`` -- opti_dict: 从文件中恢复的优化器 ``dict`` +- param_dict: 从文件中恢复的模型参数 ``dict`` +- opt_dict: 从文件中恢复的优化器参数 ``dict`` 返回类型: tuple(dict, dict) @@ -29,18 +29,24 @@ load_dygraph .. code-block:: python - import paddle.fluid as fluid + import paddle + + paddle.disable_static() + + emb = paddle.nn.Embedding([10, 10]) + + state_dict = emb.state_dict() + paddle.save(state_dict, "paddle_dy") - with fluid.dygraph.guard(): - emb = fluid.dygraph.Embedding([10, 10]) - state_dict = emb.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") - adam = fluid.optimizer.Adam( learning_rate = fluid.layers.noam_decay( 100, 10000) , - parameter_list = emb.parameters() ) - state_dict = adam.state_dict() - fluid.save_dygraph( state_dict, "paddle_dy") + scheduler = paddle.optimizer.lr_scheduler.NoamLR( + d_model=0.01, warmup_steps=100, verbose=True) + adam = paddle.optimizer.Adam( + learning_rate=scheduler, + parameters=emb.parameters()) + state_dict = adam.state_dict() + paddle.save(state_dict, "paddle_dy") - para_state_dict, opti_state_dict = fluid.load_dygraph( "paddle_dy") + para_state_dict, opti_state_dict = paddle.load("paddle_dy") diff --git a/doc/paddle/api/paddle/jit/SaveLoadConfig_cn.rst b/doc/paddle/api/paddle/jit/SaveLoadConfig_cn.rst index cbee1bab234be6f53f83061c52139093513d321b..ddbbd84d6b67c0a7466f4572cc72c354d9921c58 100644 --- a/doc/paddle/api/paddle/jit/SaveLoadConfig_cn.rst +++ b/doc/paddle/api/paddle/jit/SaveLoadConfig_cn.rst @@ -1,9 +1,9 @@ .. _cn_api_fluid_dygraph_jit_SaveLoadConfig: SaveLoadConfig -------------------------------- +-------------- -.. py:class:: paddle.fluid.dygraph.jit.SaveLoadConfig() +.. py:class:: paddle.SaveLoadConfig() 用于配置接口 :ref:`cn_api_fluid_dygraph_jit_save` 和 :ref:`cn_api_fluid_dygraph_jit_load` 存储载入 :ref:`cn_api_fluid_dygraph_TranslatedLayer` 时的附加选项。 @@ -271,3 +271,38 @@ SaveLoadConfig infer_net = fluid.dygraph.jit.load(model_path, configs=configs) x = fluid.dygraph.to_variable(np.random.random((4, 8)).astype('float32')) pred = infer_net(x) + + +.. py:attribute:: keep_name_table + +配置是否保留 ``paddle.load`` 载入结果中 ``structured_name`` 到真实的参数变量名的映射表。这个映射表是调用 ``paddle.save`` 时存储的,一般仅用于调试,移除此映射表不影响真实的训练和预测。默认情况下不会保留在 ``paddle.load`` 的结果中。默认值为False。 + +.. note:: + 该配置仅用于 ``paddle.load`` 方法。 + +**示例代码** + .. code-block:: python + + import paddle + + paddle.disable_static() + + linear = paddle.nn.Linear(5, 1) + + state_dict = linear.state_dict() + paddle.save(state_dict, "paddle_dy") + + configs = paddle.SaveLoadConfig() + configs.keep_name_table = True + para_state_dict, _ = paddle.load("paddle_dy", configs) + + print(para_state_dict) + # the name_table is 'StructuredToParameterName@@' + # {'bias': array([0.], dtype=float32), + # 'StructuredToParameterName@@': + # {'bias': u'linear_0.b_0', 'weight': u'linear_0.w_0'}, + # 'weight': array([[ 0.04230034], + # [-0.1222527 ], + # [ 0.7392676 ], + # [-0.8136974 ], + # [ 0.01211023]], dtype=float32)}