提交 77c85d2e 编写于 作者: T Tink_Y 提交者: Cheerego

update api guides for cn (#462)

上级 304405fb
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
提高CPU使用率主要依赖 :code:`ParallelExecutor`,可以充分利用多个CPU的计算能力来加速计算。 提高CPU使用率主要依赖 :code:`ParallelExecutor`,可以充分利用多个CPU的计算能力来加速计算。
API详细使用方法参考 :ref:`api_fluid_ParallelExecutor` ,简单实例用法: API详细使用方法参考 :ref:`cn_api_fluid_ParallelExecutor` ,简单实例用法:
.. code-block:: python .. code-block:: python
...@@ -46,7 +46,7 @@ API详细使用方法参考 :ref:`api_fluid_ParallelExecutor` ,简单实例用 ...@@ -46,7 +46,7 @@ API详细使用方法参考 :ref:`api_fluid_ParallelExecutor` ,简单实例用
提高通信速度 提高通信速度
========== ==========
要减少通信数据量,提高通信速度,主要是使用稀疏更新 ,目前支持 `稀疏更新 <../distributed/sparse_update.html>`_ 的主要是 :ref:`api_fluid_layers_embedding` 。 要减少通信数据量,提高通信速度,主要是使用稀疏更新 ,目前支持 `稀疏更新 <../distributed/sparse_update.html>`_ 的主要是 :ref:`cn_api_fluid_layers_embedding` 。
.. code-block:: python .. code-block:: python
......
...@@ -7,14 +7,14 @@ ...@@ -7,14 +7,14 @@
:code:`Executor` 即 :code:`执行器` 。PaddlePaddle Fluid中有两种执行器可以选择。 :code:`Executor` 即 :code:`执行器` 。PaddlePaddle Fluid中有两种执行器可以选择。
:code:`Executor` 实现了一个简易的执行器,所有Operator会被顺序执行。用户可以使用 :code:`Executor` 实现了一个简易的执行器,所有Operator会被顺序执行。用户可以使用
Python脚本驱动 :code:`Executor` 执行。默认情况下 :code:`Executor` 是单线程的,如果 Python脚本驱动 :code:`Executor` 执行。默认情况下 :code:`Executor` 是单线程的,如果
想使用数据并行,请参考另一个执行器, :ref:`api_guide_parallel_executor` 。 想使用数据并行,请参考另一个执行器, :ref:`cn_api_guide_parallel_executor` 。
:code:`Executor` 的代码逻辑非常简单。建议用户在调试过程中,先使用 :code:`Executor` 的代码逻辑非常简单。建议用户在调试过程中,先使用
:code:`Executor` 跑通模型,再切换到多设备计算,甚至多机计算。 :code:`Executor` 跑通模型,再切换到多设备计算,甚至多机计算。
:code:`Executor` 在构造的时候接受一个 :code:`Place`, 它们可以是 :ref:`api_fluid_CPUPlace` :code:`Executor` 在构造的时候接受一个 :code:`Place`, 它们可以是 :ref:`cn_api_fluid_CPUPlace`
或 :ref:`api_fluid_CUDAPlace` 。 :code:`Executor` 在执行的时候可以选择执行的 或 :ref:`cn_api_fluid_CUDAPlace` 。 :code:`Executor` 在执行的时候可以选择执行的
:ref:`api_guide_low_level_program` 。 :ref:`cn_api_guide_low_level_program` 。
简单的使用方法,请参考 `quick_start_fit_a_line <http://paddlepaddle.org/documentation/docs/zh/1.1/beginners_guide/quick_start/fit_a_line/README.cn.html>`_ , API Reference 请参考 简单的使用方法,请参考 `quick_start_fit_a_line <http://paddlepaddle.org/documentation/docs/zh/1.1/beginners_guide/quick_start/fit_a_line/README.cn.html>`_ , API Reference 请参考
:ref:`api_fluid_Executor` 。 :ref:`cn_api_fluid_Executor` 。
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
预测引擎 预测引擎
######### #########
预测引擎提供了存储预测模型 :ref:`api_fluid_io_save_inference_model` 和加载预测模型 :ref:`api_fluid_io_load_inference_model` 两个接口。 预测引擎提供了存储预测模型 :ref:`cn_api_fluid_io_save_inference_model` 和加载预测模型 :ref:`cn_api_fluid_io_load_inference_model` 两个接口。
预测模型的存储格式 预测模型的存储格式
================= =================
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
PaddlePaddle Fluid 对大部分的激活函数进行了支持,其中有: PaddlePaddle Fluid 对大部分的激活函数进行了支持,其中有:
:ref:`api_fluid_layers_relu`, :ref:`api_fluid_layers_tanh`, :ref:`api_fluid_layers_sigmoid`, :ref:`api_fluid_layers_elu`, :ref:`api_fluid_layers_relu6`, :ref:`api_fluid_layers_pow`, :ref:`api_fluid_layers_stanh`, :ref:`api_fluid_layers_hard_sigmoid`, :ref:`api_fluid_layers_swish`, :ref:`api_fluid_layers_prelu`, :ref:`api_fluid_layers_brelu`, :ref:`api_fluid_layers_leaky_relu`, :ref:`api_fluid_layers_soft_relu`, :ref:`api_fluid_layers_thresholded_relu`, :ref:`api_fluid_layers_maxout`, :ref:`api_fluid_layers_logsigmoid`, :ref:`api_fluid_layers_hard_shrink`, :ref:`api_fluid_layers_softsign`, :ref:`api_fluid_layers_softplus`, :ref:`api_fluid_layers_tanh_shrink`, :ref:`api_fluid_layers_softshrink`, :ref:`api_fluid_layers_exp`。 :ref:`cn_api_fluid_layers_relu`, :ref:`cn_api_fluid_layers_tanh`, :ref:`cn_api_fluid_layers_sigmoid`, :ref:`cn_api_fluid_layers_elu`, :ref:`cn_api_fluid_layers_relu6`, :ref:`cn_api_fluid_layers_pow`, :ref:`cn_api_fluid_layers_stanh`, :ref:`cn_api_fluid_layers_hard_sigmoid`, :ref:`cn_api_fluid_layers_swish`, :ref:`cn_api_fluid_layers_prelu`, :ref:`cn_api_fluid_layers_brelu`, :ref:`cn_api_fluid_layers_leaky_relu`, :ref:`cn_api_fluid_layers_soft_relu`, :ref:`cn_api_fluid_layers_thresholded_relu`, :ref:`cn_api_fluid_layers_maxout`, :ref:`cn_api_fluid_layers_logsigmoid`, :ref:`cn_api_fluid_layers_hard_shrink`, :ref:`cn_api_fluid_layers_softsign`, :ref:`cn_api_fluid_layers_softplus`, :ref:`cn_api_fluid_layers_tanh_shrink`, :ref:`cn_api_fluid_layers_softshrink`, :ref:`cn_api_fluid_layers_exp`。
**Fluid提供了两种使用激活函数的方式:** **Fluid提供了两种使用激活函数的方式:**
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
IfElse IfElse
====== ======
条件分支,允许对同一个batch的输入,根据给定的条件,分别选择 :code:`true_block` 或 :code:`false_block` 中的逻辑进行执行,执行完成之后再将两个分支的输出合并为同一个输出。通常,条件表达式可由 :ref:`api_fluid_layers_less_than`, :ref:`api_fluid_layers_equal` 等逻辑比较 API 产生。 条件分支,允许对同一个batch的输入,根据给定的条件,分别选择 :code:`true_block` 或 :code:`false_block` 中的逻辑进行执行,执行完成之后再将两个分支的输出合并为同一个输出。通常,条件表达式可由 :ref:`cn_api_fluid_layers_less_than`, :ref:`cn_api_fluid_layers_equal` 等逻辑比较 API 产生。
请参考 :ref:`api_fluid_layers_IfElse` 请参考 :ref:`cn_api_fluid_layers_IfElse`
Switch Switch
...@@ -23,31 +23,31 @@ Switch ...@@ -23,31 +23,31 @@ Switch
* 依次检查逐个case,选择第一个满足条件的case执行,完成执行后即退出所属的block; * 依次检查逐个case,选择第一个满足条件的case执行,完成执行后即退出所属的block;
* 如果所有case均不满足条件,会选择默认的case进行执行。 * 如果所有case均不满足条件,会选择默认的case进行执行。
请参考 :ref:`api_fluid_layers_Switch` 请参考 :ref:`cn_api_fluid_layers_Switch`
While While
===== =====
While 循环,当条件判断为真时,循环执行 :code:`While` 控制流所属 :code:`block` 内的逻辑,条件判断为假时退出循环。与之相关的API有 While 循环,当条件判断为真时,循环执行 :code:`While` 控制流所属 :code:`block` 内的逻辑,条件判断为假时退出循环。与之相关的API有
* :ref:`api_fluid_layers_increment` :累加API,通常用于对循环次数进行计数; * :ref:`cn_api_fluid_layers_increment` :累加API,通常用于对循环次数进行计数;
* :ref:`api_fluid_layers_array_read` :从 :code:`LOD_TENSOR_ARRAY` 中指定的位置读入Variable,进行计算; * :ref:`cn_api_fluid_layers_array_read` :从 :code:`LOD_TENSOR_ARRAY` 中指定的位置读入Variable,进行计算;
* :ref:`api_fluid_layers_array_write` :将 Variable 写回到 :code:`LOD_TENSOR_ARRAY` 指定的位置,存储计算结果。 * :ref:`cn_api_fluid_layers_array_write` :将 Variable 写回到 :code:`LOD_TENSOR_ARRAY` 指定的位置,存储计算结果。
请参考 :ref:`api_fluid_layers_While` 请参考 :ref:`cn_api_fluid_layers_While`
DynamicRNN DynamicRNN
========== ==========
即动态RNN,可处理一个batch不等长的序列数据,其接受 :code:`lod_level=1` 的 Variable 作为输入,在 :code:`DynamicRNN` 的 :code:`block` 内,用户需自定义RNN的单步计算逻辑。在每一个时间步,用户可将需记忆的状态写入到 :code:`DynamicRNN` 的 :code:`memory` 中,并将需要的输出写出到其 :code:`output` 中。 即动态RNN,可处理一个batch不等长的序列数据,其接受 :code:`lod_level=1` 的 Variable 作为输入,在 :code:`DynamicRNN` 的 :code:`block` 内,用户需自定义RNN的单步计算逻辑。在每一个时间步,用户可将需记忆的状态写入到 :code:`DynamicRNN` 的 :code:`memory` 中,并将需要的输出写出到其 :code:`output` 中。
:ref:`api_fluid_layers_sequence_last_step` 可获取 :code:`DynamicRNN` 最后一个时间步的输出。 :ref:`cn_api_fluid_layers_sequence_last_step` 可获取 :code:`DynamicRNN` 最后一个时间步的输出。
请参考 :ref:`api_fluid_layers_DynamicRNN` 请参考 :ref:`cn_api_fluid_layers_DynamicRNN`
StaticRNN StaticRNN
========= =========
即静态RNN,只能处理固定长度的序列数据,接受 :code:`lod_level=0` 的 Variable 作为输入。与 :code:`DynamicRNN` 类似,在RNN的每单个时间步,用户需自定义计算逻辑,并可将状态和输出写出。 即静态RNN,只能处理固定长度的序列数据,接受 :code:`lod_level=0` 的 Variable 作为输入。与 :code:`DynamicRNN` 类似,在RNN的每单个时间步,用户需自定义计算逻辑,并可将状态和输出写出。
请参考 :ref:`api_fluid_layers_StaticRNN` 请参考 :ref:`cn_api_fluid_layers_StaticRNN`
...@@ -39,10 +39,10 @@ ...@@ -39,10 +39,10 @@
空洞卷积相比普通卷积而言,卷积核在特征图上取值时不在连续,而是间隔的,这个间隔数称作dilation,等于1时,即为普通卷积,空洞卷积相比普通卷积的感受野更大。 空洞卷积相比普通卷积而言,卷积核在特征图上取值时不在连续,而是间隔的,这个间隔数称作dilation,等于1时,即为普通卷积,空洞卷积相比普通卷积的感受野更大。
- API汇总: - API汇总:
- :ref:`api_fluid_layers_conv2d` - :ref:`cn_api_fluid_layers_conv2d`
- :ref:`api_fluid_layers_conv3d` - :ref:`cn_api_fluid_layers_conv3d`
- :ref:`api_fluid_layers_conv2d_transpose` - :ref:`cn_api_fluid_layers_conv2d_transpose`
- :ref:`api_fluid_layers_conv3d_transpose` - :ref:`cn_api_fluid_layers_conv3d_transpose`
1D序列卷积 1D序列卷积
...@@ -60,5 +60,5 @@ Fluid可以表示变长的序列结构,这里的变长是指不同样本的时 ...@@ -60,5 +60,5 @@ Fluid可以表示变长的序列结构,这里的变长是指不同样本的时
- API汇总: - API汇总:
- :ref:`api_fluid_layers_sequence_conv` - :ref:`cn_api_fluid_layers_sequence_conv`
- :ref:`api_fluid_layers_row_conv` - :ref:`cn_api_fluid_layers_row_conv`
...@@ -41,4 +41,4 @@ Python List或Tuple类型对象,其中N为创建 :code:`DataFeeder` 对象时 ...@@ -41,4 +41,4 @@ Python List或Tuple类型对象,其中N为创建 :code:`DataFeeder` 对象时
会完成数据类型和维度的转换。若 :code:`feed_list` 中的变量的 :code:`lod_level` 不为零,则Fluid会将经过维度转换后的 会完成数据类型和维度的转换。若 :code:`feed_list` 中的变量的 :code:`lod_level` 不为零,则Fluid会将经过维度转换后的
:code:`iterable` 中每行数据的第0维作为返回结果的 :code:`LoD`。 :code:`iterable` 中每行数据的第0维作为返回结果的 :code:`LoD`。
具体使用方法请参见 :ref:`api_fluid_DataFeeder` 。 具体使用方法请参见 :ref:`cn_api_fluid_DataFeeder` 。
\ No newline at end of file \ No newline at end of file
...@@ -17,7 +17,7 @@ Fluid支持两种数据输入方式,包括: ...@@ -17,7 +17,7 @@ Fluid支持两种数据输入方式,包括:
方法送入训练/预测数据,C++端的训练/预测程序调用队列的 :code:`pop` 方法取出Python端送入的数据。PyReader可与 方法送入训练/预测数据,C++端的训练/预测程序调用队列的 :code:`pop` 方法取出Python端送入的数据。PyReader可与
:code:`double_buffer` 配合使用,实现数据读取和训练/预测的异步执行。 :code:`double_buffer` 配合使用,实现数据读取和训练/预测的异步执行。
具体使用方法请参考 :ref:`api_fluid_layers_py_reader`。 具体使用方法请参考 :ref:`cn_api_fluid_layers_py_reader`。
数据输出 数据输出
...@@ -29,5 +29,5 @@ Fluid支持在训练/预测阶段获取当前batch的数据。 ...@@ -29,5 +29,5 @@ Fluid支持在训练/预测阶段获取当前batch的数据。
fetch期望的输出变量,通过设置 :code:`return_numpy` 参数设置是否将输出数据转为numpy array。 fetch期望的输出变量,通过设置 :code:`return_numpy` 参数设置是否将输出数据转为numpy array。
若 :code:`return_numpy` 为 :code:`False` ,则返回 :code:`LoDTensor` 类型数据。 若 :code:`return_numpy` 为 :code:`False` ,则返回 :code:`LoDTensor` 类型数据。
具体使用方式请参考相关API文档 :ref:`api_fluid_executor_Executor` 和 具体使用方式请参考相关API文档 :ref:`cn_api_fluid_executor_Executor` 和
:ref:`api_fluid_ParallelExecutor`。 :ref:`cn_api_fluid_ParallelExecutor`。
\ No newline at end of file \ No newline at end of file
...@@ -11,15 +11,15 @@ PaddlePaddle Fluid在图像检测任务中实现了多个特有的操作。以 ...@@ -11,15 +11,15 @@ PaddlePaddle Fluid在图像检测任务中实现了多个特有的操作。以
图像检测中的一些通用操作,是对检测框的一系列操作,其中包括: 图像检测中的一些通用操作,是对检测框的一系列操作,其中包括:
* 对检测框的编码,解码(box_coder):实现两种框之间编码和解码的转换。例如训练阶段对先验框和真实框进行编码得到训练目标值。API Reference 请参考 :ref:`api_fluid_layers_box_coder` * 对检测框的编码,解码(box_coder):实现两种框之间编码和解码的转换。例如训练阶段对先验框和真实框进行编码得到训练目标值。API Reference 请参考 :ref:`cn_api_fluid_layers_box_coder`
* 比较两个检测框并进行匹配: * 比较两个检测框并进行匹配:
* iou_similarity:计算两组框的IOU值。API Reference 请参考 :ref:`api_fluid_layers_iou_similarity` * iou_similarity:计算两组框的IOU值。API Reference 请参考 :ref:`cn_api_fluid_layers_iou_similarity`
* bipartite_match:通过贪心二分匹配算法得到每一列中距离最大的一行。API Reference 请参考 :ref:`api_fluid_layers_bipartite_match` * bipartite_match:通过贪心二分匹配算法得到每一列中距离最大的一行。API Reference 请参考 :ref:`cn_api_fluid_layers_bipartite_match`
* 根据检测框和标签得到分类和回归目标值(target_assign):通过匹配索引和非匹配索引得到目标值和对应权重。API Reference 请参考 :ref:`api_fluid_layers_target_assign` * 根据检测框和标签得到分类和回归目标值(target_assign):通过匹配索引和非匹配索引得到目标值和对应权重。API Reference 请参考 :ref:`cn_api_fluid_layers_target_assign`
Faster RCNN Faster RCNN
...@@ -27,13 +27,13 @@ Faster RCNN ...@@ -27,13 +27,13 @@ Faster RCNN
`Faster RCNN <https://arxiv.org/abs/1506.01497>`_ 是典型的两阶段目标检测器,相较于传统提取区域的方法,Faster RCNN中RPN网络通过共享卷积层参数大幅提高提取区域的效率,并提出高质量的候选区域。RPN网络需要对输入anchor和真实值进行比较生成初选候选框,并对初选候选框分配分类和回归值,>需要如下四个特有api: `Faster RCNN <https://arxiv.org/abs/1506.01497>`_ 是典型的两阶段目标检测器,相较于传统提取区域的方法,Faster RCNN中RPN网络通过共享卷积层参数大幅提高提取区域的效率,并提出高质量的候选区域。RPN网络需要对输入anchor和真实值进行比较生成初选候选框,并对初选候选框分配分类和回归值,>需要如下四个特有api:
* rpn_target_assign:通过anchor和真实框为anchor分配RPN网络的分类和回归目标值。API Reference 请参考 :ref:`api_fluid_layers_rpn_target_assign` * rpn_target_assign:通过anchor和真实框为anchor分配RPN网络的分类和回归目标值。API Reference 请参考 :ref:`cn_api_fluid_layers_rpn_target_assign`
* anchor_generator:为每个位置生成一系列anchor。API Reference 请参考 :ref:`api_fluid_layers_anchor_generator` * anchor_generator:为每个位置生成一系列anchor。API Reference 请参考 :ref:`cn_api_fluid_layers_anchor_generator`
* generate_proposal_labels: 通过generate_proposals得到的候选框和真实框得到RCNN部分的分类和回归的目标值。API Reference 请参考 :ref:`api_fluid_layers_generate_proposal_labels` * generate_proposal_labels: 通过generate_proposals得到的候选框和真实框得到RCNN部分的分类和回归的目标值。API Reference 请参考 :ref:`cn_api_fluid_layers_generate_proposal_labels`
* generate_proposals: 对RPN网络输出box解码并筛选得到新的候选框。API Reference 请参考 :ref:`api_fluid_layers_generate_proposals` * generate_proposals: 对RPN网络输出box解码并筛选得到新的候选框。API Reference 请参考 :ref:`cn_api_fluid_layers_generate_proposals`
SSD SSD
...@@ -41,23 +41,23 @@ SSD ...@@ -41,23 +41,23 @@ SSD
`SSD <https://arxiv.org/abs/1512.02325>`_ 全称Single Shot MultiBox Detector,是目标检测领域较新且效果较好的检测算法之一,具有检测速度快且检测精度高的特点。与两阶段的检测方法不同,单阶段目标检测并不进行区域推荐,而是直接从特征图回归出目标的边界框和分类概率。SSD网络对六个尺度特>征图计算损失,进行预测,需要如下五种特有api: `SSD <https://arxiv.org/abs/1512.02325>`_ 全称Single Shot MultiBox Detector,是目标检测领域较新且效果较好的检测算法之一,具有检测速度快且检测精度高的特点。与两阶段的检测方法不同,单阶段目标检测并不进行区域推荐,而是直接从特征图回归出目标的边界框和分类概率。SSD网络对六个尺度特>征图计算损失,进行预测,需要如下五种特有api:
* Prior Box:根据不同参数为每个输入位置生成一系列候选框。API Reference 请参考 :ref:`api_fluid_layers_prior_box` * Prior Box:根据不同参数为每个输入位置生成一系列候选框。API Reference 请参考 :ref:`cn_api_fluid_layers_prior_box`
* multi_box_head :得到不同prior box的位置和置信度。API Reference 请参考 :ref:`api_fluid_layers_multi_box_head` * multi_box_head :得到不同prior box的位置和置信度。API Reference 请参考 :ref:`cn_api_fluid_layers_multi_box_head`
* detection_output:对prioir box解码,通过多分类NMS得到检测结果。API Reference 请参考 :ref:`api_fluid_layers_detection_output` * detection_output:对prioir box解码,通过多分类NMS得到检测结果。API Reference 请参考 :ref:`cn_api_fluid_layers_detection_output`
* ssd_loss:通过位置偏移预测值,置信度,检测框位置和真实框位置和标签计算损失。API Reference 请参考 :ref:`api_fluid_layers_ssd_loss` * ssd_loss:通过位置偏移预测值,置信度,检测框位置和真实框位置和标签计算损失。API Reference 请参考 :ref:`cn_api_fluid_layers_ssd_loss`
* detection map: 利用mAP评估SSD网络模型。API Reference 请参考 :ref:`api_fluid_layers_detection_map` * detection map: 利用mAP评估SSD网络模型。API Reference 请参考 :ref:`cn_api_fluid_layers_detection_map`
OCR OCR
--------- ---------
场景文字识别是在图像背景复杂、分辨率低下、字体多样、分布随意等情况下,将图像信息转化为文字序列的过程,可认为是一种特别的翻译过程:将图像输入翻译为自然语言输出。OCR任务中需要对检测框进行不规则变换,其中需要如下两个api: 场景文字识别是在图像背景复杂、分辨率低下、字体多样、分布随意等情况下,将图像信息转化为文字序列的过程,可认为是一种特别的翻译过程:将图像输入翻译为自然语言输出。OCR任务中需要对检测框进行不规则变换,其中需要如下两个api:
* roi_perspective_transform:对输入roi做透视变换。API Reference 请参考 :ref:`api_fluid_layers_roi_perspective_transform` * roi_perspective_transform:对输入roi做透视变换。API Reference 请参考 :ref:`cn_api_fluid_layers_roi_perspective_transform`
* polygon_box_transform:对不规则检测框进行坐标变换。API Reference 请参考 :ref:`api_fluid_layers_polygon_box_transform` * polygon_box_transform:对不规则检测框进行坐标变换。API Reference 请参考 :ref:`cn_api_fluid_layers_polygon_box_transform`
...@@ -18,23 +18,23 @@ ...@@ -18,23 +18,23 @@
====== ======
* :code:`noam_decay`: 诺姆衰减,相关算法请参考 `《Attention Is All You Need》 <https://arxiv.org/pdf/1706.03762.pdf>`_ 。 * :code:`noam_decay`: 诺姆衰减,相关算法请参考 `《Attention Is All You Need》 <https://arxiv.org/pdf/1706.03762.pdf>`_ 。
相关API Reference请参考 :ref:`api_fluid_layers_noam_decay` 相关API Reference请参考 :ref:`cn_api_fluid_layers_noam_decay`
* :code:`exponential_decay`: 指数衰减,即每次将当前学习率乘以给定的衰减率得到下一个学习率。 * :code:`exponential_decay`: 指数衰减,即每次将当前学习率乘以给定的衰减率得到下一个学习率。
相关API Reference请参考 :ref:`api_fluid_layers_exponential_decay` 相关API Reference请参考 :ref:`cn_api_fluid_layers_exponential_decay`
* :code:`natural_exp_decay`: 自然指数衰减,即每次将当前学习率乘以给定的衰减率的自然指数得到下一个学习率。 * :code:`natural_exp_decay`: 自然指数衰减,即每次将当前学习率乘以给定的衰减率的自然指数得到下一个学习率。
相关API Reference请参考 :ref:`api_fluid_layers_natural_exp_decay` 相关API Reference请参考 :ref:`cn_api_fluid_layers_natural_exp_decay`
* :code:`inverse_time_decay`: 逆时间衰减,即得到的学习率与当前衰减次数成反比。 * :code:`inverse_time_decay`: 逆时间衰减,即得到的学习率与当前衰减次数成反比。
相关API Reference请参考 :ref:`api_fluid_layers_inverse_time_decay` 相关API Reference请参考 :ref:`cn_api_fluid_layers_inverse_time_decay`
* :code:`polynomial_decay`: 多项式衰减,即得到的学习率为初始学习率和给定最终学习之间由多项式计算权重定比分点的插值。 * :code:`polynomial_decay`: 多项式衰减,即得到的学习率为初始学习率和给定最终学习之间由多项式计算权重定比分点的插值。
相关API Reference请参考 :ref:`api_fluid_layers_polynomial_decay` 相关API Reference请参考 :ref:`cn_api_fluid_layers_polynomial_decay`
* :code:`piecewise_decay`: 分段衰减,即由给定step数分段呈阶梯状衰减,每段内学习率相同。 * :code:`piecewise_decay`: 分段衰减,即由给定step数分段呈阶梯状衰减,每段内学习率相同。
相关API Reference请参考 :ref:`api_fluid_layers_piecewise_decay` 相关API Reference请参考 :ref:`cn_api_fluid_layers_piecewise_decay`
* :code:`append_LARS`: 通过Layer-wise Adaptive Rate Scaling算法获得学习率,相关算法请参考 `《Train Feedfoward Neural Network with Layer-wise Adaptive Rate via Approximating Back-matching Propagation》 <https://arxiv.org/abs/1802.09750>`_ 。 * :code:`append_LARS`: 通过Layer-wise Adaptive Rate Scaling算法获得学习率,相关算法请参考 `《Train Feedfoward Neural Network with Layer-wise Adaptive Rate via Approximating Back-matching Propagation》 <https://arxiv.org/abs/1802.09750>`_ 。
相关API Reference请参考 :ref:`api_fluid_layers_append_LARS` 相关API Reference请参考 :ref:`cn_api_fluid_layers_append_LARS`
...@@ -11,22 +11,22 @@ Paddle Fluid 中提供了面向多种任务的多种类型的损失函数,以 ...@@ -11,22 +11,22 @@ Paddle Fluid 中提供了面向多种任务的多种类型的损失函数,以
==== ====
平方误差损失(squared error loss)使用预测值和真实值之间误差的平方作为样本损失,是回归问题中最为基本的损失函数。 平方误差损失(squared error loss)使用预测值和真实值之间误差的平方作为样本损失,是回归问题中最为基本的损失函数。
API Reference 请参考 :ref:`api_fluid_layers_square_error_cost`。 API Reference 请参考 :ref:`cn_api_fluid_layers_square_error_cost`。
平滑 L1 损失(smooth_l1 loss)是一种分段的损失函数,较平方误差损失其对异常点相对不敏感,因而更为鲁棒。 平滑 L1 损失(smooth_l1 loss)是一种分段的损失函数,较平方误差损失其对异常点相对不敏感,因而更为鲁棒。
API Reference 请参考 :ref:`api_fluid_layers_smooth_l1`。 API Reference 请参考 :ref:`cn_api_fluid_layers_smooth_l1`。
分类 分类
==== ====
`交叉熵(cross entropy) <https://en.wikipedia.org/wiki/Cross_entropy>`_ 是分类问题中使用最为广泛的损失函数,Paddle Fluid 中提供了接受归一化概率值和非归一化分值输入的两种交叉熵损失函数的接口,并支持 soft label 和 hard label 两种样本类别标签。 `交叉熵(cross entropy) <https://en.wikipedia.org/wiki/Cross_entropy>`_ 是分类问题中使用最为广泛的损失函数,Paddle Fluid 中提供了接受归一化概率值和非归一化分值输入的两种交叉熵损失函数的接口,并支持 soft label 和 hard label 两种样本类别标签。
API Reference 请参考 :ref:`api_fluid_layers_cross_entropy` 和 :ref:`api_fluid_layers_softmax_with_cross_entropy`。 API Reference 请参考 :ref:`cn_api_fluid_layers_cross_entropy` 和 :ref:`cn_api_fluid_layers_softmax_with_cross_entropy`。
多标签分类 多标签分类
--------- ---------
对于多标签分类问题,如一篇文章同属于政治、科技等多个类别的情况,需要将各类别作为独立的二分类问题计算损失,Paddle Fluid 中为此提供了 sigmoid_cross_entropy_with_logits 损失函数, 对于多标签分类问题,如一篇文章同属于政治、科技等多个类别的情况,需要将各类别作为独立的二分类问题计算损失,Paddle Fluid 中为此提供了 sigmoid_cross_entropy_with_logits 损失函数,
API Reference 请参考 :ref:`api_fluid_layers_sigmoid_cross_entropy_with_logits`。 API Reference 请参考 :ref:`cn_api_fluid_layers_sigmoid_cross_entropy_with_logits`。
大规模分类 大规模分类
--------- ---------
...@@ -34,15 +34,15 @@ API Reference 请参考 :ref:`api_fluid_layers_sigmoid_cross_entropy_with_logits ...@@ -34,15 +34,15 @@ API Reference 请参考 :ref:`api_fluid_layers_sigmoid_cross_entropy_with_logits
* 噪声对比估计通过将多分类问题转化为学习分类器来判别数据来自真实分布和噪声分布的二分类问题,基于二分类来进行极大似然估计,避免在全类别空间计算归一化因子从而降低了计算复杂度。 * 噪声对比估计通过将多分类问题转化为学习分类器来判别数据来自真实分布和噪声分布的二分类问题,基于二分类来进行极大似然估计,避免在全类别空间计算归一化因子从而降低了计算复杂度。
* 层级 sigmoid 通过二叉树进行层级的二分类来实现多分类,每个样本的损失对应了编码路径上各节点二分类交叉熵的和,避免了归一化因子的计算从而降低了计算复杂度。 * 层级 sigmoid 通过二叉树进行层级的二分类来实现多分类,每个样本的损失对应了编码路径上各节点二分类交叉熵的和,避免了归一化因子的计算从而降低了计算复杂度。
这两种方法对应的损失函数在 Paddle Fluid 中均有提供,API Reference 请参考 :ref:`api_fluid_layers_nce` 和 :ref:`api_fluid_layers_hsigmoid`。 这两种方法对应的损失函数在 Paddle Fluid 中均有提供,API Reference 请参考 :ref:`cn_api_fluid_layers_nce` 和 :ref:`cn_api_fluid_layers_hsigmoid`。
序列分类 序列分类
------- -------
序列分类可以分为以下三种: 序列分类可以分为以下三种:
* 序列分类(Sequence Classification)问题,整个序列对应一个预测标签,如文本分类。这种即是普通的分类问题,可以使用 cross entropy 作为损失函数。 * 序列分类(Sequence Classification)问题,整个序列对应一个预测标签,如文本分类。这种即是普通的分类问题,可以使用 cross entropy 作为损失函数。
* 序列片段分类(Segment Classification)问题,序列中的各个片段对应有自己的类别标签,如命名实体识别。对于这种序列标注问题,`(线性链)条件随机场(Conditional Random Field,CRF) <http://www.cs.columbia.edu/~mcollins/fb.pdf>`_ 是一种常用的模型方法,其使用句子级别的似然概率,序列中不同位置的标签不再是条件独立,能够有效解决标记偏置问题。Paddle Fluid 中提供了 CRF 对应损失函数的支持,API Reference 请参考 :ref:`api_fluid_layers_linear_chain_crf`。 * 序列片段分类(Segment Classification)问题,序列中的各个片段对应有自己的类别标签,如命名实体识别。对于这种序列标注问题,`(线性链)条件随机场(Conditional Random Field,CRF) <http://www.cs.columbia.edu/~mcollins/fb.pdf>`_ 是一种常用的模型方法,其使用句子级别的似然概率,序列中不同位置的标签不再是条件独立,能够有效解决标记偏置问题。Paddle Fluid 中提供了 CRF 对应损失函数的支持,API Reference 请参考 :ref:`cn_api_fluid_layers_linear_chain_crf`。
* 时序分类(Temporal Classification)问题,需要对未分割的序列进行标注,如语音识别。对于这种时序分类问题,`CTC(Connectionist Temporal Classification) <http://people.idsia.ch/~santiago/papers/icml2006.pdf>`_ 损失函数不需要对齐输入数据及标签,可以进行端到端的训练,Paddle Fluid 提供了 warpctc 的接口来计算相应的损失,API Reference 请参考 :ref:`api_fluid_layers_warpctc`。 * 时序分类(Temporal Classification)问题,需要对未分割的序列进行标注,如语音识别。对于这种时序分类问题,`CTC(Connectionist Temporal Classification) <http://people.idsia.ch/~santiago/papers/icml2006.pdf>`_ 损失函数不需要对齐输入数据及标签,可以进行端到端的训练,Paddle Fluid 提供了 warpctc 的接口来计算相应的损失,API Reference 请参考 :ref:`cn_api_fluid_layers_warpctc`。
排序 排序
==== ====
...@@ -50,11 +50,11 @@ API Reference 请参考 :ref:`api_fluid_layers_sigmoid_cross_entropy_with_logits ...@@ -50,11 +50,11 @@ API Reference 请参考 :ref:`api_fluid_layers_sigmoid_cross_entropy_with_logits
`排序问题 <https://en.wikipedia.org/wiki/Learning_to_rank>`_ 可以使用 Pointwise、Pairwise 和 Listwise 的学习方法,不同的方法需要使用不同的损失函数: `排序问题 <https://en.wikipedia.org/wiki/Learning_to_rank>`_ 可以使用 Pointwise、Pairwise 和 Listwise 的学习方法,不同的方法需要使用不同的损失函数:
* Pointwise 的方法通过近似为回归问题解决排序问题,可以使用回归问题的损失函数。 * Pointwise 的方法通过近似为回归问题解决排序问题,可以使用回归问题的损失函数。
* Pairwise 的方法需要特殊设计的损失函数,其通过近似为分类问题解决排序问题,使用两篇文档与 query 的相关性得分以偏序作为二分类标签来计算损失。Paddle Fluid 中提供了两种常用的 Pairwise 方法的损失函数,API Reference 请参考 :ref:`api_fluid_layers_rank_loss` 和 :ref:`api_fluid_layers_margin_rank_loss`。 * Pairwise 的方法需要特殊设计的损失函数,其通过近似为分类问题解决排序问题,使用两篇文档与 query 的相关性得分以偏序作为二分类标签来计算损失。Paddle Fluid 中提供了两种常用的 Pairwise 方法的损失函数,API Reference 请参考 :ref:`cn_api_fluid_layers_rank_loss` 和 :ref:`cn_api_fluid_layers_margin_rank_loss`。
更多 更多
==== ====
对于一些较为复杂的损失函数,可以尝试使用其他损失函数组合实现;Paddle Fluid 中提供的用于图像分割任务的 :ref:`api_fluid_layers_dice_loss` 即是使用其他 OP 组合(计算各像素位置似然概率的均值)而成;多目标损失函数也可看作这样的情况,如 Faster RCNN 就使用 cross entropy 和 smooth_l1 loss 的加权和作为损失函数。 对于一些较为复杂的损失函数,可以尝试使用其他损失函数组合实现;Paddle Fluid 中提供的用于图像分割任务的 :ref:`cn_api_fluid_layers_dice_loss` 即是使用其他 OP 组合(计算各像素位置似然概率的均值)而成;多目标损失函数也可看作这样的情况,如 Faster RCNN 就使用 cross entropy 和 smooth_l1 loss 的加权和作为损失函数。
**注意**,在定义损失函数之后为能够使用 :ref:`api_guide_optimizer` 进行优化,通常需要使用 :ref:`api_fluid_layers_mean` 或其他操作将损失函数返回的高维 Tensor 转换为 Scalar 值。 **注意**,在定义损失函数之后为能够使用 :ref:`cn_api_guide_optimizer` 进行优化,通常需要使用 :ref:`cn_api_fluid_layers_mean` 或其他操作将损失函数返回的高维 Tensor 转换为 Scalar 值。
\ No newline at end of file \ No newline at end of file
...@@ -15,77 +15,77 @@ exp ...@@ -15,77 +15,77 @@ exp
对输入 :code:`Tensor` 逐元素做 :code:`exp` 操作。 对输入 :code:`Tensor` 逐元素做 :code:`exp` 操作。
API Reference 请参考 :ref:`api_fluid_layers_exp` API Reference 请参考 :ref:`cn_api_fluid_layers_exp`
tanh tanh
------------------ ------------------
对输入 :code:`Tensor` 逐元素取正切。 对输入 :code:`Tensor` 逐元素取正切。
API Reference 请参考 :ref:`api_fluid_layers_tanh` API Reference 请参考 :ref:`cn_api_fluid_layers_tanh`
sqrt sqrt
------------------ ------------------
对输入 :code:`Tensor` 逐元素取平方根。 对输入 :code:`Tensor` 逐元素取平方根。
API Reference 请参考 :ref:`api_fluid_layers_sqrt` API Reference 请参考 :ref:`cn_api_fluid_layers_sqrt`
abs abs
------------------ ------------------
对输入 :code:`Tensor` 逐元素取绝对值。 对输入 :code:`Tensor` 逐元素取绝对值。
API Reference 请参考 :ref:`api_fluid_layers_abs` API Reference 请参考 :ref:`cn_api_fluid_layers_abs`
ceil ceil
------------------ ------------------
对输入 :code:`Tensor` 逐元素向上取整。 对输入 :code:`Tensor` 逐元素向上取整。
API Reference 请参考 :ref:`api_fluid_layers_ceil` API Reference 请参考 :ref:`cn_api_fluid_layers_ceil`
floor floor
------------------ ------------------
对输入 :code:`Tensor` 逐元素向下取整。 对输入 :code:`Tensor` 逐元素向下取整。
API Reference 请参考 :ref:`api_fluid_layers_floor` API Reference 请参考 :ref:`cn_api_fluid_layers_floor`
sin sin
------------------ ------------------
对输入 :code:`Tensor` 逐元素取正玄。 对输入 :code:`Tensor` 逐元素取正玄。
API Reference 请参考 :ref:`api_fluid_layers_sin` API Reference 请参考 :ref:`cn_api_fluid_layers_sin`
cos cos
------------------ ------------------
对输入 :code:`Tensor` 逐元素取余玄。 对输入 :code:`Tensor` 逐元素取余玄。
API Reference 请参考 :ref:`api_fluid_layers_cos` API Reference 请参考 :ref:`cn_api_fluid_layers_cos`
round round
------------------ ------------------
对输入 :code:`Tensor` 逐元素四舍五入取整。 对输入 :code:`Tensor` 逐元素四舍五入取整。
API Reference 请参考 :ref:`api_fluid_layers_round` API Reference 请参考 :ref:`cn_api_fluid_layers_round`
square square
------------------ ------------------
对输入 :code:`Tensor` 逐元素取平方。 对输入 :code:`Tensor` 逐元素取平方。
API Reference 请参考 :ref:`api_fluid_layers_square` API Reference 请参考 :ref:`cn_api_fluid_layers_square`
reciprocal reciprocal
------------------ ------------------
对输入 :code:`Tensor` 逐元素取倒数。 对输入 :code:`Tensor` 逐元素取倒数。
API Reference 请参考 :ref:`api_fluid_layers_reciprocal` API Reference 请参考 :ref:`cn_api_fluid_layers_reciprocal`
reduce reduce
...@@ -94,11 +94,11 @@ reduce ...@@ -94,11 +94,11 @@ reduce
对输入 :code:`Tensor` 在指定的若干轴上做reduce操作,包括:min, max, sum, mean, product 对输入 :code:`Tensor` 在指定的若干轴上做reduce操作,包括:min, max, sum, mean, product
API Reference 请参考: API Reference 请参考:
:ref:`api_fluid_layers_reduce_min` :ref:`cn_api_fluid_layers_reduce_min`
:ref:`api_fluid_layers_reduce_max` :ref:`cn_api_fluid_layers_reduce_max`
:ref:`api_fluid_layers_reduce_sum` :ref:`cn_api_fluid_layers_reduce_sum`
:ref:`api_fluid_layers_reduce_mean` :ref:`cn_api_fluid_layers_reduce_mean`
:ref:`api_fluid_layers_reduce_prod` :ref:`cn_api_fluid_layers_reduce_prod`
二元操作 二元操作
...@@ -109,28 +109,28 @@ elementwise_add ...@@ -109,28 +109,28 @@ elementwise_add
对两个 :code:`Tensor` 逐元素相加,对应的数学操作符为 :code:`+` 对两个 :code:`Tensor` 逐元素相加,对应的数学操作符为 :code:`+`
API Reference 请参考 :ref:`api_fluid_layers_elementwise_add` API Reference 请参考 :ref:`cn_api_fluid_layers_elementwise_add`
elementwise_sub elementwise_sub
------------------ ------------------
对两个 :code:`Tensor` 逐元素相减,对应数学操作符 :code:`-` 对两个 :code:`Tensor` 逐元素相减,对应数学操作符 :code:`-`
API Reference 请参考 :ref:`api_fluid_layers_elementwise_sub` API Reference 请参考 :ref:`cn_api_fluid_layers_elementwise_sub`
elementwise_mul elementwise_mul
------------------ ------------------
对两个 :code:`Tensor` 逐元素相乘, 对应数学操作符 :code:`*` 对两个 :code:`Tensor` 逐元素相乘, 对应数学操作符 :code:`*`
API Reference 请参考 :ref:`api_fluid_layers_elementwise_mul` API Reference 请参考 :ref:`cn_api_fluid_layers_elementwise_mul`
elementwise_div elementwise_div
------------------ ------------------
对两个 :code:`Tensor` 逐元素相除, 对应数学操作符 :code:`/` 或 :code:`//` 对两个 :code:`Tensor` 逐元素相除, 对应数学操作符 :code:`/` 或 :code:`//`
API Reference 请参考 :ref:`api_fluid_layers_elementwise_div` API Reference 请参考 :ref:`cn_api_fluid_layers_elementwise_div`
elementwise_pow elementwise_pow
...@@ -138,74 +138,74 @@ elementwise_pow ...@@ -138,74 +138,74 @@ elementwise_pow
对两个 :code:`Tensor` 逐元素做次幂操作, 对应数学操作符 :code:`**` 对两个 :code:`Tensor` 逐元素做次幂操作, 对应数学操作符 :code:`**`
API Reference 请参考 :ref:`api_fluid_layers_elementwise_pow` API Reference 请参考 :ref:`cn_api_fluid_layers_elementwise_pow`
equal equal
------------------ ------------------
对两个 :code:`Tensor` 逐元素判断是否相等, 对应数学操作符 :code:`==` 对两个 :code:`Tensor` 逐元素判断是否相等, 对应数学操作符 :code:`==`
API Reference 请参考 :ref:`api_fluid_layers_equal` API Reference 请参考 :ref:`cn_api_fluid_layers_equal`
not_equal not_equal
------------------ ------------------
对两个 :code:`Tensor` 逐元素判断是否不等, 对应数学操作符 :code:`!=` 对两个 :code:`Tensor` 逐元素判断是否不等, 对应数学操作符 :code:`!=`
API Reference 请参考 :ref:`api_fluid_layers_elementwise_not_equal` API Reference 请参考 :ref:`cn_api_fluid_layers_elementwise_not_equal`
less_than less_than
------------------ ------------------
对两个 :code:`Tensor` 逐元素判断是否满足小于关系, 对应数学操作符 :code:`<` 对两个 :code:`Tensor` 逐元素判断是否满足小于关系, 对应数学操作符 :code:`<`
API Reference 请参考 :ref:`api_fluid_layers_less_than` API Reference 请参考 :ref:`cn_api_fluid_layers_less_than`
less_equal less_equal
------------------ ------------------
对两个 :code:`Tensor` 逐元素判断是否满足小于或等于关系, 对应数学操作符 :code:`<=` 对两个 :code:`Tensor` 逐元素判断是否满足小于或等于关系, 对应数学操作符 :code:`<=`
API Reference 请参考 :ref:`api_fluid_layers_less_equal` API Reference 请参考 :ref:`cn_api_fluid_layers_less_equal`
greater_than greater_than
------------------ ------------------
对两个 :code:`Tensor` 逐元素判断是否满足大于关系, 对应数学操作符 :code:`>` 对两个 :code:`Tensor` 逐元素判断是否满足大于关系, 对应数学操作符 :code:`>`
API Reference 请参考 :ref:`api_fluid_layers_greater_than` API Reference 请参考 :ref:`cn_api_fluid_layers_greater_than`
greater_equal greater_equal
------------------ ------------------
对两个 :code:`Tensor` 逐元素判断是否满足大于或等于关系, 对应数学操作符 :code:`>=` 对两个 :code:`Tensor` 逐元素判断是否满足大于或等于关系, 对应数学操作符 :code:`>=`
API Reference 请参考 :ref:`api_fluid_layers_greater_equal` API Reference 请参考 :ref:`cn_api_fluid_layers_greater_equal`
sum sum
------------------ ------------------
对两个 :code:`Tensor` 逐元素相加。 对两个 :code:`Tensor` 逐元素相加。
API Reference 请参考 :ref:`api_fluid_layers_sum` API Reference 请参考 :ref:`cn_api_fluid_layers_sum`
min min
------------------ ------------------
对两个 :code:`Tensor` 逐元素进行 :code:`min(x, y)` 操作。 对两个 :code:`Tensor` 逐元素进行 :code:`min(x, y)` 操作。
API Reference 请参考 :ref:`api_fluid_layers_min` API Reference 请参考 :ref:`cn_api_fluid_layers_min`
max max
------------------ ------------------
对两个 :code:`Tensor` 逐元素进行 :code:`max(x, y)` 操作。 对两个 :code:`Tensor` 逐元素进行 :code:`max(x, y)` 操作。
API Reference 请参考 :ref:`api_fluid_layers_max` API Reference 请参考 :ref:`cn_api_fluid_layers_max`
matmul matmul
------------------ ------------------
对两个 :code:`Tensor` 进行矩阵乘操作。 对两个 :code:`Tensor` 进行矩阵乘操作。
API Reference 请参考 :ref:`api_fluid_layers_matmul` API Reference 请参考 :ref:`cn_api_fluid_layers_matmul`
...@@ -40,8 +40,8 @@ PaddlePaddle中有针对定长图像特征的二维(pool2d)、三维卷积(pool3 ...@@ -40,8 +40,8 @@ PaddlePaddle中有针对定长图像特征的二维(pool2d)、三维卷积(pool3
api汇总: api汇总:
- :ref:`api_fluid_layers_pool2d` - :ref:`cn_api_fluid_layers_pool2d`
- :ref:`api_fluid_layers_pool3d` - :ref:`cn_api_fluid_layers_pool3d`
2. roi_pool 2. roi_pool
...@@ -58,7 +58,7 @@ api汇总: ...@@ -58,7 +58,7 @@ api汇总:
api汇总: api汇总:
- :ref:`api_fluid_layers_roi_pool` - :ref:`cn_api_fluid_layers_roi_pool`
3. sequence_pool 3. sequence_pool
...@@ -77,4 +77,4 @@ api汇总: ...@@ -77,4 +77,4 @@ api汇总:
api汇总: api汇总:
- :ref:`api_fluid_layers_sequence_pool` - :ref:`cn_api_fluid_layers_sequence_pool`
\ No newline at end of file \ No newline at end of file
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
在深度学习领域许多问题涉及到对 `序列(sequence) <https://en.wikipedia.org/wiki/Sequence>`_ 的处理。 在深度学习领域许多问题涉及到对 `序列(sequence) <https://en.wikipedia.org/wiki/Sequence>`_ 的处理。
从Wiki上的释义可知,序列可以表征多种物理意义,但在深度学习中,最常见的仍然是"时间序列"——一个序列包含多个时间步的信息。 从Wiki上的释义可知,序列可以表征多种物理意义,但在深度学习中,最常见的仍然是"时间序列"——一个序列包含多个时间步的信息。
在Paddle Fluid中,我们将序列表示为 :ref:`api_fluid_LoDTensor` 。 在Paddle Fluid中,我们将序列表示为 :ref:`cn_api_fluid_LoDTensor` 。
因为一般进行神经网络计算时都是一个batch一个batch地计算,所以我们用一个LoDTensor来存储一个mini batch的序列。 因为一般进行神经网络计算时都是一个batch一个batch地计算,所以我们用一个LoDTensor来存储一个mini batch的序列。
一个LoDTensor的第0维包含该mini batch中所有序列的所有时间步,并且用LoD来记录各个序列的长度,区分不同序列。 一个LoDTensor的第0维包含该mini batch中所有序列的所有时间步,并且用LoD来记录各个序列的长度,区分不同序列。
而在运算时,还需要根据LoD信息将LoDTensor中一个mini batch的第0维拆开成多个序列。(具体请参考上述LoD相关的文档。) 而在运算时,还需要根据LoD信息将LoDTensor中一个mini batch的第0维拆开成多个序列。(具体请参考上述LoD相关的文档。)
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
这个layer以一个mini batch的序列为输入,在每个序列内做softmax操作。其输出为一个mini batch相同shape的序列,但在序列内是经softmax归一化过的。 这个layer以一个mini batch的序列为输入,在每个序列内做softmax操作。其输出为一个mini batch相同shape的序列,但在序列内是经softmax归一化过的。
这个layer往往用于在每个sequence内做softmax归一化。 这个layer往往用于在每个sequence内做softmax归一化。
API Reference 请参考 :ref:`api_fluid_layers_sequence_softmax` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_softmax`
2. sequence_concat 2. sequence_concat
...@@ -35,21 +35,21 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_softmax` ...@@ -35,21 +35,21 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_softmax`
该layer会将每个batch中第i个序列在时间维度上拼接成一个新序列,作为返回的batch中的第i个序列。 该layer会将每个batch中第i个序列在时间维度上拼接成一个新序列,作为返回的batch中的第i个序列。
理所当然地,list中每个LoDTensor的序列必须有相同的batch size。 理所当然地,list中每个LoDTensor的序列必须有相同的batch size。
API Reference 请参考 :ref:`api_fluid_layers_sequence_concat` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_concat`
3. sequence_first_step 3. sequence_first_step
---------------------- ----------------------
这个layer以一个LoDTensor作为输入,会取出每个序列中的第一个元素(即第一个时间步的元素),并作为返回值。 这个layer以一个LoDTensor作为输入,会取出每个序列中的第一个元素(即第一个时间步的元素),并作为返回值。
API Reference 请参考 :ref:`api_fluid_layers_sequence_first_step` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_first_step`
4. sequence_last_step 4. sequence_last_step
--------------------- ---------------------
同 :code:`sequence_first_step` ,除了本layer是取每个序列中最后一个元素(即最后一个时间步)作为返回值。 同 :code:`sequence_first_step` ,除了本layer是取每个序列中最后一个元素(即最后一个时间步)作为返回值。
API Reference 请参考 :ref:`api_fluid_layers_sequence_last_step` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_last_step`
5. sequence_expand 5. sequence_expand
...@@ -57,7 +57,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_last_step` ...@@ -57,7 +57,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_last_step`
这个layer有两个LoDTensor的序列作为输入,并按照第二个LoDTensor中序列的LoD信息来扩展第一个batch中的序列。 这个layer有两个LoDTensor的序列作为输入,并按照第二个LoDTensor中序列的LoD信息来扩展第一个batch中的序列。
通常用来将只有一个时间步的序列(例如 :code:`sequence_first_step` 的返回结果)延展成有多个时间步的序列,以此方便与有多个时间步的序列进行运算。 通常用来将只有一个时间步的序列(例如 :code:`sequence_first_step` 的返回结果)延展成有多个时间步的序列,以此方便与有多个时间步的序列进行运算。
API Reference 请参考 :ref:`api_fluid_layers_sequence_expand` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_expand`
6. sequence_expand_as 6. sequence_expand_as
...@@ -66,14 +66,14 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_expand` ...@@ -66,14 +66,14 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_expand`
不同于 :code:`sequence_expand` ,这个layer会将第一个LoDTensor中的序列严格延展为和第二个LoDTensor中的序列等长。 不同于 :code:`sequence_expand` ,这个layer会将第一个LoDTensor中的序列严格延展为和第二个LoDTensor中的序列等长。
如果无法延展成等长的(例如第二个batch中的序列长度不是第一个batch中序列长度的整数倍),则会报错。 如果无法延展成等长的(例如第二个batch中的序列长度不是第一个batch中序列长度的整数倍),则会报错。
API Reference 请参考 :ref:`api_fluid_layers_sequence_expand_as` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_expand_as`
7. sequence_enumerate 7. sequence_enumerate
--------------------- ---------------------
这个layer需要一个LoDTensor的序列作为输入,同时需要指定一个 :code:`win_size` 的长度。这个layer将依次取所有序列中长度为 :code:`win_size` 的子序列,并组合成新的序列。 这个layer需要一个LoDTensor的序列作为输入,同时需要指定一个 :code:`win_size` 的长度。这个layer将依次取所有序列中长度为 :code:`win_size` 的子序列,并组合成新的序列。
API Reference 请参考 :ref:`api_fluid_layers_sequence_enumerate` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_enumerate`
8. sequence_reshape 8. sequence_reshape
...@@ -81,7 +81,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_enumerate` ...@@ -81,7 +81,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_enumerate`
这个layer需要一个LoDTensor的序列作为输入,同时需要指定一个 :code:`new_dim` 作为新的序列的维度。 这个layer需要一个LoDTensor的序列作为输入,同时需要指定一个 :code:`new_dim` 作为新的序列的维度。
该layer会将mini batch内每个序列reshape为new_dim给定的维度。注意,每个序列的长度会改变(因此LoD信息也会变),以适应新的形状。 该layer会将mini batch内每个序列reshape为new_dim给定的维度。注意,每个序列的长度会改变(因此LoD信息也会变),以适应新的形状。
API Reference 请参考 :ref:`api_fluid_layers_sequence_reshape` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_reshape`
9. sequence_scatter 9. sequence_scatter
...@@ -89,7 +89,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_reshape` ...@@ -89,7 +89,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_reshape`
这个layer可以将一个序列的数据scatter到另一个tensor上。这个layer有三个input,一个要被scatter的目标tensor :code:`input`; 这个layer可以将一个序列的数据scatter到另一个tensor上。这个layer有三个input,一个要被scatter的目标tensor :code:`input`;
一个是序列的数据 :code:`update` ,一个是目标tensor的上坐标 :code:`index` 。Output为scatter后的tensor,形状和 :code:`input` 相同。 一个是序列的数据 :code:`update` ,一个是目标tensor的上坐标 :code:`index` 。Output为scatter后的tensor,形状和 :code:`input` 相同。
API Reference 请参考 :ref:`api_fluid_layers_sequence_scatter` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_scatter`
10. sequence_pad 10. sequence_pad
...@@ -98,7 +98,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_scatter` ...@@ -98,7 +98,7 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_scatter`
前者是用来补齐序列的元素,可以是一个数也可以是一个tensor;后者是序列补齐的目标长度。 前者是用来补齐序列的元素,可以是一个数也可以是一个tensor;后者是序列补齐的目标长度。
这个layer会返回补齐后的序列,以及一个记录补齐前各个序列长度的tensor :code:`Length`。 这个layer会返回补齐后的序列,以及一个记录补齐前各个序列长度的tensor :code:`Length`。
API Reference 请参考 :ref:`api_fluid_layers_sequence_pad` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_pad`
11. sequence_mask 11. sequence_mask
...@@ -108,5 +108,5 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_pad` ...@@ -108,5 +108,5 @@ API Reference 请参考 :ref:`api_fluid_layers_sequence_pad`
通常这个layer用于生成一个mask,将被pad后的序列中pad的部分过滤掉。 通常这个layer用于生成一个mask,将被pad后的序列中pad的部分过滤掉。
:code:`input` 的长度tensor通常可以直接用 :code:`sequence_pad` 返回的 :code:`Length`。 :code:`input` 的长度tensor通常可以直接用 :code:`sequence_pad` 返回的 :code:`Length`。
API Reference 请参考 :ref:`api_fluid_layers_sequence_mask` API Reference 请参考 :ref:`cn_api_fluid_layers_sequence_mask`
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
稀疏更新 稀疏更新
##### #####
Fluid的 :ref:`api_fluid_layers_embedding` 层在单机训练和分布式训练时,均可以支持“稀疏更新”,即梯度以sparse tensor 结构存储,只保存梯度不为0的行。 Fluid的 :ref:`cn_api_fluid_layers_embedding` 层在单机训练和分布式训练时,均可以支持“稀疏更新”,即梯度以sparse tensor 结构存储,只保存梯度不为0的行。
在分布式训练中,对于较大的embedding层,开启稀疏更新有助于减少通信数据量,提升训练速度。 在分布式训练中,对于较大的embedding层,开启稀疏更新有助于减少通信数据量,提升训练速度。
在paddle内部,我们用lookup_table来实现embedding。下边这张图说明了embedding在正向和反向计算的过程: 在paddle内部,我们用lookup_table来实现embedding。下边这张图说明了embedding在正向和反向计算的过程:
...@@ -17,7 +17,7 @@ Fluid的 :ref:`api_fluid_layers_embedding` 层在单机训练和分布式训练 ...@@ -17,7 +17,7 @@ Fluid的 :ref:`api_fluid_layers_embedding` 层在单机训练和分布式训练
embedding使用例子: embedding使用例子:
--------------------- ---------------------
API详细使用方法参考 :ref:`api_fluid_layers_embedding` ,以下是一个简单的例子: API详细使用方法参考 :ref:`cn_api_fluid_layers_embedding` ,以下是一个简单的例子:
.. code-block:: python .. code-block:: python
...@@ -39,7 +39,7 @@ API详细使用方法参考 :ref:`api_fluid_layers_embedding` ,以下是一个 ...@@ -39,7 +39,7 @@ API详细使用方法参考 :ref:`api_fluid_layers_embedding` ,以下是一个
- :code:`is_sparse` : 反向计算的时候梯度是否为sparse tensor。如果不设置,梯度是一个 `LodTensor <https://github.com/PaddlePaddle/FluidDoc/blob/develop/doc/fluid/user_guides/howto/prepare_data/lod_tensor.md>`_ 。默认为False。 - :code:`is_sparse` : 反向计算的时候梯度是否为sparse tensor。如果不设置,梯度是一个 `LodTensor <https://github.com/PaddlePaddle/FluidDoc/blob/develop/doc/fluid/user_guides/howto/prepare_data/lod_tensor.md>`_ 。默认为False。
- :code:`is_distributed` : 标志是否是用在分布式的场景下。一般大规模稀疏更新(embedding的第0维维度很大,比如几百万以上)才需要设置。具体可以参考大规模稀疏的API guide :ref:`api_guide_async_training` 。默认为False。 - :code:`is_distributed` : 标志是否是用在分布式的场景下。一般大规模稀疏更新(embedding的第0维维度很大,比如几百万以上)才需要设置。具体可以参考大规模稀疏的API guide :ref:`cn_api_guide_async_training` 。默认为False。
- API汇总: - API汇总:
- :ref:`api_fluid_layers_embedding` - :ref:`cn_api_fluid_layers_embedding`
...@@ -15,14 +15,14 @@ Tensor ...@@ -15,14 +15,14 @@ Tensor
--------------------- ---------------------
Tensor用于在框架中承载数据,使用 :code:`create_tensor` 可以创建一个指定数据类型的Lod-Tensor变量, Tensor用于在框架中承载数据,使用 :code:`create_tensor` 可以创建一个指定数据类型的Lod-Tensor变量,
API reference 请参考: :ref:`api_fluid_layers_create_tensor` API reference 请参考: :ref:`cn_api_fluid_layers_create_tensor`
2. create_parameter 2. create_parameter
--------------------- ---------------------
神经网络的训练过程是一个对参数的学习过程,Fluid 使用 :code:`create_parameter` 创建一个可学习的参数。该参数的值可以被operator改变。 神经网络的训练过程是一个对参数的学习过程,Fluid 使用 :code:`create_parameter` 创建一个可学习的参数。该参数的值可以被operator改变。
API reference 请参考::ref:`api_fluid_layers_create_parameter` API reference 请参考::ref:`cn_api_fluid_layers_create_parameter`
...@@ -30,7 +30,7 @@ API reference 请参考::ref:`api_fluid_layers_create_parameter` ...@@ -30,7 +30,7 @@ API reference 请参考::ref:`api_fluid_layers_create_parameter`
--------------------- ---------------------
Fluid 使用 :code:`create_global_var` 创建一个全局tensor,通过此 API 可以指定被创建 Tensor 变量的数据类型、形状和值。 Fluid 使用 :code:`create_global_var` 创建一个全局tensor,通过此 API 可以指定被创建 Tensor 变量的数据类型、形状和值。
API reference 请参考::ref:`api_fluid_layers_create_global_var` API reference 请参考::ref:`cn_api_fluid_layers_create_global_var`
4. cast 4. cast
...@@ -38,7 +38,7 @@ API reference 请参考::ref:`api_fluid_layers_create_global_var` ...@@ -38,7 +38,7 @@ API reference 请参考::ref:`api_fluid_layers_create_global_var`
Fluid 使用 :code:`cast` 将数据转换为指定类型。 Fluid 使用 :code:`cast` 将数据转换为指定类型。
API reference 请参考::ref:`api_fluid_layers_cast` API reference 请参考::ref:`cn_api_fluid_layers_cast`
5. concat 5. concat
...@@ -46,7 +46,7 @@ API reference 请参考::ref:`api_fluid_layers_cast` ...@@ -46,7 +46,7 @@ API reference 请参考::ref:`api_fluid_layers_cast`
Fluid 使用 :code:`concat` 将输入数据沿指定维度连接。 Fluid 使用 :code:`concat` 将输入数据沿指定维度连接。
API reference 请参考::ref:`api_fluid_layers_concat` API reference 请参考::ref:`cn_api_fluid_layers_concat`
6. sums 6. sums
...@@ -54,7 +54,7 @@ API reference 请参考::ref:`api_fluid_layers_concat` ...@@ -54,7 +54,7 @@ API reference 请参考::ref:`api_fluid_layers_concat`
Fluid 使用 :code:`sums` 执行对输入数据的加和。 Fluid 使用 :code:`sums` 执行对输入数据的加和。
API reference 请参考::ref:`api_fluid_layers_sums` API reference 请参考::ref:`cn_api_fluid_layers_sums`
7. fill_constant_batch_size_like 7. fill_constant_batch_size_like
...@@ -62,63 +62,63 @@ API reference 请参考::ref:`api_fluid_layers_sums` ...@@ -62,63 +62,63 @@ API reference 请参考::ref:`api_fluid_layers_sums`
Fluid 使用 :code:`fill_constant_batch_size_like` 创建一个具有特定形状、类型和 batch_size 的 Tensor。并且该Tensor的初始值可以被指定为任意常数。其中 batch_size 信息由该tensor的 :code:`input_dim_idx` 和 :code:`output_dim_idx` 确定。 Fluid 使用 :code:`fill_constant_batch_size_like` 创建一个具有特定形状、类型和 batch_size 的 Tensor。并且该Tensor的初始值可以被指定为任意常数。其中 batch_size 信息由该tensor的 :code:`input_dim_idx` 和 :code:`output_dim_idx` 确定。
API reference 请参考::ref:`api_fluid_layers_fill_constant_batch_size_like` API reference 请参考::ref:`cn_api_fluid_layers_fill_constant_batch_size_like`
8. fill_constant 8. fill_constant
----------------- -----------------
Fluid 使用 :code:`fill_constant` 创建一个具有特定形状和类型的 Tensor。可以通过 :code:`value` 设置该变量的初始值。 Fluid 使用 :code:`fill_constant` 创建一个具有特定形状和类型的 Tensor。可以通过 :code:`value` 设置该变量的初始值。
API reference 请参考: :ref:`api_fluid_layers_fill_constant` API reference 请参考: :ref:`cn_api_fluid_layers_fill_constant`
9. assign 9. assign
--------------- ---------------
Fluid 使用 :code:`assign` 复制一个变量。 Fluid 使用 :code:`assign` 复制一个变量。
API reference 请参考::ref:`api_fluid_layers_assign` API reference 请参考::ref:`cn_api_fluid_layers_assign`
10. argmin 10. argmin
-------------- --------------
Fluid 使用 :code:`argmin` 计算输入 Tensor 指定轴上最小元素的索引。 Fluid 使用 :code:`argmin` 计算输入 Tensor 指定轴上最小元素的索引。
API reference 请参考::ref:`api_fluid_layers_assign` API reference 请参考::ref:`cn_api_fluid_layers_assign`
11. argmax 11. argmax
----------- -----------
Fluid 使用 :code:`argmax` 计算输入 Tensor 指定轴上最大元素的索引。 Fluid 使用 :code:`argmax` 计算输入 Tensor 指定轴上最大元素的索引。
API reference 请参考::ref:`api_fluid_layers_argmax` API reference 请参考::ref:`cn_api_fluid_layers_argmax`
12. argsort 12. argsort
------------ ------------
Fluid 使用 :code:`argsort` 对输入 Tensor 在指定轴上进行排序,并返回排序后的数据变量及其对应的索引值。 Fluid 使用 :code:`argsort` 对输入 Tensor 在指定轴上进行排序,并返回排序后的数据变量及其对应的索引值。
API reference 请参考: :ref:`api_fluid_layers_argsort` API reference 请参考: :ref:`cn_api_fluid_layers_argsort`
13. ones 13. ones
------------- -------------
Fluid 使用 :code:`ones` 创建一个指定大小和数据类型的Tensor,且初始值为1。 Fluid 使用 :code:`ones` 创建一个指定大小和数据类型的Tensor,且初始值为1。
API reference 请参考: :ref:`api_fluid_layers_ones` API reference 请参考: :ref:`cn_api_fluid_layers_ones`
14. zeros 14. zeros
--------------- ---------------
Fluid 使用 :code:`zeros` 创建一个指定大小和数据类型的Tensor,且初始值为0。 Fluid 使用 :code:`zeros` 创建一个指定大小和数据类型的Tensor,且初始值为0。
API reference 请参考: :ref:`api_fluid_layers_zeros` API reference 请参考: :ref:`cn_api_fluid_layers_zeros`
15. reverse 15. reverse
------------------- -------------------
Fluid 使用 :code:`reverse` 沿指定轴反转 Tensor。 Fluid 使用 :code:`reverse` 沿指定轴反转 Tensor。
API reference 请参考: :ref:`api_fluid_layers_reverse` API reference 请参考: :ref:`cn_api_fluid_layers_reverse`
...@@ -132,18 +132,18 @@ LoD-Tensor非常适用于序列数据,相关知识可以参考阅读 `LoD_Tens ...@@ -132,18 +132,18 @@ LoD-Tensor非常适用于序列数据,相关知识可以参考阅读 `LoD_Tens
Fluid 使用 :code:`create_lod_tensor` 基于numpy数组、列表或现有 LoD_Tensor 创建拥有新的层级信息的 LoD_Tensor。 Fluid 使用 :code:`create_lod_tensor` 基于numpy数组、列表或现有 LoD_Tensor 创建拥有新的层级信息的 LoD_Tensor。
API reference 请参考: :ref:`api_fluid_create_lod_tensor` API reference 请参考: :ref:`cn_api_fluid_create_lod_tensor`
2. create_random_int_lodtensor 2. create_random_int_lodtensor
---------------------------------- ----------------------------------
Fluid 使用 :code:`create_random_int_lodtensor` 创建一个由随机整数组成的 LoD_Tensor。 Fluid 使用 :code:`create_random_int_lodtensor` 创建一个由随机整数组成的 LoD_Tensor。
API reference 请参考: :ref:`api_fluid_create_random_int_lodtensor` API reference 请参考: :ref:`cn_api_fluid_create_random_int_lodtensor`
3. reorder_lod_tensor_by_rank 3. reorder_lod_tensor_by_rank
--------------------------------- ---------------------------------
Fluid 使用 :code:`reorder_lod_tensor_by_rank` 对输入 LoD_Tensor 的序列信息按指定顺序重拍。 Fluid 使用 :code:`reorder_lod_tensor_by_rank` 对输入 LoD_Tensor 的序列信息按指定顺序重拍。
API reference 请参考::ref:`api_fluid_layers_reorder_lod_tensor_by_rank` API reference 请参考::ref:`cn_api_fluid_layers_reorder_lod_tensor_by_rank`
\ No newline at end of file \ No newline at end of file
...@@ -11,24 +11,24 @@ ...@@ -11,24 +11,24 @@
- 准确率: :code:`Precision` ,用来衡量二分类中召回真值和召回值的比例。 - 准确率: :code:`Precision` ,用来衡量二分类中召回真值和召回值的比例。
API Reference 请参考 :ref:`api_fluid_metrics_Precision` API Reference 请参考 :ref:`cn_api_fluid_metrics_Precision`
- 正确率: :code:`Accuracy` ,用来衡量二分类中召回真值和总样本数的比例。需要注意的是,准确率和正确率的定义是不同的,可以类比于误差分析中的 :code:`Variance` 和 :code:`Bias` 。 - 正确率: :code:`Accuracy` ,用来衡量二分类中召回真值和总样本数的比例。需要注意的是,准确率和正确率的定义是不同的,可以类比于误差分析中的 :code:`Variance` 和 :code:`Bias` 。
API Reference 请参考 :ref:`api_fluid_metrics_Accuracy` API Reference 请参考 :ref:`cn_api_fluid_metrics_Accuracy`
- 召回率: :code:`Recall` ,用来衡量二分类中召回值和总样本数的比例。准确率和召回率的选取相互制约,实际模型中需要进行权衡,可以参考文档 `Precision_and_recall <https://en.wikipedia.org/wiki/Precision_and_recall>`_ 。 - 召回率: :code:`Recall` ,用来衡量二分类中召回值和总样本数的比例。准确率和召回率的选取相互制约,实际模型中需要进行权衡,可以参考文档 `Precision_and_recall <https://en.wikipedia.org/wiki/Precision_and_recall>`_ 。
API Reference 请参考 :ref:`api_fluid_metrics_Recall` API Reference 请参考 :ref:`cn_api_fluid_metrics_Recall`
- AUC: :code:`Area Under Curve`, 适用于二分类的分类模型评估,用来计算 `ROC曲线的累积面积 <https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve>`_。:code:`Auc` 通过python计算实现,如果关注性能,可以使用 :code:`fluid.layers.auc` 代替。 - AUC: :code:`Area Under Curve`, 适用于二分类的分类模型评估,用来计算 `ROC曲线的累积面积 <https://en.wikipedia.org/wiki/Receiver_operating_characteristic#Area_under_the_curve>`_。:code:`Auc` 通过python计算实现,如果关注性能,可以使用 :code:`fluid.layers.auc` 代替。
API Reference 请参考 :ref:`api_fluid_metrics_Auc` API Reference 请参考 :ref:`cn_api_fluid_metrics_Auc`
- 平均准确度: :code:`Average Precision` ,常用在Faster R-CNN和SSD等物体检测任务中。在不同召回条件下,计算了准确率的平均值,具体可以参考文档 `Average-precision <https://sanchom.wordpress.com/tag/average-precision/>`_ 和 `SSD: Single Shot MultiBox Detector <https://arxiv.org/abs/1512.02325>`_。 - 平均准确度: :code:`Average Precision` ,常用在Faster R-CNN和SSD等物体检测任务中。在不同召回条件下,计算了准确率的平均值,具体可以参考文档 `Average-precision <https://sanchom.wordpress.com/tag/average-precision/>`_ 和 `SSD: Single Shot MultiBox Detector <https://arxiv.org/abs/1512.02325>`_。
API Reference 请参考 :ref:`api_fluid_metrics_DetectionMAP` API Reference 请参考 :ref:`cn_api_fluid_metrics_DetectionMAP`
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
- 语块评估方法: :code:`ChunkEvaluator` ,接收 :code:`chunk_eval` 接口的输出,累积每一个minibatch的语块统计值,最后计算准确率、召回率和F1值。:code:`ChunkEvaluator` 支持IOB, IOE, IOBES和IO四种标注模式。可以参考文档 `Chunking with Support Vector Machines <https://aclanthology.info/pdf/N/N01/N01-1025.pdf>`_ 。 - 语块评估方法: :code:`ChunkEvaluator` ,接收 :code:`chunk_eval` 接口的输出,累积每一个minibatch的语块统计值,最后计算准确率、召回率和F1值。:code:`ChunkEvaluator` 支持IOB, IOE, IOBES和IO四种标注模式。可以参考文档 `Chunking with Support Vector Machines <https://aclanthology.info/pdf/N/N01/N01-1025.pdf>`_ 。
API Reference 请参考 :ref:`api_fluid_metrics_ChunkEvaluator` API Reference 请参考 :ref:`cn_api_fluid_metrics_ChunkEvaluator`
生成任务评价 生成任务评价
...@@ -47,5 +47,5 @@ ...@@ -47,5 +47,5 @@
- 编辑距离: :code:`EditDistance` ,用来衡量两个字符串的相似度。可以参考文档 `Edit_distance <https://en.wikipedia.org/wiki/Edit_distance>`_。 - 编辑距离: :code:`EditDistance` ,用来衡量两个字符串的相似度。可以参考文档 `Edit_distance <https://en.wikipedia.org/wiki/Edit_distance>`_。
API Reference 请参考 :ref:`api_fluid_metrics_EditDistance` API Reference 请参考 :ref:`cn_api_fluid_metrics_EditDistance`
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
变量、持久性变量和参数 变量、持久性变量和参数
==================== ====================
在 :code:`Paddle` 中,算子(:code:`Operator`)的每一个输入和输出都是一个变量(:code:`Variable`),而参数(:code:`Parameter`)是变量(:code:`Variable`)的子类。持久性变量(:code:`Persistables`)是一种在每次迭代结束后均不会被删除的变量。参数是一种持久性变量,其在每次迭代后都会被优化器(:ref:`api_guide_optimizer`)更新。训练神经网络本质上就是在更新参数。 在 :code:`Paddle` 中,算子(:code:`Operator`)的每一个输入和输出都是一个变量(:code:`Variable`),而参数(:code:`Parameter`)是变量(:code:`Variable`)的子类。持久性变量(:code:`Persistables`)是一种在每次迭代结束后均不会被删除的变量。参数是一种持久性变量,其在每次迭代后都会被优化器(:ref:`cn_api_guide_optimizer`)更新。训练神经网络本质上就是在更新参数。
模型保存API介绍 模型保存API介绍
==================== ====================
- :code:`fluid.io.save_vars`:通过执行器(:ref:`api_guide_executor`)保存变量到指定的目录中。保存变量的方式有两种: - :code:`fluid.io.save_vars`:通过执行器(:ref:`cn_api_guide_executor`)保存变量到指定的目录中。保存变量的方式有两种:
1)通过接口中的 :code:`vars` 指定需要保存的变量列表。 1)通过接口中的 :code:`vars` 指定需要保存的变量列表。
...@@ -23,17 +23,17 @@ ...@@ -23,17 +23,17 @@
第一种保存方式的优先级要高于第二种。 第一种保存方式的优先级要高于第二种。
API Reference 请参考 :ref:`api_fluid_io_save_vars`。 API Reference 请参考 :ref:`cn_api_fluid_io_save_vars`。
- :code:`fluid.io.save_params`:通过接口中的 :code:`main_program` 指定好程序(:code:`Program`),该接口会将所指定程序中的全部参数(:code:`Parameter`)过滤出来,并将它们保存到 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中。 - :code:`fluid.io.save_params`:通过接口中的 :code:`main_program` 指定好程序(:code:`Program`),该接口会将所指定程序中的全部参数(:code:`Parameter`)过滤出来,并将它们保存到 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中。
API Reference 请参考 :ref:`api_fluid_io_save_params`。 API Reference 请参考 :ref:`cn_api_fluid_io_save_params`。
- :code:`fluid.io.save_persistables`:通过接口中的 :code:`main_program` 指定好程序(:code:`Program`),该接口会将所指定程序中的全部持久性变量(:code:`persistable==True`)过滤出来,并将它们保存到 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中。 - :code:`fluid.io.save_persistables`:通过接口中的 :code:`main_program` 指定好程序(:code:`Program`),该接口会将所指定程序中的全部持久性变量(:code:`persistable==True`)过滤出来,并将它们保存到 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中。
API Reference 请参考 :ref:`api_fluid_io_save_persistables`。 API Reference 请参考 :ref:`cn_api_fluid_io_save_persistables`。
- :code:`fluid.io.save_inference_model`:请参考 :ref:`api_guide_inference`。 - :code:`fluid.io.save_inference_model`:请参考 :ref:`cn_api_guide_inference`。
模型加载API介绍 模型加载API介绍
==================== ====================
...@@ -46,14 +46,14 @@ ...@@ -46,14 +46,14 @@
第一种加载方式的优先级要高于第二种。 第一种加载方式的优先级要高于第二种。
API Reference 请参考 :ref:`api_fluid_io_load_vars`。 API Reference 请参考 :ref:`cn_api_fluid_io_load_vars`。
- :code:`fluid.io.load_params`:该接口从 :code:`main_program` 指定的程序中过滤出全部参数(:code:`Parameter`),并试图从 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中加载这些参数。 - :code:`fluid.io.load_params`:该接口从 :code:`main_program` 指定的程序中过滤出全部参数(:code:`Parameter`),并试图从 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中加载这些参数。
API Reference 请参考 :ref:`api_fluid_io_load_params`。 API Reference 请参考 :ref:`cn_api_fluid_io_load_params`。
- :code:`fluid.io.load_persistables`:该接口从 :code:`main_program` 指定的程序中过滤出全部持久性变量(:code:`persistable==True`),并试图从 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中加载这些持久性变量。 - :code:`fluid.io.load_persistables`:该接口从 :code:`main_program` 指定的程序中过滤出全部持久性变量(:code:`persistable==True`),并试图从 :code:`dirname` 指定的文件夹或 :code:`filename` 指定的文件中加载这些持久性变量。
API Reference 请参考 :ref:`api_fluid_io_load_persistables`。 API Reference 请参考 :ref:`cn_api_fluid_io_load_persistables`。
- :code:`fluid.io.load_inference_model`:请参考 :ref:`api_guide_inference`。 - :code:`fluid.io.load_inference_model`:请参考 :ref:`cn_api_guide_inference`。
...@@ -11,45 +11,45 @@ ...@@ -11,45 +11,45 @@
1.simple_img_conv_pool 1.simple_img_conv_pool
---------------------- ----------------------
:code:`simple_img_conv_pool` 是由 :ref:`api_fluid_layers_conv2d` 与 :ref:`api_fluid_layers_pool2d` 串联而成。 :code:`simple_img_conv_pool` 是由 :ref:`cn_api_fluid_layers_conv2d` 与 :ref:`cn_api_fluid_layers_pool2d` 串联而成。
该模块在图像分类模型中广泛使用,比如应用在 `MNIST <https://en.wikipedia.org/wiki/MNIST_database>`_ 数字分类的问题。 该模块在图像分类模型中广泛使用,比如应用在 `MNIST <https://en.wikipedia.org/wiki/MNIST_database>`_ 数字分类的问题。
API Reference 请参考 :ref:`api_fluid_nets_simple_img_conv_pool` API Reference 请参考 :ref:`cn_api_fluid_nets_simple_img_conv_pool`
2.img_conv_group 2.img_conv_group
---------------- ----------------
:code:`img_conv_group` 是由 :ref:`api_fluid_layers_conv2d` , :ref:`api_fluid_layers_batch_norm`, :ref:`api_fluid_layers_dropout` 和 :ref:`api_fluid_layers_pool2d` 组成。 :code:`img_conv_group` 是由 :ref:`cn_api_fluid_layers_conv2d` , :ref:`cn_api_fluid_layers_batch_norm`, :ref:`cn_api_fluid_layers_dropout` 和 :ref:`cn_api_fluid_layers_pool2d` 组成。
该模块可以实现多个 :ref:`api_fluid_layers_conv2d` , :ref:`api_fluid_layers_batch_norm` 和 :ref:`api_fluid_layers_dropout` 的串联单元与一个 :ref:`api_fluid_layers_pool2d` 的组合。 该模块可以实现多个 :ref:`cn_api_fluid_layers_conv2d` , :ref:`cn_api_fluid_layers_batch_norm` 和 :ref:`cn_api_fluid_layers_dropout` 的串联单元与一个 :ref:`cn_api_fluid_layers_pool2d` 的组合。
其中, :ref:`api_fluid_layers_conv2d` , :ref:`api_fluid_layers_batch_norm` 和 :ref:`api_fluid_layers_dropout` 的数量都可以分别控制,从而得到多样的组合。 其中, :ref:`cn_api_fluid_layers_conv2d` , :ref:`cn_api_fluid_layers_batch_norm` 和 :ref:`cn_api_fluid_layers_dropout` 的数量都可以分别控制,从而得到多样的组合。
该模块广泛使用在比较复杂的图像分类任务中,比如 `VGG <https://arxiv.org/pdf/1409.1556.pdf>`_ 。 该模块广泛使用在比较复杂的图像分类任务中,比如 `VGG <https://arxiv.org/pdf/1409.1556.pdf>`_ 。
API Reference 请参考 :ref:`api_fluid_nets_img_conv_group` API Reference 请参考 :ref:`cn_api_fluid_nets_img_conv_group`
3.sequence_conv_pool 3.sequence_conv_pool
-------------------- --------------------
:code:`sequence_conv_pool` 是由 :ref:`api_fluid_layers_sequence_conv` 与 :ref:`api_fluid_layers_sequence_pool` 串联而成。 :code:`sequence_conv_pool` 是由 :ref:`cn_api_fluid_layers_sequence_conv` 与 :ref:`cn_api_fluid_layers_sequence_pool` 串联而成。
该模块在 `自然语言处理 <https://zh.wikipedia.org/wiki/自然语言处理>`_ 以及 `语音识别 <https://zh.wikipedia.org/wiki/语音识别>`_ 等领域均有广泛应用, 该模块在 `自然语言处理 <https://zh.wikipedia.org/wiki/自然语言处理>`_ 以及 `语音识别 <https://zh.wikipedia.org/wiki/语音识别>`_ 等领域均有广泛应用,
比如 `文本分类模型 <https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleNLP/text_classification/nets.py>`_ , 比如 `文本分类模型 <https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleNLP/text_classification/nets.py>`_ ,
`TagSpace <https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleRec/tagspace/train.py>`_ 以及 `Multi-view Simnet <https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleRec/multiview_simnet/nets.py>`_ 等模型。 `TagSpace <https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleRec/tagspace/train.py>`_ 以及 `Multi-view Simnet <https://github.com/PaddlePaddle/models/blob/develop/fluid/PaddleRec/multiview_simnet/nets.py>`_ 等模型。
API Reference 请参考 :ref:`api_fluid_nets_sequence_conv_pool` API Reference 请参考 :ref:`cn_api_fluid_nets_sequence_conv_pool`
4.glu 4.glu
----- -----
:code:`glu` 全称 Gated Linear Units, 来源于论文 `Language Modeling with Gated Convolutional Networks <https://arxiv.org/pdf/1612.08083.pdf>`_ ,由 :ref:`api_fluid_layers_split` , :ref:`api_fluid_layers_sigmoid` 和 :ref:`api_fluid_layers_elementwise_mul` 组成。 :code:`glu` 全称 Gated Linear Units, 来源于论文 `Language Modeling with Gated Convolutional Networks <https://arxiv.org/pdf/1612.08083.pdf>`_ ,由 :ref:`cn_api_fluid_layers_split` , :ref:`cn_api_fluid_layers_sigmoid` 和 :ref:`cn_api_fluid_layers_elementwise_mul` 组成。
它会把输入数据均分为2等份,并对第二部分求 `Sigmoid <https://en.wikipedia.org/wiki/Sigmoid_function>`_ , 然后再与第一部分数据求点乘得到输出。 它会把输入数据均分为2等份,并对第二部分求 `Sigmoid <https://en.wikipedia.org/wiki/Sigmoid_function>`_ , 然后再与第一部分数据求点乘得到输出。
API Reference 请参考 :ref:`api_fluid_nets_glu` API Reference 请参考 :ref:`cn_api_fluid_nets_glu`
5.scaled_dot_product_attention 5.scaled_dot_product_attention
------------------------------ ------------------------------
:code:`scaled_dot_product_attention` 来源于论文 `Attention Is All You Need <https://arxiv.org/pdf/1706.03762.pdf>`_ ,主要是由 :ref:`api_fluid_layers_fc` 和 :ref:`api_fluid_layers_softmax` 组成。 :code:`scaled_dot_product_attention` 来源于论文 `Attention Is All You Need <https://arxiv.org/pdf/1706.03762.pdf>`_ ,主要是由 :ref:`cn_api_fluid_layers_fc` 和 :ref:`cn_api_fluid_layers_softmax` 组成。
对于输入数据 :code:`Queries` , :code:`Key` 和 :code:`Values` 按照如下公式求出 :code:`Attention` 。 对于输入数据 :code:`Queries` , :code:`Key` 和 :code:`Values` 按照如下公式求出 :code:`Attention` 。
.. math:: .. math::
...@@ -57,5 +57,5 @@ API Reference 请参考 :ref:`api_fluid_nets_glu` ...@@ -57,5 +57,5 @@ API Reference 请参考 :ref:`api_fluid_nets_glu`
该模块广泛使用在 `机器翻译 <https://zh.wikipedia.org/zh/机器翻译>`_ 的模型中,比如 `Transformer <https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/neural_machine_translation/transformer>`_ 。 该模块广泛使用在 `机器翻译 <https://zh.wikipedia.org/zh/机器翻译>`_ 的模型中,比如 `Transformer <https://github.com/PaddlePaddle/models/tree/develop/fluid/PaddleNLP/neural_machine_translation/transformer>`_ 。
API Reference 请参考 :ref:`api_fluid_nets_scaled_dot_product_attention` API Reference 请参考 :ref:`cn_api_fluid_nets_scaled_dot_product_attention`
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
:code:`SGD` 是实现 `随机梯度下降 <https://arxiv.org/pdf/1609.04747.pdf>`_ 的一个 :code:`Optimizer` 子类,是 `梯度下降 <https://zh.wikipedia.org/zh-hans/梯度下降法>`_ 大类中的一种方法。 :code:`SGD` 是实现 `随机梯度下降 <https://arxiv.org/pdf/1609.04747.pdf>`_ 的一个 :code:`Optimizer` 子类,是 `梯度下降 <https://zh.wikipedia.org/zh-hans/梯度下降法>`_ 大类中的一种方法。
当需要训练大量样本的时候,往往选择 :code:`SGD` 来使损失函数更快的收敛。 当需要训练大量样本的时候,往往选择 :code:`SGD` 来使损失函数更快的收敛。
API Reference 请参考 :ref:`api_fluid_optimizer_SGDOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_SGDOptimizer`
2.Momentum/MomentumOptimizer 2.Momentum/MomentumOptimizer
...@@ -25,14 +25,14 @@ API Reference 请参考 :ref:`api_fluid_optimizer_SGDOptimizer` ...@@ -25,14 +25,14 @@ API Reference 请参考 :ref:`api_fluid_optimizer_SGDOptimizer`
<https://arxiv.org/pdf/1609.04747.pdf>`_ 算法和 `Nesterov accelerated gradient(论文4.2节) <https://arxiv.org/pdf/1609.04747.pdf>`_ 算法和 `Nesterov accelerated gradient(论文4.2节)
<https://arxiv.org/pdf/1609.04747.pdf>`_ 算法。 <https://arxiv.org/pdf/1609.04747.pdf>`_ 算法。
API Reference 请参考 :ref:`api_fluid_optimizer_MomentumOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_MomentumOptimizer`
3. Adagrad/AdagradOptimizer 3. Adagrad/AdagradOptimizer
--------------------------- ---------------------------
`Adagrad <http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf>`_ 优化器可以针对不同参数样本数不平均的问题,自适应地为各个参数分配不同的学习率。 `Adagrad <http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf>`_ 优化器可以针对不同参数样本数不平均的问题,自适应地为各个参数分配不同的学习率。
API Reference 请参考 :ref:`api_fluid_optimizer_AdagradOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_AdagradOptimizer`
4.RMSPropOptimizer 4.RMSPropOptimizer
...@@ -40,7 +40,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_AdagradOptimizer` ...@@ -40,7 +40,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_AdagradOptimizer`
`RMSProp优化器 <http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf>`_ ,是一种自适应调整学习率的方法, `RMSProp优化器 <http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf>`_ ,是一种自适应调整学习率的方法,
主要解决使用Adagrad后,模型训练中后期学习率急剧下降的问题。 主要解决使用Adagrad后,模型训练中后期学习率急剧下降的问题。
API Reference 请参考 :ref:`api_fluid_optimizer_RMSPropOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_RMSPropOptimizer`
...@@ -49,7 +49,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_RMSPropOptimizer` ...@@ -49,7 +49,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_RMSPropOptimizer`
`Adam <https://arxiv.org/abs/1412.6980>`_ 的优化器是一种自适应调整学习率的方法, `Adam <https://arxiv.org/abs/1412.6980>`_ 的优化器是一种自适应调整学习率的方法,
适用于大多非 `凸优化 <https://zh.wikipedia.org/zh/凸優化>`_ 、大数据集和高维空间的场景。在实际应用中,:code:`Adam` 是最为常用的一种优化方法。 适用于大多非 `凸优化 <https://zh.wikipedia.org/zh/凸優化>`_ 、大数据集和高维空间的场景。在实际应用中,:code:`Adam` 是最为常用的一种优化方法。
API Reference 请参考 :ref:`api_fluid_optimizer_AdamOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_AdamOptimizer`
...@@ -58,7 +58,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_AdamOptimizer` ...@@ -58,7 +58,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_AdamOptimizer`
`Adamax <https://arxiv.org/abs/1412.6980>`_ 是 :code:`Adam` 算法的一个变体,对学习率的上限提供了一个更简单的范围,使学习率的边界范围更简单。 `Adamax <https://arxiv.org/abs/1412.6980>`_ 是 :code:`Adam` 算法的一个变体,对学习率的上限提供了一个更简单的范围,使学习率的边界范围更简单。
API Reference 请参考 :ref:`api_fluid_optimizer_AdamaxOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer`
...@@ -67,7 +67,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_AdamaxOptimizer` ...@@ -67,7 +67,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_AdamaxOptimizer`
`DecayedAdagrad <http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf>`_ 优化器,可以看做是引入了衰减速率的 :code:`Adagrad` 算法,解决使用Adagrad后,模型训练中后期学习率急剧下降的问题。 `DecayedAdagrad <http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf>`_ 优化器,可以看做是引入了衰减速率的 :code:`Adagrad` 算法,解决使用Adagrad后,模型训练中后期学习率急剧下降的问题。
API Reference 请参考 :ref:`api_fluid_optimizer_DecayedAdagrad` API Reference 请参考 :ref:`cn_api_fluid_optimizer_DecayedAdagrad`
...@@ -78,7 +78,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_DecayedAdagrad` ...@@ -78,7 +78,7 @@ API Reference 请参考 :ref:`api_fluid_optimizer_DecayedAdagrad`
`FtrlOptimizer <https://www.eecs.tufts.edu/~dsculley/papers/ad-click-prediction.pdf>`_ 优化器结合了 `FOBOS算法 <https://stanford.edu/~jduchi/projects/DuchiSi09b.pdf>`_ 的高精度与 `RDA算法 `FtrlOptimizer <https://www.eecs.tufts.edu/~dsculley/papers/ad-click-prediction.pdf>`_ 优化器结合了 `FOBOS算法 <https://stanford.edu/~jduchi/projects/DuchiSi09b.pdf>`_ 的高精度与 `RDA算法
<http://www1.se.cuhk.edu.hk/~sqma/SEEM5121_Spring2015/dual-averaging.pdf>`_ 的稀疏性,是目前效果非常好的一种 `Online Learning <https://en.wikipedia.org/wiki/Online_machine_learning>`_ 算法。 <http://www1.se.cuhk.edu.hk/~sqma/SEEM5121_Spring2015/dual-averaging.pdf>`_ 的稀疏性,是目前效果非常好的一种 `Online Learning <https://en.wikipedia.org/wiki/Online_machine_learning>`_ 算法。
API Reference 请参考 :ref:`api_fluid_optimizer_FtrlOptimizer` API Reference 请参考 :ref:`cn_api_fluid_optimizer_FtrlOptimizer`
...@@ -87,6 +87,6 @@ API Reference 请参考 :ref:`api_fluid_optimizer_FtrlOptimizer` ...@@ -87,6 +87,6 @@ API Reference 请参考 :ref:`api_fluid_optimizer_FtrlOptimizer`
:code:`ModelAverage` 优化器,在训练中通过窗口来累计历史 parameter,在预测时使用取平均值后的paramet,整体提高预测的精度。 :code:`ModelAverage` 优化器,在训练中通过窗口来累计历史 parameter,在预测时使用取平均值后的paramet,整体提高预测的精度。
API Reference 请参考 :ref:`api_fluid_optimizer_ModelAverage` API Reference 请参考 :ref:`cn_api_fluid_optimizer_ModelAverage`
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
:code:`ParallelExecutor` 是以数据并行的方式在多个节点上分别执行 :code:`Program` 的执行器。用户可以通过Python脚本驱动 :code:`ParallelExecutor` 执行, :code:`ParallelExecutor` 的执行过程: :code:`ParallelExecutor` 是以数据并行的方式在多个节点上分别执行 :code:`Program` 的执行器。用户可以通过Python脚本驱动 :code:`ParallelExecutor` 执行, :code:`ParallelExecutor` 的执行过程:
- 首先根据 :code:`Program` 、 :code:`GPU` 卡的数目(或者 :code:`CPU` 的核数)以及 :ref:`api_fluid_BuildStrategy` 构建 :code:`SSA Graph` 和一个线程池; - 首先根据 :code:`Program` 、 :code:`GPU` 卡的数目(或者 :code:`CPU` 的核数)以及 :ref:`cn_api_fluid_BuildStrategy` 构建 :code:`SSA Graph` 和一个线程池;
- 执行过程中,根据Op的输入是否Ready决定是否执行该Op,这样可以使没有相互依赖的多个Op可在线程池中并行执行; - 执行过程中,根据Op的输入是否Ready决定是否执行该Op,这样可以使没有相互依赖的多个Op可在线程池中并行执行;
:code:`ParallelExecutor` 在构造时需要指定当前 :code:`Program` 的设备类型, :code:`GPU` 或者 :code:`CPU` : :code:`ParallelExecutor` 在构造时需要指定当前 :code:`Program` 的设备类型, :code:`GPU` 或者 :code:`CPU` :
...@@ -25,13 +25,13 @@ ...@@ -25,13 +25,13 @@
* :code:`AllReduce` 模式下, :code:`ParallelExecutor` 调用AllReduce操作使多个节点上参数梯度完全相等,然后各个节点独立进行参数的更新; * :code:`AllReduce` 模式下, :code:`ParallelExecutor` 调用AllReduce操作使多个节点上参数梯度完全相等,然后各个节点独立进行参数的更新;
* :code:`Reduce` 模式下, :code:`ParallelExecutor` 会预先将所有参数的更新分派到不同的节点上,在执行过程中 :code:`ParallelExecutor` 调用Reduce操作将参数梯度在预先指定的节点上进行聚合,并进行参数更新,最后调用Broadcast操作将更新后的参数发送到其他节点。 * :code:`Reduce` 模式下, :code:`ParallelExecutor` 会预先将所有参数的更新分派到不同的节点上,在执行过程中 :code:`ParallelExecutor` 调用Reduce操作将参数梯度在预先指定的节点上进行聚合,并进行参数更新,最后调用Broadcast操作将更新后的参数发送到其他节点。
这两种模式通过 :code:`build_strategy` 来指定,使用方法,请参考 :ref:`api_fluid_BuildStrategy` 。 这两种模式通过 :code:`build_strategy` 来指定,使用方法,请参考 :ref:`cn_api_fluid_BuildStrategy` 。
**注意** :如果在Reduce模式下使用 :code:`CPU` 多线程执行 :code:`Program` , :code:`Program` 的参数在多个线程间是共享的,在某些模型上,Reduce模式可以大幅节省内存。 **注意** :如果在Reduce模式下使用 :code:`CPU` 多线程执行 :code:`Program` , :code:`Program` 的参数在多个线程间是共享的,在某些模型上,Reduce模式可以大幅节省内存。
由于模型的执行速度与模型结构和执行器的执行策略相关, :code:`ParallelExecutor` 允许用户修改执行器的相关参数,如:线程池大小( :code:`num_threads` )、多少次迭代之后清理一次临时变量 :code:`num_iteration_per_drop_scope` 等,更多信息请参考 :ref:`api_fluid_ExecutionStrategy` >。 由于模型的执行速度与模型结构和执行器的执行策略相关, :code:`ParallelExecutor` 允许用户修改执行器的相关参数,如:线程池大小( :code:`num_threads` )、多少次迭代之后清理一次临时变量 :code:`num_iteration_per_drop_scope` 等,更多信息请参考 :ref:`cn_api_fluid_ExecutionStrategy` >。
- 相关API汇总: - 相关API汇总:
- :ref:`api_fluid_ParallelExecutor` - :ref:`cn_api_fluid_ParallelExecutor`
- :ref:`api_fluid_BuildStrategy` - :ref:`cn_api_fluid_BuildStrategy`
- :ref:`api_fluid_ExecutionStrategy` - :ref:`cn_api_fluid_ExecutionStrategy`
\ No newline at end of file \ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
模型参数 模型参数
######### #########
模型参数为模型中的weight和bias统称,在fluid中对应fluid.Parameter类,继承自fluid.Variable,是一种可持久化的variable。模型的训练就是不断学习更新模型参数的过程。模型参数相关的属性可以通过 :ref:`api_fluid_param_attr_ParamAttr` 来配置,可配置内容有: 模型参数为模型中的weight和bias统称,在fluid中对应fluid.Parameter类,继承自fluid.Variable,是一种可持久化的variable。模型的训练就是不断学习更新模型参数的过程。模型参数相关的属性可以通过 :ref:`cn_api_fluid_param_attr_ParamAttr` 来配置,可配置内容有:
- 初始化方式 - 初始化方式
- 正则化 - 正则化
...@@ -33,7 +33,7 @@ fluid通过设置 :code:`ParamAttr` 的 :code:`initializer` 属性为单个param ...@@ -33,7 +33,7 @@ fluid通过设置 :code:`ParamAttr` 的 :code:`initializer` 属性为单个param
可用别名:Bilinear 可用别名:Bilinear
API请参考::ref:`api_fluid_initializer_BilinearInitializer` API请参考::ref:`cn_api_fluid_initializer_BilinearInitializer`
2. ConstantInitializer 2. ConstantInitializer
---------------------- ----------------------
...@@ -42,7 +42,7 @@ API请参考::ref:`api_fluid_initializer_BilinearInitializer` ...@@ -42,7 +42,7 @@ API请参考::ref:`api_fluid_initializer_BilinearInitializer`
可用别名:Constant 可用别名:Constant
API请参考::ref:`api_fluid_initializer_ConstantInitializer` API请参考::ref:`cn_api_fluid_initializer_ConstantInitializer`
3. MSRAInitializer 3. MSRAInitializer
------------------ ------------------
...@@ -51,7 +51,7 @@ API请参考::ref:`api_fluid_initializer_ConstantInitializer` ...@@ -51,7 +51,7 @@ API请参考::ref:`api_fluid_initializer_ConstantInitializer`
可用别名:MSRA 可用别名:MSRA
API请参考::ref:`api_fluid_initializer_MSRAInitializer` API请参考::ref:`cn_api_fluid_initializer_MSRAInitializer`
4. NormalInitializer 4. NormalInitializer
--------------------- ---------------------
...@@ -60,7 +60,7 @@ API请参考::ref:`api_fluid_initializer_MSRAInitializer` ...@@ -60,7 +60,7 @@ API请参考::ref:`api_fluid_initializer_MSRAInitializer`
可用别名:Normal 可用别名:Normal
API请参考::ref:`api_fluid_initializer_NormalInitializer` API请参考::ref:`cn_api_fluid_initializer_NormalInitializer`
5. TruncatedNormalInitializer 5. TruncatedNormalInitializer
----------------------------- -----------------------------
...@@ -69,7 +69,7 @@ API请参考::ref:`api_fluid_initializer_NormalInitializer` ...@@ -69,7 +69,7 @@ API请参考::ref:`api_fluid_initializer_NormalInitializer`
可用别名:TruncatedNormal 可用别名:TruncatedNormal
API请参考::ref:`api_fluid_initializer_TruncatedNormalInitializer` API请参考::ref:`cn_api_fluid_initializer_TruncatedNormalInitializer`
6. UniformInitializer 6. UniformInitializer
-------------------- --------------------
...@@ -78,7 +78,7 @@ API请参考::ref:`api_fluid_initializer_TruncatedNormalInitializer` ...@@ -78,7 +78,7 @@ API请参考::ref:`api_fluid_initializer_TruncatedNormalInitializer`
可用别名:Uniform 可用别名:Uniform
API请参考::ref:`api_fluid_initializer_UniformInitializer` API请参考::ref:`cn_api_fluid_initializer_UniformInitializer`
7. XavierInitializer 7. XavierInitializer
-------------------- --------------------
...@@ -87,7 +87,7 @@ API请参考::ref:`api_fluid_initializer_UniformInitializer` ...@@ -87,7 +87,7 @@ API请参考::ref:`api_fluid_initializer_UniformInitializer`
可用别名:Xavier 可用别名:Xavier
API请参考::ref:`api_fluid_initializer_XavierInitializer` API请参考::ref:`cn_api_fluid_initializer_XavierInitializer`
正则化方式 正则化方式
============= =============
...@@ -102,8 +102,8 @@ fluid通过设置 :code:`ParamAttr` 的 :code:`regularizer` 属性为单个param ...@@ -102,8 +102,8 @@ fluid通过设置 :code:`ParamAttr` 的 :code:`regularizer` 属性为单个param
以下为fluid支持的正则化方式: 以下为fluid支持的正则化方式:
- :ref:`api_fluid_regularizer_L1DecayRegularizer` (别名:L1Decay) - :ref:`cn_api_fluid_regularizer_L1DecayRegularizer` (别名:L1Decay)
- :ref:`api_fluid_regularizer_L2DecayRegularizer` (别名:L2Decay) - :ref:`cn_api_fluid_regularizer_L2DecayRegularizer` (别名:L2Decay)
Clipping Clipping
========== ==========
...@@ -124,14 +124,14 @@ fluid通过设置 :code:`ParamAttr` 的 :code:`gradient_clip` 属性为单个par ...@@ -124,14 +124,14 @@ fluid通过设置 :code:`ParamAttr` 的 :code:`gradient_clip` 属性为单个par
用来将一个tensor的值clipping到指定范围。 用来将一个tensor的值clipping到指定范围。
API请参考::ref:`api_fluid_clip_ErrorClipByValue` API请参考::ref:`cn_api_fluid_clip_ErrorClipByValue`
2. GradientClipByGlobalNorm 2. GradientClipByGlobalNorm
--------------------------- ---------------------------
用来将多个Tensor的global-norm限制在 :code:`clip_norm` 以内。 用来将多个Tensor的global-norm限制在 :code:`clip_norm` 以内。
API请参考::ref:`api_fluid_clip_GradientClipByGlobalNorm` API请参考::ref:`cn_api_fluid_clip_GradientClipByGlobalNorm`
3. GradientClipByNorm 3. GradientClipByNorm
--------------------- ---------------------
...@@ -139,14 +139,14 @@ API请参考::ref:`api_fluid_clip_GradientClipByGlobalNorm` ...@@ -139,14 +139,14 @@ API请参考::ref:`api_fluid_clip_GradientClipByGlobalNorm`
将Tensor的l2-norm限制在 :code:`max_norm` 以内。如果Tensor的l2-norm超过了 :code:`max_norm` , 将Tensor的l2-norm限制在 :code:`max_norm` 以内。如果Tensor的l2-norm超过了 :code:`max_norm` ,
会将计算出一个 :code:`scale` ,该Tensor的所有值乘上计算出来的 :code:`scale` . 会将计算出一个 :code:`scale` ,该Tensor的所有值乘上计算出来的 :code:`scale` .
API请参考::ref:`api_fluid_clip_GradientClipByNorm` API请参考::ref:`cn_api_fluid_clip_GradientClipByNorm`
4. GradientClipByValue 4. GradientClipByValue
---------------------- ----------------------
将parameter对应的gradient的值限制在[min, max]范围内。 将parameter对应的gradient的值限制在[min, max]范围内。
API请参考::ref:`api_fluid_clip_GradientClipByValue` API请参考::ref:`cn_api_fluid_clip_GradientClipByValue`
模型平均 模型平均
======== ========
...@@ -164,4 +164,4 @@ fluid通过 :code:`ParamAttr` 的 :code:`do_model_average` 属性设置单个par ...@@ -164,4 +164,4 @@ fluid通过 :code:`ParamAttr` 的 :code:`do_model_average` 属性设置单个par
平均后的parameters只是被用来进行测试和预测,其并不参与实际的训练过程。 平均后的parameters只是被用来进行测试和预测,其并不参与实际的训练过程。
具体API请参考::ref:`api_fluid_optimizer_ModelAverage` 具体API请参考::ref:`cn_api_fluid_optimizer_ModelAverage`
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册