From 184dc0b3af39cf7f7a5662f4f8ec4c2d81d024ec Mon Sep 17 00:00:00 2001 From: YuanRisheng Date: Tue, 9 Nov 2021 13:21:46 +0000 Subject: [PATCH 1/3] add faq of save/load --- docs/faq/save_cn.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/faq/save_cn.md b/docs/faq/save_cn.md index f54c7cb67f8..2ac4510d891 100644 --- a/docs/faq/save_cn.md +++ b/docs/faq/save_cn.md @@ -84,6 +84,46 @@ adam.set_state_dict(opti_state_dict) 2. 如果被保存的对象包含``numpy.ndarray``,尽量在``load``时设置``return_numpy = True``。 3. 对于``Layer``对象,只保存参数的值和名字,如果需要其他信息(例如``stop_gradient``),请将手将这些信息打包成`dict`等,一并保存。 +##### 问题:paddle 2.x 如何保存模型文件?如何保存paddle 1.x 中的 model 文件? ++ 答复: + + 1. 在paddle2.x可使用``paddle.jit.save/load``接口以及``paddle.static.save/load_inference_model``来保存成类似paddle1.x中的model文件和param文件。详情可参考: + - [paddle.jit.save/load](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/08_model_save_load_cn.html#dongtaitumoxing-canshubaocunzairu-xunliantuili) + - [paddle.static.save/load_inference_model](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/08_model_save_load_cn.html#jingtaitumoxing-canshubaocunzairu-tuilibushu) + 2. 如果想要在paddle2.x中读取paddle 1.x中的model文件,可参考: + - [兼容载入旧格式模型](https://www.paddlepaddle.org.cn/documentation/docs/zh/2.2rc/guides/01_paddle2.0_introduction/load_old_format_model.html#cn-guides-load-old-format-model) + + +##### 问题:paddle如何单独load存下来所有模型变量中某一个变量,然后修改变量中的值? ++ 答复: + + 1. 如果目的是修改存储变量的值,可以使用``paddle.save``保存下来所有变量,然后再使用``paddle.load``将所有变量载入后,查找目标变量进行修改,示例代码如下: + + ``` + import paddle + + layer = paddle.nn.Linear(3, 4) + path = 'example/model.pdparams' + paddle.save(layer.state_dict(), path) + layer_param = paddle.load(path) + # 修改fc_0.b_0的值 + layer_param["fc_0.b_0"] = 10 + ``` + + 2. 如果目的是单独访问某个变量,需要单独存储然后再单独读取,示例代码如下: + + ``` + import paddle + + layer = paddle.nn.Linear(3, 4) + path_w = 'example/weight.tensor' + path_b = 'example/bias.tensor' + paddle.save(layer.weight, path_w) + paddle.save(layer.bias, path_b) + tensor_bias = paddle.load(path_b) + tensor_bias[0] = 10 + ``` + 更多介绍请参考以下API文档: - [paddle.save](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/framework/io/save_cn.html) From 9701c4e1efbc53136bbe4971d76ec5df6e96b6ea Mon Sep 17 00:00:00 2001 From: YuanRisheng Date: Wed, 10 Nov 2021 02:50:17 +0000 Subject: [PATCH 2/3] fix ci-bugs for save/load faq --- docs/faq/save_cn.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/faq/save_cn.md b/docs/faq/save_cn.md index 2ac4510d891..a242c758878 100644 --- a/docs/faq/save_cn.md +++ b/docs/faq/save_cn.md @@ -99,30 +99,30 @@ adam.set_state_dict(opti_state_dict) 1. 如果目的是修改存储变量的值,可以使用``paddle.save``保存下来所有变量,然后再使用``paddle.load``将所有变量载入后,查找目标变量进行修改,示例代码如下: - ``` - import paddle +```python +import paddle - layer = paddle.nn.Linear(3, 4) - path = 'example/model.pdparams' - paddle.save(layer.state_dict(), path) - layer_param = paddle.load(path) - # 修改fc_0.b_0的值 - layer_param["fc_0.b_0"] = 10 - ``` +layer = paddle.nn.Linear(3, 4) +path = 'example/model.pdparams' +paddle.save(layer.state_dict(), path) +layer_param = paddle.load(path) +# 修改fc_0.b_0的值 +layer_param["fc_0.b_0"] = 10 +``` 2. 如果目的是单独访问某个变量,需要单独存储然后再单独读取,示例代码如下: - ``` - import paddle - - layer = paddle.nn.Linear(3, 4) - path_w = 'example/weight.tensor' - path_b = 'example/bias.tensor' - paddle.save(layer.weight, path_w) - paddle.save(layer.bias, path_b) - tensor_bias = paddle.load(path_b) - tensor_bias[0] = 10 - ``` +```python +import paddle + +layer = paddle.nn.Linear(3, 4) +path_w = 'example/weight.tensor' +path_b = 'example/bias.tensor' +paddle.save(layer.weight, path_w) +paddle.save(layer.bias, path_b) +tensor_bias = paddle.load(path_b) +tensor_bias[0] = 10 +``` 更多介绍请参考以下API文档: From 40930ca3e804c7781174cfe1f30929940a9ecb47 Mon Sep 17 00:00:00 2001 From: YuanRisheng Date: Wed, 10 Nov 2021 09:59:27 +0000 Subject: [PATCH 3/3] perfect save/load faq --- docs/faq/save_cn.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/faq/save_cn.md b/docs/faq/save_cn.md index a242c758878..3c6bd623856 100644 --- a/docs/faq/save_cn.md +++ b/docs/faq/save_cn.md @@ -87,7 +87,7 @@ adam.set_state_dict(opti_state_dict) ##### 问题:paddle 2.x 如何保存模型文件?如何保存paddle 1.x 中的 model 文件? + 答复: - 1. 在paddle2.x可使用``paddle.jit.save/load``接口以及``paddle.static.save/load_inference_model``来保存成类似paddle1.x中的model文件和param文件。详情可参考: + 1. 在paddle2.x可使用``paddle.jit.save``接口以及``paddle.static.save_inference_model``,通过指定``path``来保存成为``path.pdmodel``和``path.pdiparams``,可对应paddle1.x中使用``save_inference_model``指定dirname和params_filename生成``dirname/__model__``和``dirname/params文件``。paddle2.x保存模型文件详情可参考: - [paddle.jit.save/load](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/08_model_save_load_cn.html#dongtaitumoxing-canshubaocunzairu-xunliantuili) - [paddle.static.save/load_inference_model](https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/02_paddle2.0_develop/08_model_save_load_cn.html#jingtaitumoxing-canshubaocunzairu-tuilibushu) 2. 如果想要在paddle2.x中读取paddle 1.x中的model文件,可参考: