Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
FluidDoc
提交
46f91c1e
F
FluidDoc
项目概览
PaddlePaddle
/
FluidDoc
通知
7
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看板
未验证
提交
46f91c1e
编写于
6月 27, 2018
作者:
Y
yuyang18
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Follow comments
上级
5a1a26e0
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
44 addition
and
44 deletion
+44
-44
source/user_guides/howto/training/index.rst
source/user_guides/howto/training/index.rst
+3
-3
source/user_guides/howto/training/save_load_variables.rst
source/user_guides/howto/training/save_load_variables.rst
+20
-20
source/user_guides/howto/training/single_node.rst
source/user_guides/howto/training/single_node.rst
+15
-15
source/user_guides/howto/training/test_while_training.rst
source/user_guides/howto/training/test_while_training.rst
+6
-6
未找到文件。
source/user_guides/howto/training/index.rst
浏览文件 @
46f91c1e
############
######################
使用PaddlePaddle Fluid
训练神经网络
############
######################
############
训练神经网络
############
PaddlePaddle Fluid支持单机训练,和多节点训练。每种训练模式下,都支持多种训练方法。
...
...
source/user_guides/howto/training/save_load_variables.rst
浏览文件 @
46f91c1e
...
...
@@ -40,7 +40,7 @@
因此,根据需求的不同,我们提供了两套API来分别进行模型的参数和checkpoint的保存。
保存模型用于对新样本的预测
========================
========================
==
如果我们保存模型的目的是用于对新样本的预测,那么只保存模型参数就足够了。我们可以使用
:code:`fluid.io.save_params` 接口来进行模型参数的保存。
...
...
@@ -62,7 +62,7 @@
保存checkpoint用于将来恢复训练
===========================
===========================
===
在训练过程中,我们可能希望在一些节点上将当前的训练状态保存下来,
以便在将来需要的时候恢复训练环境继续进行训练。这一般被称作“checkpoint”。
...
...
@@ -101,7 +101,7 @@
与模型变量的保存相对应,我们提供了两套API来分别进行模型的参数和checkpoint的载入。
载入模型用于对新样本的预测
========================
========================
==
对于通过 :code:`fluid.io.save_params` 保存的模型,可以使用 :code:`fluid.io.load_params`
来进行载入。
...
...
@@ -133,7 +133,7 @@
载入checkpoint用于恢复训练
==========================
=
==========================
对于通过 :code:`fluid.io.save_checkpoint` 保存的模型,可以使用 :code:`fluid.io.load_checkpoint`
来进行载入。
...
...
source/user_guides/howto/training/single_node.rst
浏览文件 @
46f91c1e
...
...
@@ -6,10 +6,10 @@
########
要进行PaddlePaddle Fluid单机训练,需要先 :ref:`user_guide_prepare_data` 和
:ref:`user_guide_config_neural_network` 。当
:ref:`user_guide_config_neural_network` 完毕后,可以得到两个
:ref:`user_guide_config_neural_network` 。当
\
:ref:`user_guide_config_neural_network` 完毕后,可以得到两个
\
:ref:`api_fluid_Program`, :code:`startup_program` 和 :code:`main_program`。
默认情况下,可以使用 :ref:`api_fluid_default_startup_program` 与 :ref:`api_fluid_default_main_program` 获得全局的 :ref:`api_fluid_Program`。
默认情况下,可以使用 :ref:`api_fluid_default_startup_program` 与
\
:ref:`api_fluid_default_main_program` 获得全局的 :ref:`api_fluid_Program`。
例如:
...
...
@@ -34,7 +34,7 @@
# Here the fluid.default_startup_program() and fluid.default_main_program()
# has been constructed.
在上述模型配置执行完毕后, :code:`fluid.default_startup_program()` 与
在上述模型配置执行完毕后, :code:`fluid.default_startup_program()` 与
\
:code:`fluid.default_main_program()` 配置完毕了。
初始化参数
...
...
@@ -43,7 +43,7 @@
参数随机初始化
==============
用户配置完模型后,参数初始化操作会被写入到
用户配置完模型后,参数初始化操作会被写入到
\
:code:`fluid.default_startup_program()` 中。使用 :ref:`api_fluid_Executor` 运行
这一程序,即可在全局 :ref:`api_fluid_Scope` 中随机初始化参数。例如:
...
...
@@ -52,23 +52,23 @@
exe = fluid.Executor(fluid.CUDAPlace(0))
exe.run(program=fluid.default_startup_program())
值得注意的是: 如果使用多GPU训练,参数需要先在GPU0上初始化,再经由
值得注意的是: 如果使用多GPU训练,参数需要先在GPU0上初始化,再经由
\
:ref:`api_fluid_ParallelExecutor` 分发到多张显卡上。
载入预定义参数
==============
在神经网络训练过程中,经常会需要载入预定义模型,进而继续进行训练。
在神经网络训练过程中,经常会需要载入预定义模型,进而继续进行训练。
\
如何载入预定义参数,请参考 :ref:`user_guide_save_load_vars`。
单卡训练
########
执行单卡训练可以使用 :ref:`api_fluid_Executor` 中的 :code:`run()` 方法,运行训练
:ref:`api_fluid_Program` 即可。在运行的时候,用户可以通过 :code:`run(feed=...)`
参数传入数据;用户可以通过 :code:`run(fetch=...)` 获取持久的数据。例如:
执行单卡训练可以使用 :ref:`api_fluid_Executor` 中的 :code:`run()` 方法,运行训练
\
:ref:`api_fluid_Program` 即可。在运行的时候,用户可以通过 :code:`run(feed=...)`
\
参数传入数据;用户可以通过 :code:`run(fetch=...)` 获取持久的数据。例如:
\
.. code-blocks:: python
...
...
@@ -82,9 +82,9 @@
这里有几点注意事项:
1. feed的数据格式,请参考文章 :ref:`user_guide_feed_data_to_executor`。
2. :code:`Executor.run` 的返回值是 :code:`fetch_list=[...]` 的variable值。被fetch
的Variable必须是persistable的。 :code:`fetch_list` 可以传入Variable的列表,
也可以传入Varialbe的名字列表。当只Fetch一个对象时,返回值是一个元素。否则,
2. :code:`Executor.run` 的返回值是 :code:`fetch_list=[...]` 的variable值。被fetch
\
的Variable必须是persistable的。 :code:`fetch_list` 可以传入Variable的列表,
\
也可以传入Varialbe的名字列表。当只Fetch一个对象时,返回值是一个元素。否则,
\
返回一个列表。
3. 如果需要取回的数据包含序列信息,可以设置
:code:`exe.run(return_numpy=False, ...)` 直接返回 :ref:`api_guide_lod_tensor`
...
...
@@ -106,8 +106,8 @@
1. :code:`ParallelExecutor` 的构造函数需要指明要执行的 :ref:`api_fluid_Program` ,
并在执行过程中不能修改。
2. :code:`ParallelExecutor` 需要明确指定是否使用 CUDA 显卡进行训练。在显卡训练
模式下会占用全部显卡。用户可以配置 `CUDA_VISIBLE_DEVICES <http://www.acceleware.com/blog/cudavisibledevices-masking-gpus>`_ 来修改占用
2. :code:`ParallelExecutor` 需要明确指定是否使用 CUDA 显卡进行训练。在显卡训练
\
模式下会占用全部显卡。用户可以配置 `CUDA_VISIBLE_DEVICES <http://www.acceleware.com/blog/cudavisibledevices-masking-gpus>`_ 来修改占用
\
的显卡。
进阶使用
...
...
source/user_guides/howto/training/test_while_training.rst
浏览文件 @
46f91c1e
...
...
@@ -39,20 +39,20 @@
adam = fluid.optimizer.Adam(learning_rate=0.001)
adam.minimize(loss)
在使用 :code:`Optimizer` 之前,将 :code:`fluid.default_main_program()` 复制
成一个 :code:`test_program` 。之后使用测试数据运行 :code:`test_program`,
在使用 :code:`Optimizer` 之前,将 :code:`fluid.default_main_program()` 复制
\
成一个 :code:`test_program` 。之后使用测试数据运行 :code:`test_program`,
\
就可以做到运行测试程序,而不影响训练结果。
分别配置训练 :ref:`api_fluid_Program` 和测试 :ref:`api_fluid_Program`
=====================================================================
如果训练程序和测试程序相差较大时,用户也可以完全通过定义两个不同的
:ref:`api_fluid_Program`,分别进行训练和测试。在PaddlePaddle Fluid中,
所有的参数都有名字。如果两个不同的操作,甚至两个不同的网络使用了同样名字的参数,
:ref:`api_fluid_Program`,分别进行训练和测试。在PaddlePaddle Fluid中,
\
所有的参数都有名字。如果两个不同的操作,甚至两个不同的网络使用了同样名字的参数,
\
那么他们的值和内存空间都是共享的。
PaddlePaddle Fluid中使用 :code:`fluid.unique_name` 包来随机初始化用户未定义的
参数名称。通过 :code:`fluid.unique_name.guard` 可以确保多次调用某函数
PaddlePaddle Fluid中使用 :code:`fluid.unique_name` 包来随机初始化用户未定义的
\
参数名称。通过 :code:`fluid.unique_name.guard` 可以确保多次调用某函数
\
参数初始化的名称一致。
例如:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录