Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
da75b1a1
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
5
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
23
列表
看板
标记
里程碑
合并请求
111
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
FluidDoc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
23
Issue
23
列表
看板
标记
里程碑
合并请求
111
合并请求
111
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
da75b1a1
编写于
3月 15, 2019
作者:
H
Hao Wang
提交者:
Cheerego
3月 15, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
improve save_load_variables cn (#689)
* improve save_load_variables * Update save_load_variables.rst
上级
6b8cd1f2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
15 deletion
+19
-15
doc/fluid/user_guides/howto/training/save_load_variables.rst
doc/fluid/user_guides/howto/training/save_load_variables.rst
+19
-15
未找到文件。
doc/fluid/user_guides/howto/training/save_load_variables.rst
浏览文件 @
da75b1a1
...
@@ -7,14 +7,14 @@
...
@@ -7,14 +7,14 @@
模型变量分类
模型变量分类
############
############
在PaddlePaddle Fluid中,所有的模型变量都用 :code:`fluid.framework.Variable()` 作为基类
进行表示
。
在PaddlePaddle Fluid中,所有的模型变量都用 :code:`fluid.framework.Variable()` 作为基类。
在该基类之下,模型变量主要可以分为以下几种类别:
在该基类之下,模型变量主要可以分为以下几种类别:
1. 模型参数
1. 模型参数
模型参数是深度学习模型中被训练和学习的变量,在训练过程中,训练框架根据反向传播算法计算出每一个模型参数当前的梯度,
模型参数是深度学习模型中被训练和学习的变量,在训练过程中,训练框架根据反向传播
(backpropagation)
算法计算出每一个模型参数当前的梯度,
并用优化器根据梯度对参数进行更新。模型的训练过程本质上可以看做是模型参数不断迭代更新的过程。
并用优化器
(optimizer)
根据梯度对参数进行更新。模型的训练过程本质上可以看做是模型参数不断迭代更新的过程。
在PaddlePaddle Fluid中,模型参数用 :code:`fluid.framework.Parameter` 来表示,
在PaddlePaddle Fluid中,模型参数用 :code:`fluid.framework.Parameter` 来表示,
这是一个 :code:`fluid.framework.Variable()` 的派生类,除了
:code:`fluid.framework.Variable()` 具有
的各项性质以外,
这是一个 :code:`fluid.framework.Variable()` 的派生类,除了
具有 :code:`fluid.framework.Variable()`
的各项性质以外,
:code:`fluid.framework.Parameter` 还可以配置自身的初始化方法、更新率等属性。
:code:`fluid.framework.Parameter` 还可以配置自身的初始化方法、更新率等属性。
2. 长期变量
2. 长期变量
...
@@ -33,7 +33,7 @@
...
@@ -33,7 +33,7 @@
################
################
根据用途的不同,我们需要保存的模型变量也是不同的。例如,如果我们只是想保存模型用来进行以后的预测,
根据用途的不同,我们需要保存的模型变量也是不同的。例如,如果我们只是想保存模型用来进行以后的预测,
那么只保存模型参数就够用了。但如果我们需要保存一个checkpoint以备将来恢复训练,
那么只保存模型参数就够用了。但如果我们需要保存一个checkpoint
(检查点,类似于存档,存有复现目前模型的必要信息)
以备将来恢复训练,
那么我们应该将各种长期变量都保存下来,甚至还需要记录一下当前的epoch和step的id。
那么我们应该将各种长期变量都保存下来,甚至还需要记录一下当前的epoch和step的id。
因为一些模型变量虽然不是参数,但对于模型的训练依然必不可少。
因为一些模型变量虽然不是参数,但对于模型的训练依然必不可少。
...
@@ -63,12 +63,13 @@
...
@@ -63,12 +63,13 @@
如何载入模型变量
如何载入模型变量
################
################
与模型变量的保存相对应,我们提供了两套API来分别载入模型的参数和载入模型的长期变量。
与模型变量的保存相对应,我们提供了两套API来分别载入模型的参数和载入模型的长期变量,分别为保存、加载模型参数的 ``save_params()`` 、 ``load_params()`` 和
保存、加载长期变量的 ``save_persistables`` 、 ``load_persistables`` 。
载入模型用于对新样本的预测
载入模型用于对新样本的预测
==========================
==========================
对于通过 :code:`fluid.io.save_params` 保存的模型,可以使用 :code:`fluid.io.load_params`
对于通过 :code:`fluid.io.save_params` 保存的模型,可以使用 :code:`fluid.io.load_params`
来进行载入。
来进行载入。
例如:
例如:
...
@@ -98,18 +99,20 @@
...
@@ -98,18 +99,20 @@
预测所用的模型与参数的保存:
预测模型的保存和加载
##################
##############################
预测引擎提供了存储预测模型 :code:`fluid.io.save_inference_model` 和加载预测模型 :code:`fluid.io.load_inference_model` 两个接口。
预测引擎提供了存储预测模型 :code:`fluid.io.save_inference_model` 和加载预测模型 :code:`fluid.io.load_inference_model` 两个接口。
- :code:`fluid.io.save_inference_model`:请参考 :ref:`api_guide_inference`。
- :code:`fluid.io.save_inference_model`:请参考 :ref:`api_guide_inference`。
-
:code:`fluid.io.load_inference_model`:请参考 :ref:`api_guide_inference`。
- :code:`fluid.io.load_inference_model`:请参考 :ref:`api_guide_inference`。
增量训练
增量训练
############
############
增量训练指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分以前已经学习到的知识。因此增量学习涉及到两点:在上一次训练结束的时候保存需要持久化的参数, 在下一次训练开始的时候加载上一次保存的持久化参数。 因此增量训练涉及到如下几个API:
增量训练指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分以前已经学习到的知识。因此增量学习涉及到两点:在上一次训练结束的时候保存需要的长期变量, 在下一次训练开始的时候加载上一次保存的这些长期变量。 因此增量训练涉及到如下几个API:
:code:`fluid.io.save_persistables`、:code:`fluid.io.load_persistables` 。
:code:`fluid.io.save_persistables`、:code:`fluid.io.load_persistables` 。
单机增量训练
单机增量训练
...
@@ -152,14 +155,15 @@
...
@@ -152,14 +155,15 @@
多机增量(不带分布式大规模稀疏矩阵)训练的一般步骤为
:
多机增量(不带分布式大规模稀疏矩阵)训练的一般步骤为
==========================
==========================
多机增量训练和单机增量训练有若干不同点:
多机增量训练和单机增量训练有若干不同点:
1. 在训练的最后调用 :code:`fluid.io.save_persistables` 保存
持久性参数时,不必要所有的trainer都调用这个方法,一般0号trainer来保存
。
1. 在训练的最后调用 :code:`fluid.io.save_persistables` 保存
长期变量时,不必要所有的trainer都调用这个方法来保存,一般0号trainer来保存即可
。
2. 多机增量训练的参数加载在PServer端,trainer端不用加载参数。在PServer全部启动后,trainer会从PServer端同步参数。
2. 多机增量训练的参数加载在PServer端,trainer端不用加载参数。在PServer全部启动后,trainer会从PServer端同步参数。
多机增量(不
启用
分布式大规模稀疏矩阵)训练的一般步骤为:
多机增量(不
带
分布式大规模稀疏矩阵)训练的一般步骤为:
1. 0号trainer在训练的最后调用 :code:`fluid.io.save_persistables` 保存持久性参数到指定的 :code:`path` 下。
1. 0号trainer在训练的最后调用 :code:`fluid.io.save_persistables` 保存持久性参数到指定的 :code:`path` 下。
2. 通过HDFS等方式将0号trainer保存下来的所有的参数共享给所有的PServer(每个PServer都需要有完整的参数)。
2. 通过HDFS等方式将0号trainer保存下来的所有的参数共享给所有的PServer(每个PServer都需要有完整的参数)。
...
@@ -186,7 +190,7 @@
...
@@ -186,7 +190,7 @@
hadoop fs -mkdir /remote/$path
hadoop fs -mkdir /remote/$path
hadoop fs -put $path /remote/$path
hadoop fs -put $path /remote/$path
上面的例子中,0号train通过调用 :code:`fluid.io.save_persistables` 函数,PaddlePaddle Fluid会从默认
上面的例子中,0号train
er
通过调用 :code:`fluid.io.save_persistables` 函数,PaddlePaddle Fluid会从默认
:code:`fluid.Program` 也就是 :code:`prog` 的所有模型变量中找出长期变量,并将他们保存到指定的 :code:`path` 目录下。然后通过调用第三方的文件系统(如HDFS)将存储的模型进行上传到所有PServer都可访问的位置。
:code:`fluid.Program` 也就是 :code:`prog` 的所有模型变量中找出长期变量,并将他们保存到指定的 :code:`path` 目录下。然后通过调用第三方的文件系统(如HDFS)将存储的模型进行上传到所有PServer都可访问的位置。
对于训练过程中待载入参数的PServer, 例如:
对于训练过程中待载入参数的PServer, 例如:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录