未验证 提交 3c6a19da 编写于 作者: C Chen Long 提交者: GitHub

Change style (#2264)

* change_api_doc_style

* add_api_.rst
上级 aae9a2de
...@@ -4,4 +4,3 @@ fluid ...@@ -4,4 +4,3 @@ fluid
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
...@@ -14,20 +14,29 @@ append_backward ...@@ -14,20 +14,29 @@ append_backward
在大多数情况下,用户无需手动调用此接口,它将由优化器(``Optimizer``)的 ``minimize`` 函数自动调用。 在大多数情况下,用户无需手动调用此接口,它将由优化器(``Optimizer``)的 ``minimize`` 函数自动调用。
参数: 参数
::::::::::::
- **loss** ( :ref:`api_guide_Variable` ) - 网络的损失变量。 - **loss** ( :ref:`api_guide_Variable` ) - 网络的损失变量。
- **parameter_list** (list [Variable|str],可选)- 指定优化器需要更新的参数或参数名称列表。如果为 ``None`` ,则将更新所有参数。默认值为 ``None``。 - **parameter_list** (list [Variable|str],可选)- 指定优化器需要更新的参数或参数名称列表。如果为 ``None`` ,则将更新所有参数。默认值为 ``None``。
- **no_grad_set** (set [Variable|str],可选)- 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。 - **no_grad_set** (set [Variable|str],可选)- 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。
- **callbacks** (list [callable object],可选)- 回调函数列表。用于在反向传播构建中执行一些自定义作业。每次将新的梯度OP添加到程序中时,将调用其中的所有可调用对象。可调用对象必须有两个输入参数: :ref:`api_guide_Block` 和 ``context`` 。 :ref:`api_guide_Block` 是将被添加到新梯度算子的块。 ``context`` 是一个映射,其键是梯度 :ref:`api_guide_Variable` 名,值是对应的原始 :ref:`api_guide_Variable` 。除此之外, ``context`` 还有另一个特殊的键值对:键是字符串 ``__ current_op_desc__`` ,值是刚刚触发可调用对象的梯度OP的 ``op_desc`` 。默认值为 ``None``。 - **callbacks** (list [callable object],可选)- 回调函数列表。用于在反向传播构建中执行一些自定义作业。每次将新的梯度OP添加到程序中时,将调用其中的所有可调用对象。可调用对象必须有两个输入参数: :ref:`api_guide_Block` 和 ``context`` 。 :ref:`api_guide_Block` 是将被添加到新梯度算子的块。 ``context`` 是一个映射,其键是梯度 :ref:`api_guide_Variable` 名,值是对应的原始 :ref:`api_guide_Variable` 。除此之外, ``context`` 还有另一个特殊的键值对:键是字符串 ``__ current_op_desc__`` ,值是刚刚触发可调用对象的梯度OP的 ``op_desc`` 。默认值为 ``None``。
返回: 参数及其梯度 :ref:`api_guide_Variable` 的元组的列表。元组的第一个值为参数,第二个值为该参数的梯度 :ref:`api_guide_Variable` 。 返回
::::::::::::
参数及其梯度 :ref:`api_guide_Variable` 的元组的列表。元组的第一个值为参数,第二个值为该参数的梯度 :ref:`api_guide_Variable` 。
返回类型: list[( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` )] 返回类型
::::::::::::
list[( :ref:`api_guide_Variable` , :ref:`api_guide_Variable` )]
抛出: 抛出异常
::::::::::::
- ``AssertionError`` - 如果 loss 不是 :ref:`api_guide_Variable` 的实例。 - ``AssertionError`` - 如果 loss 不是 :ref:`api_guide_Variable` 的实例。
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -9,18 +9,25 @@ gradients ...@@ -9,18 +9,25 @@ gradients
将目标梯度反向传播到输入。 将目标梯度反向传播到输入。
参数: 参数
::::::::::::
- **targets** (Variable|list[Variable]) – 目标变量 - **targets** (Variable|list[Variable]) – 目标变量
- **inputs** (Variable|list[Variable]) – 输入变量 - **inputs** (Variable|list[Variable]) – 输入变量
- **target_gradients** (Variable|list[Variable],可选) – 目标的梯度变量,应与目标变量形状相同;如果设置为None,则以1初始化所有梯度变量 - **target_gradients** (Variable|list[Variable],可选) – 目标的梯度变量,应与目标变量形状相同;如果设置为None,则以1初始化所有梯度变量
- **no_grad_set** (set[Variable|str],可选) – 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。 - **no_grad_set** (set[Variable|str],可选) – 在 `block0` ( :ref:`api_guide_Block` ) 中要忽略梯度的 :ref:`api_guide_Variable` 的名字的集合。所有的 :ref:`api_guide_Block` 中带有 ``stop_gradient = True`` 的所有 :ref:`api_guide_Variable` 的名字都会被自动添加到此集合中。如果该参数不为 ``None``,则会将该参数集合的内容添加到默认的集合中。默认值为 ``None``。
返回:数组,包含与输入对应的梯度。如果一个输入不影响目标函数,则对应的梯度变量为None 返回
::::::::::::
数组,包含与输入对应的梯度。如果一个输入不影响目标函数,则对应的梯度变量为None
返回类型:(list[Variable]) 返回类型
::::::::::::
(list[Variable])
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -13,12 +13,15 @@ ErrorClipByValue ...@@ -13,12 +13,15 @@ ErrorClipByValue
- 任何大于max(最大值)的值都被设置为 ``max`` - 任何大于max(最大值)的值都被设置为 ``max``
参数: 参数
::::::::::::
- **max** (foat) - 要修剪的最大值。 - **max** (foat) - 要修剪的最大值。
- **min** (float) - 要修剪的最小值。如果用户没有设置,将被框架默认设置为 ``-max`` 。 - **min** (float) - 要修剪的最小值。如果用户没有设置,将被框架默认设置为 ``-max`` 。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -26,12 +26,15 @@ GradientClipByGlobalNorm ...@@ -26,12 +26,15 @@ GradientClipByGlobalNorm
\\global\_norm=\sqrt{\sum_{i=0}^{n-1}(l2norm(t\_list[i]))^2}\\ \\global\_norm=\sqrt{\sum_{i=0}^{n-1}(l2norm(t\_list[i]))^2}\\
参数: 参数
::::::::::::
- **clip_norm** (float) - 所允许的范数最大值 - **clip_norm** (float) - 所允许的范数最大值
- **group_name** (str, optional) - 剪切的组名 - **group_name** (str, optional) - 剪切的组名
- **need_clip** (function, optional) - 类型: 函数。用于指定需要梯度裁剪的参数,该函数接收一个 ``Parameter`` ,返回一个 ``bool`` (True表示需要裁剪,False不需要裁剪)。默认为None,此时会裁剪网络中全部参数。 - **need_clip** (function, optional) - 类型: 函数。用于指定需要梯度裁剪的参数,该函数接收一个 ``Parameter`` ,返回一个 ``bool`` (True表示需要裁剪,False不需要裁剪)。默认为None,此时会裁剪网络中全部参数。
**代码示例1:静态图** 代码示例 1:静态图
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -68,7 +71,8 @@ GradientClipByGlobalNorm ...@@ -68,7 +71,8 @@ GradientClipByGlobalNorm
out = exe.run(main_prog, feed={'x': x}, fetch_list=loss) out = exe.run(main_prog, feed={'x': x}, fetch_list=loss)
**代码示例2:动态图** 代码示例 2:动态图
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -33,11 +33,14 @@ GradientClipByNorm ...@@ -33,11 +33,14 @@ GradientClipByNorm
.. math:: .. math::
\\norm(X) = (\sum_{i=1}^{n}|x_i|^2)^{\frac{1}{2}}\\ \\norm(X) = (\sum_{i=1}^{n}|x_i|^2)^{\frac{1}{2}}\\
参数: 参数
::::::::::::
- **clip_norm** (float) - 所允许的二范数最大值。 - **clip_norm** (float) - 所允许的二范数最大值。
- **need_clip** (function, optional) - 类型: 函数。用于指定需要梯度裁剪的参数,该函数接收一个 ``Parameter`` ,返回一个 ``bool`` (True表示需要裁剪,False不需要裁剪)。默认为None,此时会裁剪网络中全部参数。 - **need_clip** (function, optional) - 类型: 函数。用于指定需要梯度裁剪的参数,该函数接收一个 ``Parameter`` ,返回一个 ``bool`` (True表示需要裁剪,False不需要裁剪)。默认为None,此时会裁剪网络中全部参数。
**代码示例1:静态图** 代码示例 1:静态图
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -74,7 +77,8 @@ GradientClipByNorm ...@@ -74,7 +77,8 @@ GradientClipByNorm
out = exe.run(main_prog, feed={'x': x}, fetch_list=loss) out = exe.run(main_prog, feed={'x': x}, fetch_list=loss)
**代码示例2:动态图** 代码示例 2:动态图
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -18,12 +18,15 @@ GradientClipByValue ...@@ -18,12 +18,15 @@ GradientClipByValue
- 任何大于 ``max`` 的值都被设置为 ``max`` - 任何大于 ``max`` 的值都被设置为 ``max``
参数: 参数
::::::::::::
- **max** (foat) - 要修剪的最大值。 - **max** (foat) - 要修剪的最大值。
- **min** (float,optional) - 要修剪的最小值。如果用户没有设置,将被自动设置为 ``-max`` (此时 ``max`` 必须大于0)。 - **min** (float,optional) - 要修剪的最小值。如果用户没有设置,将被自动设置为 ``-max`` (此时 ``max`` 必须大于0)。
- **need_clip** (function, optional) - 类型: 函数。用于指定需要梯度裁剪的参数,该函数接收一个 ``Parameter`` ,返回一个 ``bool`` (True表示需要裁剪,False不需要裁剪)。默认为None,此时会裁剪网络中全部参数。 - **need_clip** (function, optional) - 类型: 函数。用于指定需要梯度裁剪的参数,该函数接收一个 ``Parameter`` ,返回一个 ``bool`` (True表示需要裁剪,False不需要裁剪)。默认为None,此时会裁剪网络中全部参数。
**代码示例1:静态图** 代码示例 1:静态图
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -60,7 +63,8 @@ GradientClipByValue ...@@ -60,7 +63,8 @@ GradientClipByValue
out = exe.run(main_prog, feed={'x': x}, fetch_list=loss) out = exe.run(main_prog, feed={'x': x}, fetch_list=loss)
**代码示例2:动态图** 代码示例 2:动态图
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -14,14 +14,19 @@ set_gradient_clip ...@@ -14,14 +14,19 @@ set_gradient_clip
给指定参数做梯度裁剪。 给指定参数做梯度裁剪。
参数: 参数
::::::::::::
- **clip** (GradientClipBase) - 梯度裁剪的策略,如 :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 等,用于描述具体的裁剪方法和属性。 - **clip** (GradientClipBase) - 梯度裁剪的策略,如 :ref:`cn_api_fluid_clip_GradientClipByGlobalNorm` 等,用于描述具体的裁剪方法和属性。
- **param_list** (list(Variable),可选) - 需要裁剪的参数列表,可以是参数或参数名称列表。默认值为None,表示裁剪 ``program`` 中的所有参数。 - **param_list** (list(Variable),可选) - 需要裁剪的参数列表,可以是参数或参数名称列表。默认值为None,表示裁剪 ``program`` 中的所有参数。
- **program** (Program,可选) - 参数所在的Program。默认值为None,表示使用 :ref:`cn_api_fluid_default_main_program` 。 - **program** (Program,可选) - 参数所在的Program。默认值为None,表示使用 :ref:`cn_api_fluid_default_main_program` 。
返回: 无。 返回
::::::::::::
无。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -10,7 +10,8 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut ...@@ -10,7 +10,8 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut
简单用法如下: 简单用法如下:
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -25,7 +26,8 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut ...@@ -25,7 +26,8 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut
如果您想在使用多个GPU训练模型时预先将数据单独输入GPU端,可以使用decorate_reader函数。 如果您想在使用多个GPU训练模型时预先将数据单独输入GPU端,可以使用decorate_reader函数。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -41,15 +43,20 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut ...@@ -41,15 +43,20 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut
paddle.batch(paddle.dataset.flowers.train(), batch_size=16), multi_devices=False) paddle.batch(paddle.dataset.flowers.train(), batch_size=16), multi_devices=False)
参数: 参数
::::::::::::
- **feed_list** (list) – 将输入模型的变量或变量的名称。 - **feed_list** (list) – 将输入模型的变量或变量的名称。
- **place** (Place) – place表示将数据输入CPU或GPU,如果要将数据输入GPU,请使用fluid.CUDAPlace(i)(i表示GPU的ID),如果要将数据输入CPU,请使用fluid.CPUPlace()。 - **place** (Place) – place表示将数据输入CPU或GPU,如果要将数据输入GPU,请使用fluid.CUDAPlace(i)(i表示GPU的ID),如果要将数据输入CPU,请使用fluid.CPUPlace()。
- **program** (Program) –将数据输入的Program,如果Program为None,它将使用default_main_program() 。默认值None。 - **program** (Program) –将数据输入的Program,如果Program为None,它将使用default_main_program() 。默认值None。
抛出异常: ``ValueError`` – 如果某些变量未在Program中出现 抛出异常
::::::::::::
``ValueError`` – 如果某些变量未在Program中出现
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -81,16 +88,22 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut ...@@ -81,16 +88,22 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut
fetch_list=[out]) fetch_list=[out])
.. py:method:: feed(iterable) 方法
::::::::::::
feed(iterable)
'''''''''
根据feed_list和iterable,将输入转换成一个数据结构,该数据结构可以输入Executor和ParallelExecutor。 根据feed_list和iterable,将输入转换成一个数据结构,该数据结构可以输入Executor和ParallelExecutor。
参数: **参数**
- **iterable** (list|tuple) – 输入的数据 - **iterable** (list|tuple) – 输入的数据
返回: 转换结果 **返回**
转换结果
返回类型: dict **返回类型**
dict
**代码示例** **代码示例**
...@@ -112,17 +125,21 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut ...@@ -112,17 +125,21 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut
.. py:method:: feed_parallel(iterable, num_places=None) feed_parallel(iterable, num_places=None)
'''''''''
需要多个mini-batches。每个mini-batch都将提前在每个设备上输入。 需要多个mini-batches。每个mini-batch都将提前在每个设备上输入。
参数: **参数**
- **iterable** (list|tuple) – 输入的数据。 - **iterable** (list|tuple) – 输入的数据。
- **num_places** (int) – 设备编号,默认值为None。 - **num_places** (int) – 设备编号,默认值为None。
返回: 转换结果 **返回**
转换结果
返回类型: dict **返回类型**
dict
...@@ -158,21 +175,26 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut ...@@ -158,21 +175,26 @@ DataFeeder将reader返回的数据转换为可以输入Executor和ParallelExecut
data = [] data = []
.. py:method:: decorate_reader(reader, multi_devices, num_places=None, drop_last=True) decorate_reader(reader, multi_devices, num_places=None, drop_last=True)
'''''''''
将输入数据转换成reader返回的多个mini-batches。每个mini-batch分别送入各设备中。 将输入数据转换成reader返回的多个mini-batches。每个mini-batch分别送入各设备中。
参数: **参数**
- **reader** (function) – reader是可以生成数据的函数。 - **reader** (function) – reader是可以生成数据的函数。
- **multi_devices** (bool) – 是否用多个设备。 - **multi_devices** (bool) – 是否用多个设备。
- **num_places** (int) – 如果multi_devices是True, 你可以指定GPU的使用数量, 如果multi_devices是None, 会使用当前机器的所有GPU ,默认值None。 - **num_places** (int) – 如果multi_devices是True, 你可以指定GPU的使用数量, 如果multi_devices是None, 会使用当前机器的所有GPU ,默认值None。
- **drop_last** (bool) – 如果最后一个batch的大小小于batch_size,选择是否删除最后一个batch,默认值True。 - **drop_last** (bool) – 如果最后一个batch的大小小于batch_size,选择是否删除最后一个batch,默认值True。
返回: 转换结果 **返回**
转换结果
返回类型: dict **返回类型**
dict
抛出异常: ``ValueError`` – 如果drop_last为False并且数据batch和设备数目不匹配。 **抛出异常**
``ValueError`` – 如果drop_last为False并且数据batch和设备数目不匹配。
**代码示例** **代码示例**
......
...@@ -12,7 +12,7 @@ Reader ...@@ -12,7 +12,7 @@ Reader
Data Reader Interface Data Reader Interface
====================================== ::::::::::::
的确,data reader不必是读取和生成数据项的函数,它可以是任何不带参数的函数来创建一个iterable(任何东西都可以被用于 ``for x in iterable`` ): 的确,data reader不必是读取和生成数据项的函数,它可以是任何不带参数的函数来创建一个iterable(任何东西都可以被用于 ``for x in iterable`` ):
...@@ -44,57 +44,67 @@ Data Reader Interface ...@@ -44,57 +44,67 @@ Data Reader Interface
yield numpy.random.uniform(-1, 1, size=width*height), label yield numpy.random.uniform(-1, 1, size=width*height), label
return reader return reader
方法
:::::::::
.. py:function:: paddle.reader.buffered(reader, size) paddle.reader.buffered(reader, size)
'''''''''
创建缓冲数据读取器。 创建缓冲数据读取器。
缓冲数据reader将读取数据条目并将其保存到缓冲区中。只要缓冲区不为空,就将继续从缓冲数据读取器读取数据。 缓冲数据reader将读取数据条目并将其保存到缓冲区中。只要缓冲区不为空,就将继续从缓冲数据读取器读取数据。
参数: **参数**
- **reader** (callable) - 要读取的数据读取器 - **reader** (callable) - 要读取的数据读取器
- **size** (int) - 最大缓冲 - **size** (int) - 最大缓冲
返回:缓冲数据的读取器 **返回**
缓冲数据的读取器
.. py:function:: paddle.reader.chain(*readers) paddle.reader.chain(*readers)
'''''''''
**注意:paddle.reader.chain是paddle.fluid.io.chain的别名,推荐使用paddle.fluid.io.chain。** **注意:paddle.reader.chain是paddle.fluid.io.chain的别名,推荐使用paddle.fluid.io.chain。**
详见 :ref:`cn_api_fluid_io_chain` 接口的使用文档。 详见 :ref:`cn_api_fluid_io_chain` 接口的使用文档。
.. py:function:: paddle.reader.shuffle(reader, buf_size) paddle.reader.shuffle(reader, buf_size)
'''''''''
**注意:paddle.reader.shuffle是paddle.fluid.io.shuffle的别名,推荐使用paddle.fluid.io.shuffle。** **注意:paddle.reader.shuffle是paddle.fluid.io.shuffle的别名,推荐使用paddle.fluid.io.shuffle。**
详见 :ref:`cn_api_fluid_io_shuffle` 接口的使用文档。 详见 :ref:`cn_api_fluid_io_shuffle` 接口的使用文档。
.. py:function:: paddle.reader.firstn(reader, n) paddle.reader.firstn(reader, n)
'''''''''
**注意:paddle.reader.firstn是paddle.fluid.io.firstn的别名,推荐使用paddle.fluid.io.firstn。** **注意:paddle.reader.firstn是paddle.fluid.io.firstn的别名,推荐使用paddle.fluid.io.firstn。**
详见 :ref:`cn_api_fluid_io_firstn` 接口的使用文档。 详见 :ref:`cn_api_fluid_io_firstn` 接口的使用文档。
.. py:function:: paddle.reader.xmap_readers(mapper, reader, process_num, buffer_size, order=False) paddle.reader.xmap_readers(mapper, reader, process_num, buffer_size, order=False)
'''''''''
通过多线程方式,通过用户自定义的映射器mapper来映射reader返回的样本(到输出队列)。 通过多线程方式,通过用户自定义的映射器mapper来映射reader返回的样本(到输出队列)。
参数: **参数**
- **mapper** (callable) - 一种映射reader数据的函数。 - **mapper** (callable) - 一种映射reader数据的函数。
- **reader** (callable) - 产生数据的reader。 - **reader** (callable) - 产生数据的reader。
- **process_num** (int) - 用于处理样本的线程数目。 - **process_num** (int) - 用于处理样本的线程数目。
- **buffer_size** (int) - 存有待读取数据的队列的大小。 - **buffer_size** (int) - 存有待读取数据的队列的大小。
- **order** (bool) - 是否保持原始reader的数据顺序。 默认为False。 - **order** (bool) - 是否保持原始reader的数据顺序。 默认为False。
返回:一个将原数据进行映射后的decorated reader。 **返回**
一个将原数据进行映射后的decorated reader。
返回类型: callable **返回类型**
.. py:class:: paddle.reader.PipeReader(command, bufsize=8192, file_type='plain') callable
paddle.reader.PipeReader(command, bufsize=8192, file_type='plain')
'''''''''
PipeReader通过流从一个命令中读取数据,将它的stdout放到管道缓冲区中,并将其重定向到解析器进行解析,然后根据需要的格式生成数据。 PipeReader通过流从一个命令中读取数据,将它的stdout放到管道缓冲区中,并将其重定向到解析器进行解析,然后根据需要的格式生成数据。
...@@ -112,22 +122,26 @@ PipeReader通过流从一个命令中读取数据,将它的stdout放到管道 ...@@ -112,22 +122,26 @@ PipeReader通过流从一个命令中读取数据,将它的stdout放到管道
sample = l.split(" ") sample = l.split(" ")
yield sample yield sample
get_line(cut_lines=True, line_break='\n')
'''''''''
.. py:method:: get_line(cut_lines=True, line_break='\n')
**参数**
参数:
- **cut_lines** (bool) - 将缓冲区分行。 - **cut_lines** (bool) - 将缓冲区分行。
- **line_break** (string) - 文件中的行分割符,比如 ‘\\n’ 或者 ‘\\r’。 - **line_break** (string) - 文件中的行分割符,比如 ‘\\n’ 或者 ‘\\r’。
返回:一行或者一段缓冲区。 **返回**
一行或者一段缓冲区。
返回类型: string **返回类型**
string
.. py:function:: paddle.reader.multiprocess_reader(readers, use_pipe=True, queue_size=1000) paddle.reader.multiprocess_reader(readers, use_pipe=True, queue_size=1000)
'''''''''
多进程reader使用python多进程从reader中读取数据,然后使用multi process.queue或multi process.pipe合并所有数据。进程号等于输入reader的编号,每个进程调用一个reader。 多进程reader使用python多进程从reader中读取数据,然后使用multi process.queue或multi process.pipe合并所有数据。进程号等于输入reader的编号,每个进程调用一个reader。
...@@ -147,15 +161,18 @@ multiprocess.queue需要/dev/shm的rw访问权限,某些平台不支持。 ...@@ -147,15 +161,18 @@ multiprocess.queue需要/dev/shm的rw访问权限,某些平台不支持。
.. py:class:: paddle.reader.Fake paddle.reader.Fake
'''''''''
Fakereader将缓存它读取的第一个数据,并将其输出data_num次。它用于缓存来自真实reader的数据,并将其用于速度测试。 Fakereader将缓存它读取的第一个数据,并将其输出data_num次。它用于缓存来自真实reader的数据,并将其用于速度测试。
参数: **参数**
- **reader** – 原始读取器。 - **reader** – 原始读取器。
- **data_num** – reader产生数据的次数 。 - **data_num** – reader产生数据的次数 。
返回: 一个Fake读取器 **返回**
一个Fake读取器
**代码示例** **代码示例**
...@@ -168,4 +185,3 @@ Fakereader将缓存它读取的第一个数据,并将其输出data_num次。 ...@@ -168,4 +185,3 @@ Fakereader将缓存它读取的第一个数据,并将其输出data_num次。
fake_reader = Fake()(reader, 100) fake_reader = Fake()(reader, 100)
...@@ -5,27 +5,28 @@ Conll05 ...@@ -5,27 +5,28 @@ Conll05
Conll05数据集。Paddle深度学习基础中的语义角色标注文档使用这个数据集为例。因为Conll05数据集不是免费公开的,所以默认下载的url是Conll05的测试集(它是公开的)。用户可以将url和md5更改为其Conll数据集。并采用基于维基百科语料库的预训练词向量模型对SRL模型进行初始化。 Conll05数据集。Paddle深度学习基础中的语义角色标注文档使用这个数据集为例。因为Conll05数据集不是免费公开的,所以默认下载的url是Conll05的测试集(它是公开的)。用户可以将url和md5更改为其Conll数据集。并采用基于维基百科语料库的预训练词向量模型对SRL模型进行初始化。
方法
:::::::::
.. py:function:: paddle.dataset.conll05.get_dict() paddle.dataset.conll05.get_dict()
'''''''''
获取维基百科语料库的单词、动词和标签字典。 获取维基百科语料库的单词、动词和标签字典。
.. py:function:: paddle.dataset.conll05.get_embedding() paddle.dataset.conll05.get_embedding()
'''''''''
获取基于维基百科语料库的训练词向量。 获取基于维基百科语料库的训练词向量。
.. py:function:: paddle.dataset.conll05.test() paddle.dataset.conll05.test()
'''''''''
Conll05测试数据集的creator。 Conll05测试数据集的creator。
因为训练数据集不是免费公开的,所以用测试数据集进行训练。它返回一个reader creator,reader中的每个样本都有九个特征,包括句子序列、谓词、谓词上下文、谓词上下文标记和标记序列。 因为训练数据集不是免费公开的,所以用测试数据集进行训练。它返回一个reader creator,reader中的每个样本都有九个特征,包括句子序列、谓词、谓词上下文、谓词上下文标记和标记序列。
返回: 训练数据集的reader creator **返回**
训练数据集的reader creator
返回类型:callable
**返回类型**
callable
...@@ -13,57 +13,74 @@ cifar-100数据集与cifar-10类似,只是它有100个类,每个类包含600 ...@@ -13,57 +13,74 @@ cifar-100数据集与cifar-10类似,只是它有100个类,每个类包含600
.. py:function:: paddle.dataset.cifar.train100() 方法
::::::::::::
paddle.dataset.cifar.train100()
'''''''''
CIFAR-100训练数据集的creator。 CIFAR-100训练数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。 它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。
返回: 训练数据集的reader creator。 **返回**
训练数据集的reader creator。
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.cifar.test100() paddle.dataset.cifar.test100()
'''''''''
CIFAR-100测试数据集的creator。 CIFAR-100测试数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。 它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。
返回: 测试数据集的reader creator **返回**
测试数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.cifar.train10(cycle=False) paddle.dataset.cifar.train10(cycle=False)
'''''''''
CIFAR-10训练数据集的creator。 CIFAR-10训练数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。 它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。
参数: **参数**
- **cycle** (bool) – 是否循环使用数据集 - **cycle** (bool) – 是否循环使用数据集
返回: 训练数据集的reader creator **返回**
训练数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.cifar.test10(cycle=False) paddle.dataset.cifar.test10(cycle=False)
'''''''''
CIFAR-10测试数据集的creator。 CIFAR-10测试数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。 它返回一个reader creator, reader中的每个样本的图像像素范围是[0,1],标签范围是[0,9]。
参数: **参数**
- **cycle** (bool) – 是否循环使用数据集 - **cycle** (bool) – 是否循环使用数据集
返回: 测试数据集的reader creator **返回**
测试数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.cifar.convert(path) paddle.dataset.cifar.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
...@@ -8,12 +8,16 @@ IMDB数据集。 ...@@ -8,12 +8,16 @@ IMDB数据集。
此模块将从 http://ai.stanford.edu/%7Eamaas/data/sentiment/aclImdb_v1.tar.gz 下载数据集。这个数据集包含了25000条训练用电影评论数据,25000条测试用评论数据,且这些评论带有明显情感倾向。此外,该模块还提供了用于构建词典的API。 此模块将从 http://ai.stanford.edu/%7Eamaas/data/sentiment/aclImdb_v1.tar.gz 下载数据集。这个数据集包含了25000条训练用电影评论数据,25000条测试用评论数据,且这些评论带有明显情感倾向。此外,该模块还提供了用于构建词典的API。
.. py:function:: paddle.dataset.imdb.build_dict(pattern, cutoff) 方法
::::::::::::
paddle.dataset.imdb.build_dict(pattern, cutoff)
'''''''''
从语料库构建一个单词字典,词典的键是word,值是这些单词从0开始的ID。 从语料库构建一个单词字典,词典的键是word,值是这些单词从0开始的ID。
.. py:function:: paddle.dataset.imdb.train(word_idx) paddle.dataset.imdb.train(word_idx)
'''''''''
IMDB训练数据集的creator。 IMDB训练数据集的creator。
...@@ -21,29 +25,37 @@ IMDB训练数据集的creator。 ...@@ -21,29 +25,37 @@ IMDB训练数据集的creator。
它返回一个reader creator, reader中的每个样本的是一个从0开始的ID序列,标签范围是[0,1]。 它返回一个reader creator, reader中的每个样本的是一个从0开始的ID序列,标签范围是[0,1]。
参数: **参数**
- **word_idx** (dict) – 词典 - **word_idx** (dict) – 词典
返回: 训练数据集的reader creator **返回**
训练数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.imdb.test(word_idx) paddle.dataset.imdb.test(word_idx)
'''''''''
IMDB测试数据集的creator。 IMDB测试数据集的creator。
它返回一个reader creator, reader中的每个样本的是一个从0开始的ID序列,标签范围是[0,1]。 它返回一个reader creator, reader中的每个样本的是一个从0开始的ID序列,标签范围是[0,1]。
参数: **参数**
- **word_idx** (dict) – 词典 - **word_idx** (dict) – 词典
返回: 训练数据集的reader creator **返回**
训练数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.imdb.convert(path) paddle.dataset.imdb.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
...@@ -7,42 +7,54 @@ imikolov的简化版数据集。 ...@@ -7,42 +7,54 @@ imikolov的简化版数据集。
此模块将从 http://www.fit.vutbr.cz/~imikolov/rnnlm/ 下载数据集,并将训练集和测试集解析为paddle reader creator。 此模块将从 http://www.fit.vutbr.cz/~imikolov/rnnlm/ 下载数据集,并将训练集和测试集解析为paddle reader creator。
.. py:function:: paddle.dataset.imikolov.build_dict(min_word_freq=50) 方法
::::::::::::
paddle.dataset.imikolov.build_dict(min_word_freq=50)
'''''''''
从语料库构建一个单词字典,字典的键是word,值是这些单词从0开始的ID。 从语料库构建一个单词字典,字典的键是word,值是这些单词从0开始的ID。
.. py:function:: paddle.dataset.imikolov.train(word_idx, n, data_type=1) paddle.dataset.imikolov.train(word_idx, n, data_type=1)
'''''''''
imikolov训练数据集的creator。 imikolov训练数据集的creator。
它返回一个reader creator, reader中的每个样本的是一个单词ID元组。 它返回一个reader creator, reader中的每个样本的是一个单词ID元组。
参数: **参数**
- **word_idx** (dict) – 词典 - **word_idx** (dict) – 词典
- **n** (int) – 如果类型是ngram,表示滑窗大小;否则表示序列最大长度 - **n** (int) – 如果类型是ngram,表示滑窗大小;否则表示序列最大长度
- **data_type** (数据类型的成员变量(NGRAM 或 SEQ)) – 数据类型 (ngram 或 sequence) - **data_type** (数据类型的成员变量(NGRAM 或 SEQ)) – 数据类型 (ngram 或 sequence)
返回: 训练数据集的reader creator **返回**
训练数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function::paddle.dataset.imikolov.test(word_idx, n, data_type=1) paddle.dataset.imikolov.test(word_idx, n, data_type=1)
'''''''''
imikolov测试数据集的creator。 imikolov测试数据集的creator。
它返回一个reader creator, reader中的每个样本的是一个单词ID元组。 它返回一个reader creator, reader中的每个样本的是一个单词ID元组。
参数: **参数**
- **word_idx** (dict) – 词典 - **word_idx** (dict) – 词典
- **n** (int) – 如果类型是ngram,表示滑窗大小;否则表示序列最大长度 - **n** (int) – 如果类型是ngram,表示滑窗大小;否则表示序列最大长度
- **data_type** (数据类型的成员变量(NGRAM 或 SEQ)) – 数据类型 (ngram 或 sequence) - **data_type** (数据类型的成员变量(NGRAM 或 SEQ)) – 数据类型 (ngram 或 sequence)
返回: 测试数据集的reader creator **返回**
测试数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.imikolov.convert(path) paddle.dataset.imikolov.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
...@@ -9,31 +9,40 @@ MNIST数据集。 ...@@ -9,31 +9,40 @@ MNIST数据集。
.. py:function:: paddle.dataset.mnist.train() 方法
::::::::::::
paddle.dataset.mnist.train()
'''''''''
MNIST训练数据集的creator。 MNIST训练数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[-1,1],标签范围是[0,9]。 它返回一个reader creator, reader中的每个样本的图像像素范围是[-1,1],标签范围是[0,9]。
返回: 训练数据的reader creator **返回**
训练数据的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.mnist.test() paddle.dataset.mnist.test()
'''''''''
MNIST测试数据集的creator。 MNIST测试数据集的creator。
它返回一个reader creator, reader中的每个样本的图像像素范围是[-1,1],标签范围是[0,9]。 它返回一个reader creator, reader中的每个样本的图像像素范围是[-1,1],标签范围是[0,9]。
返回: 测试数据集的reader creator **返回**
测试数据集的reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.mnist.convert(path) paddle.dataset.mnist.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
...@@ -9,47 +9,59 @@ Movielens 1-M数据集。 ...@@ -9,47 +9,59 @@ Movielens 1-M数据集。
Movielens 1-M数据集是由GroupLens Research采集的6000个用户对4000个电影的的100万个评级。 该模块将从 http://files.grouplens.org/datasets/movielens/ml-1m.zip 下载Movielens 1-M数据集,并将训练集和测试集解析为paddle reader creator。 Movielens 1-M数据集是由GroupLens Research采集的6000个用户对4000个电影的的100万个评级。 该模块将从 http://files.grouplens.org/datasets/movielens/ml-1m.zip 下载Movielens 1-M数据集,并将训练集和测试集解析为paddle reader creator。
.. py:function:: paddle.dataset.movielens.get_movie_title_dict() 方法
::::::::::::
paddle.dataset.movielens.get_movie_title_dict()
'''''''''
获取电影标题词典。 获取电影标题词典。
.. py:function:: paddle.dataset.movielens.max_movie_id() paddle.dataset.movielens.max_movie_id()
'''''''''
获取电影ID的最大值。 获取电影ID的最大值。
.. py:function:: paddle.dataset.movielens.max_user_id() paddle.dataset.movielens.max_user_id()
'''''''''
获取用户ID的最大值。 获取用户ID的最大值。
.. py:function:: paddle.dataset.movielens.max_job_id() paddle.dataset.movielens.max_job_id()
'''''''''
获取职业ID的最大值。 获取职业ID的最大值。
.. py:function:: paddle.dataset.movielens.movie_categories() paddle.dataset.movielens.movie_categories()
'''''''''
获取电影类别词典。 获取电影类别词典。
.. py:function:: paddle.dataset.movielens.user_info() paddle.dataset.movielens.user_info()
'''''''''
获取用户信息词典。 获取用户信息词典。
.. py:function:: paddle.dataset.movielens.movie_info() paddle.dataset.movielens.movie_info()
'''''''''
获取电影信息词典。 获取电影信息词典。
.. py:function:: paddle.dataset.movielens.convert(path) paddle.dataset.movielens.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
.. py:class:: paddle.dataset.movielens.MovieInfo(index, categories, title) paddle.dataset.movielens.MovieInfo(index, categories, title)
'''''''''
电影ID,标题和类别信息存储在MovieInfo中。 电影ID,标题和类别信息存储在MovieInfo中。
.. py:class:: paddle.dataset.movielens.UserInfo(index, gender, age, job_id) paddle.dataset.movielens.UserInfo(index, gender, age, job_id)
'''''''''
用户ID,性别,年龄和工作信息存储在UserInfo中。 用户ID,性别,年龄和工作信息存储在UserInfo中。
......
...@@ -6,21 +6,28 @@ sentiment ...@@ -6,21 +6,28 @@ sentiment
脚本获取并预处理由NLTK提供的movie_reviews数据集。 脚本获取并预处理由NLTK提供的movie_reviews数据集。
.. py:function:: paddle.dataset.sentiment.get_word_dict() 方法
::::::::::::
paddle.dataset.sentiment.get_word_dict()
'''''''''
按照样本中出现的单词的频率对单词进行排序。 按照样本中出现的单词的频率对单词进行排序。
返回: words_freq_sorted **返回**
words_freq_sorted
.. py:function:: paddle.dataset.sentiment.train() paddle.dataset.sentiment.train()
'''''''''
默认的训练集reader creator。 默认的训练集reader creator。
.. py:function:: paddle.dataset.sentiment.test() paddle.dataset.sentiment.test()
'''''''''
默认的测试集reader creator。 默认的测试集reader creator。
.. py:function:: paddle.dataset.sentiment.convert(path) paddle.dataset.sentiment.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
...@@ -11,19 +11,25 @@ UCI Housing数据集。 ...@@ -11,19 +11,25 @@ UCI Housing数据集。
.. py:function:: paddle.dataset.uci_housing.train() 方法
::::::::::::
paddle.dataset.uci_housing.train()
'''''''''
UCI_HOUSING训练集creator。 UCI_HOUSING训练集creator。
它返回一个reader creator,reader中的每个样本都是正则化和价格编号后的特征。 它返回一个reader creator,reader中的每个样本都是正则化和价格编号后的特征。
返回:训练集reader creator **返回**
训练集reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.uci_housing.test() paddle.dataset.uci_housing.test()
'''''''''
UCI_HOUSING测试集creator。 UCI_HOUSING测试集creator。
...@@ -31,9 +37,11 @@ UCI_HOUSING测试集creator。 ...@@ -31,9 +37,11 @@ UCI_HOUSING测试集creator。
它返回一个reader creator,reader中的每个样本都是正则化和价格编号后的特征。 它返回一个reader creator,reader中的每个样本都是正则化和价格编号后的特征。
返回:测试集reader creator **返回**
测试集reader creator
返回类型:callable **返回类型**
callable
......
...@@ -6,33 +6,42 @@ wmt14 ...@@ -6,33 +6,42 @@ wmt14
WMT14数据集。 原始WMT14数据集太大,所以提供了一组小数据集。 该模块将从 http://paddlepaddle.cdn.bcebos.com/demo/wmt_shrinked_data/wmt14.tgz 下载数据集,并将训练集和测试集解析为paddle reader creator。 WMT14数据集。 原始WMT14数据集太大,所以提供了一组小数据集。 该模块将从 http://paddlepaddle.cdn.bcebos.com/demo/wmt_shrinked_data/wmt14.tgz 下载数据集,并将训练集和测试集解析为paddle reader creator。
.. py:function:: paddle.dataset.wmt14.train(dict_size) 方法
::::::::::::
paddle.dataset.wmt14.train(dict_size)
'''''''''
WMT14训练集creator。 WMT14训练集creator。
它返回一个reader creator,reader中的每个样本都是源语言单词ID序列,目标语言单词ID序列和下一个单词ID序列。 它返回一个reader creator,reader中的每个样本都是源语言单词ID序列,目标语言单词ID序列和下一个单词ID序列。
返回:训练集reader creator **返回**
训练集reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.wmt14.test(dict_size) paddle.dataset.wmt14.test(dict_size)
'''''''''
WMT14测试集creator。 WMT14测试集creator。
它返回一个reader creator,reader中的每个样本都是源语言单词ID序列,目标语言单词ID序列和下一个单词ID序列。 它返回一个reader creator,reader中的每个样本都是源语言单词ID序列,目标语言单词ID序列和下一个单词ID序列。
返回:测试集reader creator **返回**
测试集reader creator
返回类型:callable **返回类型**
callable
.. py:function:: paddle.dataset.wmt14.convert(path) paddle.dataset.wmt14.convert(path)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
...@@ -10,7 +10,10 @@ ACL2016多模式机器翻译。 有关更多详细信息,请访问此网站: ...@@ -10,7 +10,10 @@ ACL2016多模式机器翻译。 有关更多详细信息,请访问此网站:
@article{elliott-EtAl:2016:VL16, author = {{Elliott}, D. and {Frank}, S. and {Sima”an}, K. and {Specia}, L.}, title = {Multi30K: Multilingual English-German Image Descriptions}, booktitle = {Proceedings of the 6th Workshop on Vision and Language}, year = {2016}, pages = {70–74}, year = 2016 @article{elliott-EtAl:2016:VL16, author = {{Elliott}, D. and {Frank}, S. and {Sima”an}, K. and {Specia}, L.}, title = {Multi30K: Multilingual English-German Image Descriptions}, booktitle = {Proceedings of the 6th Workshop on Vision and Language}, year = {2016}, pages = {70–74}, year = 2016
} }
.. py:function:: paddle.dataset.wmt16.train(src_dict_size, trg_dict_size, src_lang='en') 方法
::::::::::::
paddle.dataset.wmt16.train(src_dict_size, trg_dict_size, src_lang='en')
'''''''''
WMT16训练集reader(读取器)。 WMT16训练集reader(读取器)。
...@@ -20,18 +23,22 @@ WMT16训练集reader(读取器)。 ...@@ -20,18 +23,22 @@ WMT16训练集reader(读取器)。
paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的tokenized版本: https://github.com/moses-smt/mosesdecoder/blob/master/scripts/tokenizer/tokenizer.perl paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的tokenized版本: https://github.com/moses-smt/mosesdecoder/blob/master/scripts/tokenizer/tokenizer.perl
参数: **参数**
- **src_dict_size** (int) – 源语言词典的大小。三个特殊标记将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。 - **src_dict_size** (int) – 源语言词典的大小。三个特殊标记将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。
- **trg_dict_size** (int) – 目标语言字典的大小。三个特殊标记将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。 - **trg_dict_size** (int) – 目标语言字典的大小。三个特殊标记将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。
- **src_lang** (string) – 一个字符串,指示哪种语言是源语言。 可用选项包括:英语为“en”,德国为“de”。 - **src_lang** (string) – 一个字符串,指示哪种语言是源语言。 可用选项包括:英语为“en”,德国为“de”。
返回: 读训练集数据的reader **返回**
读训练集数据的reader
返回类型: callable **返回类型**
callable
.. py:function:: paddle.dataset.wmt16.test(src_dict_size, trg_dict_size, src_lang='en') paddle.dataset.wmt16.test(src_dict_size, trg_dict_size, src_lang='en')
'''''''''
WMT16测试(test)集reader。 WMT16测试(test)集reader。
...@@ -43,18 +50,22 @@ WMT16测试(test)集reader。 ...@@ -43,18 +50,22 @@ WMT16测试(test)集reader。
paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的tokenized版本: https://github.com/moses-smt/mosesdecoder/blob/master/scripts/tokenizer/tokenizer.perl paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的tokenized版本: https://github.com/moses-smt/mosesdecoder/blob/master/scripts/tokenizer/tokenizer.perl
参数: **参数**
- **src_dict_size** (int) – 源语言词典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。 - **src_dict_size** (int) – 源语言词典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。
- **trg_dict_size** (int) – 目标语言字典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。 - **trg_dict_size** (int) – 目标语言字典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。
- **src_lang** (string) – 一个字符串,指示哪种语言是源语言。 可用选项包括:英语为“en”,德国为“de”。 - **src_lang** (string) – 一个字符串,指示哪种语言是源语言。 可用选项包括:英语为“en”,德国为“de”。
返回: 读测试集数据的reader **返回**
读测试集数据的reader
返回类型: callable **返回类型**
callable
.. py:function:: paddle.dataset.wmt16.validation(src_dict_size, trg_dict_size, src_lang='en') paddle.dataset.wmt16.validation(src_dict_size, trg_dict_size, src_lang='en')
'''''''''
WMT16验证(validation)集reader。 WMT16验证(validation)集reader。
...@@ -66,15 +77,18 @@ paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的toke ...@@ -66,15 +77,18 @@ paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的toke
参数: **参数**
- **src_dict_size** (int) – 源语言词典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。 - **src_dict_size** (int) – 源语言词典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。
- **trg_dict_size** (int) – 目标语言字典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。 - **trg_dict_size** (int) – 目标语言字典的大小。三个特殊token将被添加到所述词典:<S>为起始标记,<E>为结束标记,<UNK>为未知单词。
- **src_lang** (string) – 一个字符串,指示哪种语言是源语言。 可用选项包括:英语为“en”,德国为“de”。 - **src_lang** (string) – 一个字符串,指示哪种语言是源语言。 可用选项包括:英语为“en”,德国为“de”。
返回: 读集数据的reader **返回**
读集数据的reader
返回类型: callable **返回类型**
callable
...@@ -82,30 +96,36 @@ paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的toke ...@@ -82,30 +96,36 @@ paddle.dataset.wmt16使用moses的tokenization脚本提供原始数据集的toke
.. py:function:: paddle.dataset.wmt16.get_dict(lang, dict_size, reverse=False) paddle.dataset.wmt16.get_dict(lang, dict_size, reverse=False)
'''''''''
返回指定语言的词典(word dictionary)。 返回指定语言的词典(word dictionary)。
参数: **参数**
- **lang** (string) - 表示哪种语言是源语言的字符串。 可用选项包括:英语为“en”,德国为“de”。 - **lang** (string) - 表示哪种语言是源语言的字符串。 可用选项包括:英语为“en”,德国为“de”。
- **dict_size** (int) - 指定语言字典的大小。 - **dict_size** (int) - 指定语言字典的大小。
- **reverse** (bool) - 如果reverse设置为False,则返回的python字典将使用word作为键并使用index作为值。 如果reverse设置为True,则返回的python字典将使用index作为键,将word作为值。 - **reverse** (bool) - 如果reverse设置为False,则返回的python字典将使用word作为键并使用index作为值。 如果reverse设置为True,则返回的python字典将使用index作为键,将word作为值。
返回:特定语言的单词词典。 **返回**
特定语言的单词词典。
返回类型: dict **返回类型**
dict
.. py:function:: paddle.dataset.wmt16.fetch() paddle.dataset.wmt16.fetch()
'''''''''
下载完整的数据集。 下载完整的数据集。
.. py:function:: paddle.dataset.wmt16.convert(path, src_dict_size, trg_dict_size, src_lang) paddle.dataset.wmt16.convert(path, src_dict_size, trg_dict_size, src_lang)
'''''''''
将数据集转换为recordio格式。 将数据集转换为recordio格式。
......
.. _cn_api_fluid_dataset_DatasetFactory: .. _cn_api_fluid_dataset_DatasetFactory:
DatasetFactory DatasetFactory
------------------------------- -------------------------------
.. py:class:: paddle.fluid.dataset.DatasetFactory .. py:class:: paddle.fluid.dataset.DatasetFactory
DatasetFactory是一个按数据集名称创建数据集的 "工厂",可以创建“QueueDataset”,“InMemoryDataset”或“FileInstantDataset”,默认为“QueueDataset”。 DatasetFactory是一个按数据集名称创建数据集的 "工厂",可以创建“QueueDataset”,“InMemoryDataset”或“FileInstantDataset”,默认为“QueueDataset”。
**代码示例** 代码示例
::::::::::::
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
.. py:method:: create_dataset(datafeed_class='QueueDataset')
方法
创建“QueueDataset”,“InMemoryDataset” 或 “FileInstantDataset”,默认为“QueueDataset”。 ::::::::::::
create_dataset(datafeed_class='QueueDataset')
参数: ''''''''''''
- **datafeed_class** (str) – datafeed类名,为QueueDataset或InMemoryDataset。默认为QueueDataset。
创建“QueueDataset”,“InMemoryDataset” 或 “FileInstantDataset”,默认为“QueueDataset”。
**代码示例**:
.. code-block:: python **参数**
import paddle.fluid as fluid - **datafeed_class** (str) – datafeed类名,为QueueDataset或InMemoryDataset。默认为QueueDataset。
dataset = fluid.DatasetFactory().create_dataset()
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset()
.. _cn_api_fluid_dataset_InMemoryDataset: .. _cn_api_fluid_dataset_InMemoryDataset:
InMemoryDataset InMemoryDataset
------------------------------- -------------------------------
.. py:class:: paddle.fluid.dataset.InMemoryDataset .. py:class:: paddle.fluid.dataset.InMemoryDataset
InMemoryDataset会向内存中加载数据并在训练前缓冲数据。此类由DatasetFactory创建。 InMemoryDataset会向内存中加载数据并在训练前缓冲数据。此类由DatasetFactory创建。
**代码示例**: 代码示例
::::::::::::
.. code-block:: python
.. code-block:: python
dataset = paddle.fluid.DatasetFactory().create_dataset(“InMemoryDataset”)
dataset = paddle.fluid.DatasetFactory().create_dataset(“InMemoryDataset”)
.. py:method:: set_queue_num(queue_num)
方法
设置 ``Dataset`` 输出队列数量,训练进程会从队列中获取数据。 ::::::::::::
参数: set_queue_num(queue_num)
- **queue_num** (int) - dataset输出队列数量 '''''''''
**代码示例**: 设置 ``Dataset`` 输出队列数量,训练进程会从队列中获取数据。
.. code-block:: python **参数**
import paddle.fluid as fluid - **queue_num** (int) - dataset输出队列数量
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
dataset.set_queue_num(12) **代码示例**
.. py:method:: set_fleet_send_batch_size(fleet_send_batch_size) .. code-block:: python
设置发送batch的大小 import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
参数: dataset.set_queue_num(12)
- **fleet_send_batch_size** (int) - 设置发送batch的大小。
set_fleet_send_batch_size(fleet_send_batch_size)
**代码示例** '''''''''
.. code-block:: python 设置发送batch的大小
import paddle.fluid as fluid **参数**
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
dataset.set_fleet_send_batch_size(800) - **fleet_send_batch_size** (int) - 设置发送batch的大小。
.. py:method:: set_merge_by_lineid(var_list, erase_duplicate_feas=True, min_merge_size=2, keep_unmerged-ins=True) **代码示例**
通过样本id来设置合并,一些线id的实例将会在shuffle之后进行合并,你应该在一个data生成器里面解析样本id。 .. code-block:: python
参数: import paddle.fluid as fluid
- **var_list** (list) - 可以被合并的特征列表,其中的每一个元素都是一个 ``Variable`` 。一些类特征我们通常不把它们合并为同样的样本id,所以用户应当指定哪个类特征可以被合并。 dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
- **erase_duplicate_feas** (bool) - 合并的时候是否删除重复的特征值。默认为True。 dataset.set_fleet_send_batch_size(800)
- **min_merge_size** (int) - 合并的最小数量。默认为2。
- **keep_unmerged_ins** (bool) - 是否保留没有合并的样本,比如有着独特id的样本,或者重复id的数量小于 ``min_merge_size`` 的样本。 set_merge_by_lineid(var_list, erase_duplicate_feas=True, min_merge_size=2, keep_unmerged-ins=True)
'''''''''
.. code-block:: python
通过样本id来设置合并,一些线id的实例将会在shuffle之后进行合并,你应该在一个data生成器里面解析样本id。
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") **参数**
dataset.set_merge_by_lineid()
- **var_list** (list) - 可以被合并的特征列表,其中的每一个元素都是一个 ``Variable`` 。一些类特征我们通常不把它们合并为同样的样本id,所以用户应当指定哪个类特征可以被合并。
.. py:method:: load_into_memory() - **erase_duplicate_feas** (bool) - 合并的时候是否删除重复的特征值。默认为True。
- **min_merge_size** (int) - 合并的最小数量。默认为2。
向内存中加载数据。 - **keep_unmerged_ins** (bool) - 是否保留没有合并的样本,比如有着独特id的样本,或者重复id的数量小于 ``min_merge_size`` 的样本。
**代码示例**: .. code-block:: python
.. code-block:: python import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
import paddle.fluid as fluid dataset.set_merge_by_lineid()
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"] load_into_memory()
dataset.set_filelist(filelist) '''''''''
dataset.load_into_memory()
向内存中加载数据。
.. py:method:: preload_into_memory()
**代码示例**
向内存中以异步模式加载数据。
.. code-block:: python
**代码示例**:
import paddle.fluid as fluid
.. code-block:: python dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"]
import paddle.fluid as fluid dataset.set_filelist(filelist)
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") dataset.load_into_memory()
filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist) preload_into_memory()
dataset.preload_into_memory() '''''''''
dataset.wait_preload_done()
向内存中以异步模式加载数据。
.. py:method:: wait_preload_done()
**代码示例**
等待 ``preload_into_memory`` 完成。
.. code-block:: python
**代码示例**:
import paddle.fluid as fluid
.. code-block:: python dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"]
import paddle.fluid as fluid dataset.set_filelist(filelist)
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") dataset.preload_into_memory()
filelist = ["a.txt", "b.txt"] dataset.wait_preload_done()
dataset.set_filelist(filelist)
dataset.preload_into_memory() wait_preload_done()
dataset.wait_preload_done() '''''''''
.. py:method:: local_shuffle() 等待 ``preload_into_memory`` 完成。
局域shuffle。 **代码示例**
**代码示例**: .. code-block:: python
.. code-block:: python import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
import paddle.fluid as fluid filelist = ["a.txt", "b.txt"]
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") dataset.set_filelist(filelist)
filelist = ["a.txt", "b.txt"] dataset.preload_into_memory()
dataset.set_filelist(filelist) dataset.wait_preload_done()
dataset.load_into_memory()
dataset.local_shuffle() local_shuffle()
'''''''''
.. py:method:: global_shuffle(fleet=None) 局域shuffle。
全局shuffle。 **代码示例**
只能用在分布式模式(单机多进程或多机多进程)中。您如果在分布式模式中运行,应当传递fleet而非None。 .. code-block:: python
**代码示例**: import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
.. code-block:: python filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist)
import paddle.fluid as fluid dataset.load_into_memory()
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet dataset.local_shuffle()
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist) global_shuffle(fleet=None)
dataset.load_into_memory() '''''''''
dataset.global_shuffle(fleet)
全局shuffle。
参数:
- **fleet** (Fleet) – fleet单例。默认为None。 只能用在分布式模式(单机多进程或多机多进程)中。您如果在分布式模式中运行,应当传递fleet而非None。
**代码示例**
.. py:method:: release_memory()
.. code-block:: python
当数据不再使用时,释放InMemoryDataset内存数据。
import paddle.fluid as fluid
**代码示例**: from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
.. code-block:: python filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist)
import paddle.fluid as fluid dataset.load_into_memory()
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet dataset.global_shuffle(fleet)
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"] **参数**
dataset.set_filelist(filelist)
dataset.load_into_memory() - **fleet** (Fleet) – fleet单例。默认为None。
dataset.global_shuffle(fleet)
exe = fluid.Executor(fluid.CPUPlace())
exe.run(fluid.default_startup_program()) release_memory()
exe.train_from_dataset(fluid.default_main_program(), dataset) '''''''''
dataset.release_memory()
当数据不再使用时,释放InMemoryDataset内存数据。
.. py:method:: get_memory_data_size(fleet=None)
**代码示例**
用户可以调用此函数以了解加载进内存后所有workers中的样本数量。
.. code-block:: python
.. note::
该函数可能会导致性能不佳,因为它具有barrier。 import paddle.fluid as fluid
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet
参数: dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
- **fleet** (Fleet) – fleet对象。 filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist)
返回:内存数据的大小。 dataset.load_into_memory()
dataset.global_shuffle(fleet)
**代码示例**: exe = fluid.Executor(fluid.CPUPlace())
exe.run(fluid.default_startup_program())
.. code-block:: python exe.train_from_dataset(fluid.default_main_program(), dataset)
dataset.release_memory()
import paddle.fluid as fluid
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet get_memory_data_size(fleet=None)
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset") '''''''''
filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist) 用户可以调用此函数以了解加载进内存后所有workers中的样本数量。
dataset.load_into_memory()
print dataset.get_memory_data_size(fleet) .. note::
该函数可能会导致性能不佳,因为它具有barrier。
.. py:method:: get_shuffle_data_size(fleet=None) **参数**
获取shuffle数据大小,用户可以调用此函数以了解局域/全局shuffle后所有workers中的样本数量。 - **fleet** (Fleet) – fleet对象。
.. note:: **返回**
该函数可能会导致局域shuffle性能不佳,因为它具有barrier。但其不影响局域shuffle。 内存数据的大小。
参数: **代码示例**
- **fleet** (Fleet) – fleet对象。
.. code-block:: python
返回:shuffle数据的大小。
import paddle.fluid as fluid
**代码示例**: from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
.. code-block:: python filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist)
import paddle.fluid as fluid dataset.load_into_memory()
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet print dataset.get_memory_data_size(fleet)
dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"]
dataset.set_filelist(filelist) get_shuffle_data_size(fleet=None)
dataset.load_into_memory() '''''''''
dataset.global_shuffle(fleet)
print dataset.get_shuffle_data_size(fleet) 获取shuffle数据大小,用户可以调用此函数以了解局域/全局shuffle后所有workers中的样本数量。
.. note::
.. py:method:: set_batch_size(batch_size) 该函数可能会导致局域shuffle性能不佳,因为它具有barrier。但其不影响局域shuffle。
设置batch size。在训练期间生效。 **参数**
**代码示例**: - **fleet** (Fleet) – fleet对象。
.. code-block:: python **返回**
shuffle数据的大小。
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() **代码示例**
dataset.set_batch_size(128)
.. code-block:: python
参数:
- **batch_size** (int) - batch size import paddle.fluid as fluid
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet
.. py:method:: set_fea_eval(record_candidate_size, fea_eval=True) dataset = fluid.DatasetFactory().create_dataset("InMemoryDataset")
filelist = ["a.txt", "b.txt"]
设置特征打乱特征验证模式,来修正特征level的重要性, 特征打乱需要 ``fea_eval`` 被设置为True。 dataset.set_filelist(filelist)
dataset.load_into_memory()
参数: dataset.global_shuffle(fleet)
- **record_candidate_size** (int) - 打乱一个特征的候选实例大小 print dataset.get_shuffle_data_size(fleet)
- **fea_eval** (bool) - 是否设置特征验证模式来打乱特征,默认为True。
**代码示例**: set_batch_size(batch_size)
'''''''''
.. code-block:: python
设置batch size。在训练期间生效。
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”) **代码示例**
dataset.set_fea_eval(1000000, True)
.. code-block:: python
.. py:method:: desc()
import paddle.fluid as fluid
为 ``DataFeedDesc`` 返回一个缓存信息。 dataset = fluid.DatasetFactory().create_dataset()
dataset.set_batch_size(128)
**代码示例**:
**参数**
.. code-block:: python
- **batch_size** (int) - batch size
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() set_fea_eval(record_candidate_size, fea_eval=True)
print(dataset.desc()) '''''''''
返回:一个字符串信息 设置特征打乱特征验证模式,来修正特征level的重要性, 特征打乱需要 ``fea_eval`` 被设置为True。
.. py:method:: set_filelist(filelist) **参数**
在当前的worker中设置文件列表。 - **record_candidate_size** (int) - 打乱一个特征的候选实例大小
- **fea_eval** (bool) - 是否设置特征验证模式来打乱特征,默认为True。
**代码示例**:
**代码示例**
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() import paddle.fluid as fluid
dataset.set_filelist(["a.txt", "b.txt"]) dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”)
dataset.set_fea_eval(1000000, True)
参数:
- **filelist** (list) - 文件列表 desc()
'''''''''
.. py:method:: set_hdfs_config(fs_name, fs_ugi)
为 ``DataFeedDesc`` 返回一个缓存信息。
设置hdfs配置:fs名称与ugi。
**代码示例**
**代码示例**:
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
import paddle.fluid as fluid dataset = fluid.DatasetFactory().create_dataset()
dataset = fluid.DatasetFactory().create_dataset() print(dataset.desc())
dataset.set_hdfs_config("my_fs_name", "my_fs_ugi")
**返回**
参数: 一个字符串信息
- **fs_name** (str) - fs名称
- **fs_ugi** (str) - fs ugi set_filelist(filelist)
'''''''''
.. py:method:: set_pipe_command(pipe_coommand)
在当前的worker中设置文件列表。
在当前的 ``dataset`` 中设置pipe命令。pipe命令只能使用UNIX的pipe命令
**代码示例**
**代码示例**:
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
import paddle.fluid as fluid dataset = fluid.DatasetFactory().create_dataset()
dataset = fluid.DatasetFactory().create_dataset() dataset.set_filelist(["a.txt", "b.txt"])
dataset.set_pipe_command("python my_script.py")
**参数**
参数:
- **pipe_command** (str) - pipe命令 - **filelist** (list) - 文件列表
.. py:method:: set_thread(thread_num) set_hdfs_config(fs_name, fs_ugi)
'''''''''
设置进程数量,等于readers的数量。
设置hdfs配置:fs名称与ugi。
**代码示例**:
**代码示例**
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() import paddle.fluid as fluid
dataset.set_thread(12) dataset = fluid.DatasetFactory().create_dataset()
dataset.set_hdfs_config("my_fs_name", "my_fs_ugi")
参数:
- **thread_num** (int) - 进程数量 **参数**
.. py:method:: set_use_var(var_list) - **fs_name** (str) - fs名称
- **fs_ugi** (str) - fs ugi
设置将要使用的 ``Variable`` 。
set_pipe_command(pipe_coommand)
**代码示例**: '''''''''
.. code-block:: python 在当前的 ``dataset`` 中设置pipe命令。pipe命令只能使用UNIX的pipe命令
import paddle.fluid as fluid **代码示例**
dataset = fluid.DatasetFactory().create_dataset()
dataset.set_use_var([data, label]) .. code-block:: python
参数: import paddle.fluid as fluid
- **var_list** (list) - variable 列表 dataset = fluid.DatasetFactory().create_dataset()
dataset.set_pipe_command("python my_script.py")
.. py:method:: slots_shuffle(slots)
**参数**
该方法是在特征层次上的一个打乱方法,经常被用在有着较大缩放率实例的稀疏矩阵上,为了比较metric,比如auc,在一个或者多个有着baseline的特征上做特征打乱来验证特征level的重要性。
- **pipe_command** (str) - pipe命令
参数:
- **slots** (list[string]) - 要打乱特征的集合 set_thread(thread_num)
'''''''''
**代码示例**:
设置进程数量,等于readers的数量。
.. code-block:: python
**代码示例**
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”) .. code-block:: python
dataset.set_merge_by_lineid()
#支持slot 0 import paddle.fluid as fluid
dataset.slots_shuffle([‘0’]) dataset = fluid.DatasetFactory().create_dataset()
dataset.set_thread(12)
**参数**
- **thread_num** (int) - 进程数量
set_use_var(var_list)
'''''''''
设置将要使用的 ``Variable`` 。
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset()
dataset.set_use_var([data, label])
**参数**
- **var_list** (list) - variable 列表
slots_shuffle(slots)
'''''''''
该方法是在特征层次上的一个打乱方法,经常被用在有着较大缩放率实例的稀疏矩阵上,为了比较metric,比如auc,在一个或者多个有着baseline的特征上做特征打乱来验证特征level的重要性。
**参数**
- **slots** (list[string]) - 要打乱特征的集合
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”)
dataset.set_merge_by_lineid()
#支持slot 0
dataset.slots_shuffle([‘0’])
.. _cn_api_fluid_dataset_QueueDataset: .. _cn_api_fluid_dataset_QueueDataset:
QueueDataset QueueDataset
------------------------------- -------------------------------
.. py:class:: paddle.fluid.dataset.QueueDataset .. py:class:: paddle.fluid.dataset.QueueDataset
流式处理数据。 流式处理数据。
**代码示例**: 代码示例
::::::::::::
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("QueueDataset") import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("QueueDataset")
方法
.. py:method:: local_shuffle() ::::::::::::
局域shuffle数据 local_shuffle()
'''''''''
QueueDataset中不支持局域shuffle,可能抛出NotImplementedError
局域shuffle数据
**代码示例**:
QueueDataset中不支持局域shuffle,可能抛出NotImplementedError
.. code-block:: python
**代码示例**
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("QueueDataset") .. code-block:: python
dataset.local_shuffle()
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset("QueueDataset")
dataset.local_shuffle()
.. py:method:: global_shuffle(fleet=None)
全局shuffle数据
global_shuffle(fleet=None)
QueueDataset中不支持全局shuffle,可能抛出NotImplementedError '''''''''
**代码示例**: 全局shuffle数据
.. code-block:: python QueueDataset中不支持全局shuffle,可能抛出NotImplementedError
import paddle.fluid as fluid **代码示例**
from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet
dataset = fluid.DatasetFactory().create_dataset("QueueDataset") .. code-block:: python
dataset.global_shuffle(fleet)
import paddle.fluid as fluid
.. py:method:: desc() from paddle.fluid.incubate.fleet.parameter_server.pslib import fleet
dataset = fluid.DatasetFactory().create_dataset("QueueDataset")
为 ``DataFeedDesc`` 返回一个缓存信息。 dataset.global_shuffle(fleet)
**代码示例**: desc()
'''''''''
.. code-block:: python
为 ``DataFeedDesc`` 返回一个缓存信息。
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() **代码示例**
print(dataset.desc())
.. code-block:: python
返回:一个字符串信息
import paddle.fluid as fluid
.. py:method:: set_batch_size(batch_size) dataset = fluid.DatasetFactory().create_dataset()
print(dataset.desc())
设置batch size。在训练期间生效。
**返回**
**代码示例**: 一个字符串信息
.. code-block:: python set_batch_size(batch_size)
'''''''''
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() 设置batch size。在训练期间生效。
dataset.set_batch_size(128)
**代码示例**
参数:
- **batch_size** (int) - batch size .. code-block:: python
.. py:method:: set_fea_eval(record_candidate_size,fea_eval) import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset()
参数: dataset.set_batch_size(128)
- **record_candidate_size** (int) - 打乱一个特征的候选实例大小
- **fea_eval** (bool) - 是否设置特征验证模式来打乱特征,默认为True。 **参数**
**代码示例**: - **batch_size** (int) - batch size
.. code-block:: python set_fea_eval(record_candidate_size,fea_eval)
'''''''''
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”) **参数**
dataset.set_fea_eval(1000000, True)
- **record_candidate_size** (int) - 打乱一个特征的候选实例大小
.. py:method:: set_filelist(filelist) - **fea_eval** (bool) - 是否设置特征验证模式来打乱特征,默认为True。
在当前的worker中设置文件列表。 **代码示例**
**代码示例**: .. code-block:: python
.. code-block:: python import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”)
import paddle.fluid as fluid dataset.set_fea_eval(1000000, True)
dataset = fluid.DatasetFactory().create_dataset()
dataset.set_filelist(["a.txt", "b.txt"]) set_filelist(filelist)
'''''''''
参数:
- **filelist** (list) - 文件列表 在当前的worker中设置文件列表。
.. py:method:: set_hdfs_config(fs_name, fs_ugi) **代码示例**
设置hdfs配置:fs名称与ugi。 .. code-block:: python
**代码示例**: import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset()
.. code-block:: python dataset.set_filelist(["a.txt", "b.txt"])
import paddle.fluid as fluid **参数**
dataset = fluid.DatasetFactory().create_dataset()
dataset.set_hdfs_config("my_fs_name", "my_fs_ugi") - **filelist** (list) - 文件列表
参数: set_hdfs_config(fs_name, fs_ugi)
- **fs_name** (str) - fs名称 '''''''''
- **fs_ugi** (str) - fs ugi
设置hdfs配置:fs名称与ugi。
.. py:method:: set_pipe_command(pipe_coommand)
**代码示例**
在当前的 ``dataset`` 中设置pipe命令。pipe命令只能使用UNIX的pipe命令
.. code-block:: python
**代码示例**:
import paddle.fluid as fluid
.. code-block:: python dataset = fluid.DatasetFactory().create_dataset()
dataset.set_hdfs_config("my_fs_name", "my_fs_ugi")
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() **参数**
dataset.set_pipe_command("python my_script.py")
- **fs_name** (str) - fs名称
参数: - **fs_ugi** (str) - fs ugi
- **pipe_command** (str) - pipe命令
set_pipe_command(pipe_coommand)
.. py:method:: set_thread(thread_num) '''''''''
设置进程数量,等于readers的数量。 在当前的 ``dataset`` 中设置pipe命令。pipe命令只能使用UNIX的pipe命令
**代码示例**: **代码示例**
.. code-block:: python .. code-block:: python
import paddle.fluid as fluid import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset() dataset = fluid.DatasetFactory().create_dataset()
dataset.set_thread(12) dataset.set_pipe_command("python my_script.py")
参数: **参数**
- **thread_num** (int) - 进程数量
- **pipe_command** (str) - pipe命令
.. py:method:: set_use_var(var_list)
set_thread(thread_num)
设置将要使用的 ``Variable`` 。 '''''''''
**代码示例**: 设置进程数量,等于readers的数量。
.. code-block:: python **代码示例**
import paddle.fluid as fluid .. code-block:: python
dataset = fluid.DatasetFactory().create_dataset()
dataset.set_use_var([data, label]) import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset()
参数: dataset.set_thread(12)
- **var_list** (list) - variable 列表
**参数**
.. py:method:: slots_shuffle(slots)
- **thread_num** (int) - 进程数量
该方法是在特征层次上的一个打乱方法,经常被用在有着较大缩放率实例的稀疏矩阵上,为了比较metric,比如auc,在一个或者多个有着baseline的特征上做特征打乱来验证特征level的重要性。
set_use_var(var_list)
参数: '''''''''
- **slots** (list[string]) - 要打乱特征的集合
设置将要使用的 ``Variable`` 。
**代码示例**:
**代码示例**
.. code-block:: python
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”) import paddle.fluid as fluid
dataset.set_merge_by_lineid() dataset = fluid.DatasetFactory().create_dataset()
#支持slot 0 dataset.set_use_var([data, label])
dataset.slots_shuffle([‘0’])
**参数**
- **var_list** (list) - variable 列表
slots_shuffle(slots)
'''''''''
该方法是在特征层次上的一个打乱方法,经常被用在有着较大缩放率实例的稀疏矩阵上,为了比较metric,比如auc,在一个或者多个有着baseline的特征上做特征打乱来验证特征level的重要性。
**参数**
- **slots** (list[string]) - 要打乱特征的集合
**代码示例**
.. code-block:: python
import paddle.fluid as fluid
dataset = fluid.DatasetFactory().create_dataset(“InMemoryDataset”)
dataset.set_merge_by_lineid()
#支持slot 0
dataset.slots_shuffle([‘0’])
...@@ -39,13 +39,18 @@ BCELoss ...@@ -39,13 +39,18 @@ BCELoss
如果 :attr:`reduction` 是 ``'none'``, 则输出的维度为 [N, *], 与输入input的形状相同。 如果 :attr:`reduction` 是 ``'none'``, 则输出的维度为 [N, *], 与输入input的形状相同。
如果 :attr:`reduction` 是 ``'mean'`` 或 ``'sum'``, 则输出的维度为 [1]。 如果 :attr:`reduction` 是 ``'mean'`` 或 ``'sum'``, 则输出的维度为 [1]。
参数: 参数
::::::::::::
- **weight(Variable, optional)**:- 手动指定每个batch二值交叉熵的权重,如果指定的话,维度必须是一个batch的数据的维度。数据类型是float32, float64。默认是:None。 - **weight(Variable, optional)**:- 手动指定每个batch二值交叉熵的权重,如果指定的话,维度必须是一个batch的数据的维度。数据类型是float32, float64。默认是:None。
- **reduction(str, optional)**:- 指定应用于输出结果的计算方式,可选值有: ``'none'``, ``'mean'``, ``'sum'`` 。默认为 ``'mean'``,计算 `BCELoss` 的均值;设置为 ``'sum'`` 时,计算 `BCELoss` 的总和;设置为 ``'none'`` 时,则返回BCELoss。 - **reduction(str, optional)**:- 指定应用于输出结果的计算方式,可选值有: ``'none'``, ``'mean'``, ``'sum'`` 。默认为 ``'mean'``,计算 `BCELoss` 的均值;设置为 ``'sum'`` 时,计算 `BCELoss` 的总和;设置为 ``'none'`` 时,则返回BCELoss。
返回:返回计算BCELoss的可调用对象。 返回
::::::::::::
返回计算BCELoss的可调用对象。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -11,9 +11,10 @@ BackwardStrategy ...@@ -11,9 +11,10 @@ BackwardStrategy
BackwardStrategy是描述动态图反向执行的策略,主要功能是定义动态图反向执行时的不同策略 BackwardStrategy是描述动态图反向执行的策略,主要功能是定义动态图反向执行时的不同策略
**属性:** 属性
::::::::::::
.. py:attribute:: sort_sum_gradient sort_sum_gradient
'''''''''
是否按照前向执行的逆序加和多个梯度,例如当 x_var( :ref:`api_guide_Variable` )作为多个OP(这里以 :ref:`cn_api_fluid_layers_scale` 为例)的输入时,其产生的梯度是否按照前向书写时的 是否按照前向执行的逆序加和多个梯度,例如当 x_var( :ref:`api_guide_Variable` )作为多个OP(这里以 :ref:`cn_api_fluid_layers_scale` 为例)的输入时,其产生的梯度是否按照前向书写时的
逆序加和,默认为False 逆序加和,默认为False
......
...@@ -6,7 +6,6 @@ BatchNorm ...@@ -6,7 +6,6 @@ BatchNorm
.. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False) .. py:class:: paddle.fluid.dygraph.BatchNorm(num_channels, act=None, is_test=False, momentum=0.9, epsilon=1e-05, param_attr=None, bias_attr=None, dtype='float32', data_layout='NCHW', in_place=False, moving_mean_name=None, moving_variance_name=None, do_model_average_for_mean_and_var=False, use_global_stats=False, trainable_statistics=False)
该接口用于构建 ``BatchNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift <https://arxiv.org/pdf/1502.03167.pdf>`_ 该接口用于构建 ``BatchNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了批归一化层(Batch Normalization Layer)的功能,可用作卷积和全连接操作的批归一化函数,根据当前批次数据按通道计算的均值和方差进行归一化。更多详情请参考 : `Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift <https://arxiv.org/pdf/1502.03167.pdf>`_
当use_global_stats = False时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下: 当use_global_stats = False时,:math:`\mu_{\beta}` 和 :math:`\sigma_{\beta}^{2}` 是minibatch的统计数据。计算公式如下:
.. math:: .. math::
...@@ -34,7 +33,9 @@ BatchNorm ...@@ -34,7 +33,9 @@ BatchNorm
- :math:`\gamma` : 可训练的比例参数 - :math:`\gamma` : 可训练的比例参数
- :math:`\beta` : 可训练的偏差参数 - :math:`\beta` : 可训练的偏差参数
参数: 参数
::::::::::::
- **num_channels** (int) - 指明输入 ``Tensor`` 的通道数量。 - **num_channels** (int) - 指明输入 ``Tensor`` 的通道数量。
- **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。
- **is_test** (bool, 可选) - 指示是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认值:False。 - **is_test** (bool, 可选) - 指示是否在测试阶段,非训练阶段使用训练过程中统计到的全局均值和全局方差。默认值:False。
...@@ -51,9 +52,12 @@ BatchNorm ...@@ -51,9 +52,12 @@ BatchNorm
- **use_global_stats** (bool, 可选) – 指示是否使用全局均值和方差。在预测或测试模式下,将 ``use_global_stats`` 设置为true或将 ``is_test`` 设置为true,这两种行为是等效的。在训练模式中,当设置 ``use_global_stats`` 为True时,在训练期间也将使用全局均值和方差。默认值:False。 - **use_global_stats** (bool, 可选) – 指示是否使用全局均值和方差。在预测或测试模式下,将 ``use_global_stats`` 设置为true或将 ``is_test`` 设置为true,这两种行为是等效的。在训练模式中,当设置 ``use_global_stats`` 为True时,在训练期间也将使用全局均值和方差。默认值:False。
- **trainable_statistics** (bool, 可选) - eval模式下是否计算mean均值和var方差。eval模式下,trainable_statistics为True时,由该批数据计算均值和方差。默认值:False。 - **trainable_statistics** (bool, 可选) - eval模式下是否计算mean均值和var方差。eval模式下,trainable_statistics为True时,由该批数据计算均值和方差。默认值:False。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,7 +6,6 @@ BilinearTensorProduct ...@@ -6,7 +6,6 @@ BilinearTensorProduct
.. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.BilinearTensorProduct(input1_dim, input2_dim, output_dim, name=None, act=None, param_attr=None, bias_attr=None, dtype="float32")
该接口用于构建 ``BilinearTensorProduct`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。双线性乘积计算式子如下。 该接口用于构建 ``BilinearTensorProduct`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。双线性乘积计算式子如下。
.. math:: .. math::
out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1 out_{i} = x * W_{i} * {y^\mathrm{T}}, i=0,1,...,size-1
...@@ -20,21 +19,28 @@ BilinearTensorProduct ...@@ -20,21 +19,28 @@ BilinearTensorProduct
- :math:`y^T` : :math:`y` 的转置 - :math:`y^T` : :math:`y` 的转置
参数: 参数
::::::::::::
- **input1_dim** (int) – 第一个输入的维度大小。 - **input1_dim** (int) – 第一个输入的维度大小。
- **input1_dim** (int) – 第二个输入的维度大小。 - **input1_dim** (int) – 第二个输入的维度大小。
- **output_dim** (int) – 输出的维度。 - **output_dim** (int) – 输出的维度。
- **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - **name** (str,可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
- **act** (str,可选) – 对输出应用的激励函数。默认值为None。 - **act** (str,可选) – 对输出应用的激励函数。默认值为None。
- **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **param_attr** (ParamAttr) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
- **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - **bias_attr** (ParamAttr) – 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。
返回:维度为[batch_size, size]的2D Tensor,数据类型与输入数据类型相同。 返回
::::::::::::
维度为[batch_size, size]的2D Tensor,数据类型与输入数据类型相同。
返回类型: Variable 返回类型
::::::::::::
Variable
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -51,11 +57,13 @@ BilinearTensorProduct ...@@ -51,11 +57,13 @@ BilinearTensorProduct
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
......
...@@ -6,7 +6,6 @@ Conv2DTranspose ...@@ -6,7 +6,6 @@ Conv2DTranspose
.. py:class:: paddle.fluid.dygraph.Conv2DTranspose(num_channels, num_filters, filter_size, output_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.Conv2DTranspose(num_channels, num_filters, filter_size, output_size=None, padding=0, stride=1, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype="float32")
该接口用于构建 ``Conv2DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积转置层(Convlution2D Transpose Layer),其根据输入(input)、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输入特征图个数,C是输出特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。转置卷积的计算过程相当于卷积的反向计算,转置卷积又被称为反卷积(但其实并不是真正的反卷积)。详情请参考: `Conv2DTranspose <http://www.matthewzeiler.com/wp-content/uploads/2017/07/cvpr2010.pdf>`_ 。 该接口用于构建 ``Conv2DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积转置层(Convlution2D Transpose Layer),其根据输入(input)、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输入特征图个数,C是输出特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。转置卷积的计算过程相当于卷积的反向计算,转置卷积又被称为反卷积(但其实并不是真正的反卷积)。详情请参考: `Conv2DTranspose <http://www.matthewzeiler.com/wp-content/uploads/2017/07/cvpr2010.pdf>`_ 。
输入 ``X`` 和输出 ``Out`` 的函数关系如下: 输入 ``X`` 和输出 ``Out`` 的函数关系如下:
.. math:: .. math::
...@@ -44,7 +43,9 @@ Conv2DTranspose ...@@ -44,7 +43,9 @@ Conv2DTranspose
& W_{out}\in[W'_{out},W'_{out} + strides[1]) & W_{out}\in[W'_{out},W'_{out} + strides[1])
参数: 参数
::::::::::::
- **num_channels** (int) - 输入图像的通道数。 - **num_channels** (int) - 输入图像的通道数。
- **num_filters** (int) - 滤波器的个数,和输出特征图个数相同。 - **num_filters** (int) - 滤波器的个数,和输出特征图个数相同。
- **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。 - **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。
...@@ -59,9 +60,12 @@ Conv2DTranspose ...@@ -59,9 +60,12 @@ Conv2DTranspose
- **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。 - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -76,11 +80,14 @@ Conv2DTranspose ...@@ -76,11 +80,14 @@ Conv2DTranspose
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight
weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
...@@ -6,7 +6,6 @@ Conv2D ...@@ -6,7 +6,6 @@ Conv2D
.. py:class:: paddle.fluid.dygraph.Conv2D(num_channels, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype='float32') .. py:class:: paddle.fluid.dygraph.Conv2D(num_channels, num_filters, filter_size, stride=1, padding=0, dilation=1, groups=None, param_attr=None, bias_attr=None, use_cudnn=True, act=None, dtype='float32')
该接口用于构建 ``Conv2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积层(Convolution2D Layer),其根据输入、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)参数来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输出特征图个数,C是输入特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。详情请参考: `卷积 <http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/>`_ 。 该接口用于构建 ``Conv2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维卷积层(Convolution2D Layer),其根据输入、滤波器参数(num_filters、filter_size)、步长(stride)、填充(padding)、膨胀系数(dilation)、组数(groups)参数来计算得到输出特征图。输入和输出是 ``NCHW`` 格式,N是批数据大小,C是特征图个数,H是特征图高度,W是特征图宽度。滤波器的维度是 [M, C, H, W] ,M是输出特征图个数,C是输入特征图个数,H是滤波器高度,W是滤波器宽度。如果组数大于1,C等于输入特征图个数除以组数的结果。如果提供了偏移属性和激活函数类型,卷积的结果会和偏移相加,激活函数会作用在最终结果上。详情请参考: `卷积 <http://ufldl.stanford.edu/tutorial/supervised/FeatureExtractionUsingConvolution/>`_ 。
对每个输入 ``X`` ,有等式: 对每个输入 ``X`` ,有等式:
.. math:: .. math::
...@@ -41,7 +40,9 @@ Conv2D ...@@ -41,7 +40,9 @@ Conv2D
W_{out} = \frac{\left ( W_{in}+2*paddings[1]-\left ( dilations[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{strides[1]}+1 W_{out} = \frac{\left ( W_{in}+2*paddings[1]-\left ( dilations[1]*\left ( W_{f}-1 \right )+1 \right ) \right )}{strides[1]}+1
参数: 参数
::::::::::::
- **num_channels** (int) - 输入图像的通道数。 - **num_channels** (int) - 输入图像的通道数。
- **num_fliters** (int) - 滤波器的个数,和输出特征图个数相同。 - **num_fliters** (int) - 滤波器的个数,和输出特征图个数相同。
- **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。 - **filter_size** (int|tuple) - 滤波器大小。如果 ``filter_size`` 是一个元组,则必须包含两个整型数,分别表示滤波器高度和宽度。否则,表示滤波器高度和宽度均为 ``filter_size`` 。
...@@ -55,12 +56,17 @@ Conv2D ...@@ -55,12 +56,17 @@ Conv2D
- **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。 - **act** (str, 可选) - 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值:None。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。
返回:无 返回
::::::::::::
抛出异常
::::::::::::
抛出异常:
- ``ValueError`` - 如果 ``use_cudnn`` 不是bool值 - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -77,11 +83,14 @@ Conv2D ...@@ -77,11 +83,14 @@ Conv2D
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight
weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
...@@ -8,7 +8,6 @@ Conv3DTranspose ...@@ -8,7 +8,6 @@ Conv3DTranspose
该接口用于构建 ``Conv3DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积转置层(Convlution3D transpose layer)根据输入(input)、滤波器(filter)和卷积核膨胀(dilations)、步长(stride)、填充来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW格式。其中 ``N`` 为batch大小, ``C`` 为通道数(channel), ``D`` 为特征深度, ``H`` 为特征高度, ``W`` 为特征宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。 该接口用于构建 ``Conv3DTranspose`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积转置层(Convlution3D transpose layer)根据输入(input)、滤波器(filter)和卷积核膨胀(dilations)、步长(stride)、填充来计算输出特征层大小或者通过output_size指定输出特征层大小。输入(Input)和输出(Output)为NCDHW格式。其中 ``N`` 为batch大小, ``C`` 为通道数(channel), ``D`` 为特征深度, ``H`` 为特征高度, ``W`` 为特征宽度。转置卷积的计算过程相当于卷积的反向计算。转置卷积又被称为反卷积(但其实并不是真正的反卷积)。欲了解卷积转置层细节,请参考下面的说明和 参考文献_ 。如果参数bias_attr不为False, 转置卷积计算会添加偏置项。如果act不为None,则转置卷积计算之后添加相应的激活函数。
.. _参考文献: https://arxiv.org/abs/1603.07285 .. _参考文献: https://arxiv.org/abs/1603.07285
输入 :math:`X` 和输出 :math:`Out` 函数关系如下: 输入 :math:`X` 和输出 :math:`Out` 函数关系如下:
...@@ -65,7 +64,9 @@ Conv3DTranspose ...@@ -65,7 +64,9 @@ Conv3DTranspose
如果指定了output_size, 其可以自动计算滤波器的大小。 如果指定了output_size, 其可以自动计算滤波器的大小。
参数: 参数
::::::::::::
- **num_channels** (int) - 输入图像的通道数。 - **num_channels** (int) - 输入图像的通道数。
- **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。 - **num_filters** (int) - 滤波器(卷积核)的个数,与输出的图片的通道数相同。
- **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, 其会根据output_size、padding和stride计算出滤波器大小。 - **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_depth,filter_size_height, filter_size_width)。否则,filter_size_depth = filter_size_height = filter_size_width = filter_size。如果filter_size=None,则必须指定output_size, 其会根据output_size、padding和stride计算出滤波器大小。
...@@ -82,9 +83,12 @@ Conv3DTranspose ...@@ -82,9 +83,12 @@ Conv3DTranspose
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -103,11 +107,14 @@ Conv3DTranspose ...@@ -103,11 +107,14 @@ Conv3DTranspose
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight
weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
......
...@@ -7,7 +7,6 @@ Conv3D ...@@ -7,7 +7,6 @@ Conv3D
该接口用于构建 ``Conv3D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积层(convolution3D layer)根据输入、滤波器(filter)、步长(stride)、填充(padding)、膨胀(dilations)、组数参数计算得到输出。输入和输出是[N, C, D, H, W]的多维tensor,其中N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。卷积三维(Convlution3D)和卷积二维(Convlution2D)相似,但多了一维深度(depth)。如果提供了bias属性和激活函数类型,bias会添加到卷积(convolution)的结果中相应的激活函数会作用在最终结果上。 该接口用于构建 ``Conv3D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。3D卷积层(convolution3D layer)根据输入、滤波器(filter)、步长(stride)、填充(padding)、膨胀(dilations)、组数参数计算得到输出。输入和输出是[N, C, D, H, W]的多维tensor,其中N是批尺寸,C是通道数,D是特征深度,H是特征高度,W是特征宽度。卷积三维(Convlution3D)和卷积二维(Convlution2D)相似,但多了一维深度(depth)。如果提供了bias属性和激活函数类型,bias会添加到卷积(convolution)的结果中相应的激活函数会作用在最终结果上。
对每个输入X,有等式: 对每个输入X,有等式:
.. math:: .. math::
...@@ -41,7 +40,9 @@ Conv3D ...@@ -41,7 +40,9 @@ Conv3D
H_{out}&= \frac{(H_{in} + 2 * paddings[1] - (dilations[1] * (H_f - 1) + 1))}{strides[1]} + 1 \\ H_{out}&= \frac{(H_{in} + 2 * paddings[1] - (dilations[1] * (H_f - 1) + 1))}{strides[1]} + 1 \\
W_{out}&= \frac{(W_{in} + 2 * paddings[2] - (dilations[2] * (W_f - 1) + 1))}{strides[2]} + 1 W_{out}&= \frac{(W_{in} + 2 * paddings[2] - (dilations[2] * (W_f - 1) + 1))}{strides[2]} + 1
参数: 参数
::::::::::::
- **num_channels** (int) - 输入图像的通道数。 - **num_channels** (int) - 输入图像的通道数。
- **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。 - **num_fliters** (int) - 滤波器(卷积核)的个数。和输出图像通道相同。
- **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_D, filter_size_H, filter_size_W)。如果filter_size是一个int型,则filter_size_depth = filter_size_height = filter_size_width = filter_size。 - **filter_size** (int|tuple) - 滤波器大小。如果filter_size是一个元组,则必须包含三个整型数,(filter_size_D, filter_size_H, filter_size_W)。如果filter_size是一个int型,则filter_size_depth = filter_size_height = filter_size_width = filter_size。
...@@ -50,15 +51,18 @@ Conv3D ...@@ -50,15 +51,18 @@ Conv3D
- **dilation** (int|tuple,可选) - 膨胀(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 <https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md>`_ 较好理解。如果膨胀(dialation)为元组,则必须包含两个整型数, (dilation_D, dilation_H, dilation_W)。否则,dilation_D = dilation_H = dilation_W = dilation。默认值为1。 - **dilation** (int|tuple,可选) - 膨胀(dilation)大小。空洞卷积时会指该参数,滤波器对输入进行卷积时,感受野里每相邻两个特征点之间的空洞信息,根据 `可视化效果图 <https://github.com/vdumoulin/conv_arithmetic/blob/master/README.md>`_ 较好理解。如果膨胀(dialation)为元组,则必须包含两个整型数, (dilation_D, dilation_H, dilation_W)。否则,dilation_D = dilation_H = dilation_W = dilation。默认值为1。
- **groups** (int,可选) - 三维卷积层(Conv3D Layer)的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=2,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。 - **groups** (int,可选) - 三维卷积层(Conv3D Layer)的组数。根据Alex Krizhevsky的深度卷积神经网络(CNN)论文中的成组卷积:当group=2,输入和滤波器分别根据通道数量平均分为两组,第一组滤波器和第一组输入进行卷积计算,第二组滤波器和第二组输入进行卷积计算。默认值为1。
- **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **param_attr** (ParamAttr,可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
- **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`。 - **bias_attr** (ParamAttr,可选) - 指定偏置参数属性的对象。默认值为None,表示使用默认的偏置参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr`
- **use_cudnn** (bool,可选) - 是否用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。 - **use_cudnn** (bool,可选) - 是否用cudnn内核,只有安装Paddle GPU版时才有效。默认值为True。
- **act** (str,可选) - 激活函数类型,如果设为None,则未添加激活函数。默认值为None。 - **act** (str,可选) - 激活函数类型,如果设为None,则未添加激活函数。默认值为None。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。
返回:无 返回
::::::::::::
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -74,11 +78,14 @@ Conv3D ...@@ -74,11 +78,14 @@ Conv3D
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight
weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
......
...@@ -20,7 +20,9 @@ CosineDecay ...@@ -20,7 +20,9 @@ CosineDecay
- :math:`decayed\_learning\_rate` : 衰减后的学习率。 - :math:`decayed\_learning\_rate` : 衰减后的学习率。
式子中各参数详细介绍请看参数说明。 式子中各参数详细介绍请看参数说明。
参数: 参数
::::::::::::
- **learning_rate** (Variable | float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - **learning_rate** (Variable | float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。
- **step_each_epoch** (int) - 遍历一遍训练数据所需的步数。 - **step_each_epoch** (int) - 遍历一遍训练数据所需的步数。
- **begin** (int,可选) - 起始步,即以上公式中global_step的初始化值。默认值为0。 - **begin** (int,可选) - 起始步,即以上公式中global_step的初始化值。默认值为0。
...@@ -28,7 +30,8 @@ CosineDecay ...@@ -28,7 +30,8 @@ CosineDecay
- **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -9,7 +9,9 @@ Dropout ...@@ -9,7 +9,9 @@ Dropout
Dropout层可以删除,提高执行效率。 Dropout层可以删除,提高执行效率。
参数: 参数
::::::::::::
- **p** (float32,可选) - 输入单元的丢弃概率,即输入单元设置为0的概率。默认值:0.5 - **p** (float32,可选) - 输入单元的丢弃概率,即输入单元设置为0的概率。默认值:0.5
- **seed** (int,可选) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。默认值:None。 - **seed** (int,可选) - 整型数据,用于创建随机种子。如果该参数设为None,则使用随机种子。注:如果给定一个整型种子,始终丢弃相同的输出单元。训练过程中勿用固定不变的种子。默认值:None。
- **dropout_implementation** (str,可选) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。 - **dropout_implementation** (str,可选) - 丢弃单元的方式,有两种'downgrade_in_infer'和'upscale_in_train'两种选择,默认:'downgrade_in_infer'。具体作用可以参考一下描述。
...@@ -32,9 +34,12 @@ Dropout层可以删除,提高执行效率。 ...@@ -32,9 +34,12 @@ Dropout层可以删除,提高执行效率。
- **is_test** (bool,可选) - 标记是否是测试阶段。此标志仅对静态图模式有效。对于动态图模式,请使用 ``eval()`` 接口。默认:False。 - **is_test** (bool,可选) - 标记是否是测试阶段。此标志仅对静态图模式有效。对于动态图模式,请使用 ``eval()`` 接口。默认:False。
返回:无 返回
::::::::::::
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -8,7 +8,6 @@ Embedding ...@@ -8,7 +8,6 @@ Embedding
嵌入层(Embedding Layer) 嵌入层(Embedding Layer)
该接口用于构建 ``Embedding`` 的一个可调用对象,具体用法参照 ``代码示例`` 。其根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。 该接口用于构建 ``Embedding`` 的一个可调用对象,具体用法参照 ``代码示例`` 。其根据input中的id信息从embedding矩阵中查询对应embedding信息,并会根据输入的size (vocab_size, emb_size)和dtype自动构造一个二维embedding矩阵。
输出的Tensor的shape是在输入Tensor shape的最后一维后面添加了emb_size的维度。 输出的Tensor的shape是在输入Tensor shape的最后一维后面添加了emb_size的维度。
注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。 注:input中的id必须满足 ``0 =< id < size[0]``,否则程序会抛异常退出。
...@@ -51,7 +50,9 @@ Embedding ...@@ -51,7 +50,9 @@ Embedding
[[0.0, 0.0, ..., 0.0 ]]] # padding data [[0.0, 0.0, ..., 0.0 ]]] # padding data
输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。 输入的padding_idx = 0,则对于输入id为0的词,进行padding处理。
参数: 参数
::::::::::::
- **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。 - **size** (tuple|list) - embedding矩阵的维度。必须包含两个元素,第一个元素为vocab_size(词表大小), 第二个为emb_size(embedding层维度)。
- **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。 - **is_sparse** (bool) - 是否使用稀疏的更新方式,这个参数只会影响反向的梯度更新的性能,sparse更新速度更快,推荐使用稀疏更新的方式。但某些optimizer不支持sparse更新,比如 :ref:`cn_api_fluid_optimizer_AdadeltaOptimizer` 、 :ref:`cn_api_fluid_optimizer_AdamaxOptimizer` 、 :ref:`cn_api_fluid_optimizer_DecayedAdagradOptimizer` 、 :ref:`cn_api_fluid_optimizer_FtrlOptimizer` 、 :ref:`cn_api_fluid_optimizer_LambOptimizer` 、:ref:`cn_api_fluid_optimizer_LarsMomentumOptimizer` ,此时is_sparse必须为False。默认为False。
- **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。 - **is_distributed** (bool) - 是否使用分布式的方式存储embedding矩阵,仅在多机分布式cpu训练中使用。默认为False。
...@@ -59,11 +60,16 @@ Embedding ...@@ -59,11 +60,16 @@ Embedding
- **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。 - **param_attr** (ParamAttr) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。此外,可以通过 ``param_attr`` 参数加载用户自定义或预训练的词向量。只需将本地词向量转为numpy数据格式,且保证本地词向量的shape和embedding的 ``size`` 参数一致,然后使用 :ref:`cn_api_fluid_initializer_NumpyArrayInitializer` 进行初始化,即可实现加载自定义或预训练的词向量。详细使用方法见代码示例2。
- **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - **dtype** (str|core.VarDesc.VarType) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。
返回:input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。 返回
::::::::::::
input映射后得到的Embedding Tensor或LoDTensor,数据类型和dtype定义的类型一致。
返回类型:Variable 返回类型
::::::::::::
Variable
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -33,7 +33,9 @@ ExponentialDecay ...@@ -33,7 +33,9 @@ ExponentialDecay
- :math:`decayed\_learning\_rate` : 衰减后的学习率。 - :math:`decayed\_learning\_rate` : 衰减后的学习率。
式子中各参数详细介绍请看参数说明。 式子中各参数详细介绍请看参数说明。
参数: 参数
::::::::::::
- **learning_rate** (Variable|float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - **learning_rate** (Variable|float) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。
- **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。 - **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。
- **decay_rate** (float)- 衰减率。 - **decay_rate** (float)- 衰减率。
...@@ -42,10 +44,13 @@ ExponentialDecay ...@@ -42,10 +44,13 @@ ExponentialDecay
- **step** (int) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。 - **step** (int) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。
- **dtype** (str) - 初始化学习率变量的数据类型,可以为"float32", "float64"。 默认值为"float32"。 - **dtype** (str) - 初始化学习率变量的数据类型,可以为"float32", "float64"。 默认值为"float32"。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,7 +6,6 @@ GRUUnit ...@@ -6,7 +6,6 @@ GRUUnit
.. py:class:: paddle.fluid.dygraph.GRUUnit(name_scope, size, param_attr=None, bias_attr=None, activation='tanh', gate_activation='sigmoid', origin_mode=False, dtype='float32') .. py:class:: paddle.fluid.dygraph.GRUUnit(name_scope, size, param_attr=None, bias_attr=None, activation='tanh', gate_activation='sigmoid', origin_mode=False, dtype='float32')
该接口用于构建 ``GRU(Gated Recurrent Unit)`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其用于完成单个时间步内GRU的计算,支持以下两种计算方式: 该接口用于构建 ``GRU(Gated Recurrent Unit)`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其用于完成单个时间步内GRU的计算,支持以下两种计算方式:
如果origin_mode为True,则使用的运算公式来自论文 如果origin_mode为True,则使用的运算公式来自论文
`Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation <https://arxiv.org/pdf/1406.1078.pdf>`_ 。 `Learning Phrase Representations using RNN Encoder Decoder for Statistical Machine Translation <https://arxiv.org/pdf/1406.1078.pdf>`_ 。
...@@ -29,10 +28,12 @@ GRUUnit ...@@ -29,10 +28,12 @@ GRUUnit
h_t & = (1-u_t) \odot h_{t-1} + u_t \odot \tilde{h_t} h_t & = (1-u_t) \odot h_{t-1} + u_t \odot \tilde{h_t}
其中, :math:`x_t` 为当前时间步的输入,:math:`h_{t-1}` 为前一时间步的隐状态 ``hidden``; :math:`u_t` 、 :math:`r_t` 、 :math:`\tilde{h_t}` 和 :math:`h_t` 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; :math:`\odot` 为逐个元素相乘; 其中, :math:`x_t` 为当前时间步的输入,:math:`h_{t-1}` 为前一时间步的隐状态 ``hidden`` ; :math:`u_t` 、 :math:`r_t` 、 :math:`\tilde{h_t}` 和 :math:`h_t` 分别代表了GRU单元中update gate(更新门)、reset gate(重置门)、candidate hidden(候选隐状态)和隐状态输出; :math:`\odot` 为逐个元素相乘;
:math:`W_{uh}, b_u` 、 :math:`W_{rh}, b_r` 和 :math:`W_{ch}, b_c` 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个维度为 :math:`[D, D \times 3]` 的Tensor存放。 :math:`W_{uh}, b_u` 、 :math:`W_{rh}, b_r` 和 :math:`W_{ch}, b_c` 分别代表更新门、重置门和候选隐状态在计算时使用的权重矩阵和偏置。在实现上,三个权重矩阵合并为一个维度为 :math:`[D, D \times 3]` 的Tensor存放。
参数: 参数
::::::::::::
- **size** (int) – 输入数据的维度大小。 - **size** (int) – 输入数据的维度大小。
- **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **param_attr** (ParamAttr,可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
**注意** **注意**
...@@ -44,10 +45,13 @@ GRUUnit ...@@ -44,10 +45,13 @@ GRUUnit
- **origin_mode** (bool) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述。默认值为False。 - **origin_mode** (bool) – 指明要使用的GRU计算方式,两种计算方式具体差异见公式描述。默认值为False。
- **dtype** (str,可选) – 该层的数据类型,可以为'float32', 'float64'。默认值为'float32'。 - **dtype** (str,可选) – 该层的数据类型,可以为'float32', 'float64'。默认值为'float32'。
返回: 返回
::::::::::::
None. None.
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -70,10 +74,13 @@ GRUUnit ...@@ -70,10 +74,13 @@ GRUUnit
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight
weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
...@@ -8,8 +8,9 @@ GroupNorm ...@@ -8,8 +8,9 @@ GroupNorm
**Group Normalization层** **Group Normalization层**
该接口用于构建 ``GroupNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了组归一化层的功能。更多详情请参考: `Group Normalization <https://arxiv.org/abs/1803.08494>`_ 。 该接口用于构建 ``GroupNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了组归一化层的功能。更多详情请参考: `Group Normalization <https://arxiv.org/abs/1803.08494>`_ 。
参数
::::::::::::
参数:
- **channels** (int) - 输入的通道数。 - **channels** (int) - 输入的通道数。
- **groups** (int) - 从通道中分离出来的 ``group`` 的数目。 - **groups** (int) - 从通道中分离出来的 ``group`` 的数目。
- **epsilon** (float, 可选) - 为防止方差除零,增加一个很小的值。默认值:1e-05。 - **epsilon** (float, 可选) - 为防止方差除零,增加一个很小的值。默认值:1e-05。
...@@ -19,12 +20,17 @@ GroupNorm ...@@ -19,12 +20,17 @@ GroupNorm
- **data_layout** (str, 可选) - 只支持“NCHW”(num_batches,channels,height,width)格式。默认值:“NCHW”。 - **data_layout** (str, 可选) - 只支持“NCHW”(num_batches,channels,height,width)格式。默认值:“NCHW”。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。
返回:无 返回
::::::::::::
抛出异常
::::::::::::
抛出异常:
- ValueError - 如果 ``data_layout`` 不是“NCHW”格式。 - ValueError - 如果 ``data_layout`` 不是“NCHW”格式。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -28,7 +28,9 @@ InverseTimeDecay ...@@ -28,7 +28,9 @@ InverseTimeDecay
- :math:`decayed\_learning\_rate` : 衰减后的学习率。 - :math:`decayed\_learning\_rate` : 衰减后的学习率。
式子中各参数详细介绍请看参数说明。 式子中各参数详细介绍请看参数说明。
参数: 参数
::::::::::::
- **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。
- **decay_steps** (int) - 衰减步数,见以上衰减运算式子。 - **decay_steps** (int) - 衰减步数,见以上衰减运算式子。
- **decay_rate** (float)- 衰减率。见以上衰减运算。 - **decay_rate** (float)- 衰减率。见以上衰减运算。
...@@ -37,9 +39,12 @@ InverseTimeDecay ...@@ -37,9 +39,12 @@ InverseTimeDecay
- **step** (int,可选) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。 - **step** (int,可选) - 步大小,即以上运算式子中global_step的每次的增量值,使得global_step随着训练的次数递增。默认值为1。
- **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - **dtype** (str,可选) - 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -22,12 +22,17 @@ L1Loss ...@@ -22,12 +22,17 @@ L1Loss
如果 :attr:`reduction` 是 ``'none'``, 则输出Loss的维度为 [N, *], 与输入input相同。 如果 :attr:`reduction` 是 ``'none'``, 则输出Loss的维度为 [N, *], 与输入input相同。
如果 :attr:`reduction` 是 ``'mean'`` 或 ``'sum'``, 则输出Loss的维度为 [1]。 如果 :attr:`reduction` 是 ``'mean'`` 或 ``'sum'``, 则输出Loss的维度为 [1]。
参数: 参数
::::::::::::
- **reduction** (string, 可选): - 指定应用于输出结果的计算方式,可选值有: ``'none'``, ``'mean'``, ``'sum'`` 。默认为 ``'mean'``,计算 `L1Loss` 的均值;设置为 ``'sum'`` 时,计算 `L1Loss` 的总和;设置为 ``'none'`` 时,则返回L1Loss。数据类型为string。 - **reduction** (string, 可选): - 指定应用于输出结果的计算方式,可选值有: ``'none'``, ``'mean'``, ``'sum'`` 。默认为 ``'mean'``,计算 `L1Loss` 的均值;设置为 ``'sum'`` 时,计算 `L1Loss` 的总和;设置为 ``'none'`` 时,则返回L1Loss。数据类型为string。
返回:返回计算L1Loss的可调用对象。 返回
::::::::::::
返回计算L1Loss的可调用对象。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
# declarative mode # declarative mode
......
...@@ -7,12 +7,17 @@ LayerList ...@@ -7,12 +7,17 @@ LayerList
LayerList用于保存子层列表,它包含的子层将被正确地注册和添加。列表中的子层可以像常规python列表一样被索引。 LayerList用于保存子层列表,它包含的子层将被正确地注册和添加。列表中的子层可以像常规python列表一样被索引。
参数: 参数
::::::::::::
- **sublayers** (iterable,可选) - 要保存的子层。 - **sublayers** (iterable,可选) - 要保存的子层。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,7 +6,6 @@ LayerNorm ...@@ -6,7 +6,6 @@ LayerNorm
.. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.LayerNorm(normalized_shape, scale=True, shift=True, begin_norm_axis=1, epsilon=1e-05, param_attr=None, bias_attr=None, act=None, dtype="float32")
该接口用于构建 ``LayerNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了层归一化层(Layer Normalization Layer)的功能,其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization <https://arxiv.org/pdf/1607.06450v1.pdf>`_ 该接口用于构建 ``LayerNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了层归一化层(Layer Normalization Layer)的功能,其可以应用于小批量输入数据。更多详情请参考:`Layer Normalization <https://arxiv.org/pdf/1607.06450v1.pdf>`_
计算公式如下 计算公式如下
.. math:: .. math::
...@@ -23,7 +22,9 @@ LayerNorm ...@@ -23,7 +22,9 @@ LayerNorm
- :math:`b` : 可训练的偏差参数 - :math:`b` : 可训练的偏差参数
参数: 参数
::::::::::::
- **normalized_shape** (int 或 list 或 tuple) – 需规范化的shape,期望的输入shape为 ``[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]``。如果是单个整数,则此模块将在最后一个维度上规范化(此时最后一维的维度需与该参数相同)。 - **normalized_shape** (int 或 list 或 tuple) – 需规范化的shape,期望的输入shape为 ``[*, normalized_shape[0], normalized_shape[1], ..., normalized_shape[-1]]``。如果是单个整数,则此模块将在最后一个维度上规范化(此时最后一维的维度需与该参数相同)。
- **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。 - **scale** (bool, 可选) - 指明是否在归一化后学习自适应增益 ``g`` 。默认值:True。
- **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。 - **shift** (bool, 可选) - 指明是否在归一化后学习自适应偏差 ``b`` 。默认值:True。
...@@ -34,9 +35,12 @@ LayerNorm ...@@ -34,9 +35,12 @@ LayerNorm
- **dtype** (str,可选) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。 - **dtype** (str,可选) - 输出Tensor或LoDTensor的数据类型,数据类型必须为:float32或float64,默认为float32。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -7,33 +7,47 @@ Layer ...@@ -7,33 +7,47 @@ Layer
基于OOD实现的动态图Layer,包含该Layer的参数、前序运行的结构等信息。 基于OOD实现的动态图Layer,包含该Layer的参数、前序运行的结构等信息。
参数: 参数
::::::::::::
- **name_scope** (str,可选) - Layer内部参数命名而采用的名称前缀。如果前缀为“mylayer”,在一个类名为MyLayerLayer中,参数名为“mylayer_0.w_n”,其中w是参数的名称,n为自动生成的具有唯一性的后缀。如果为None,前缀名将为小写的类名。默认值为None - **name_scope** (str,可选) - Layer内部参数命名而采用的名称前缀。如果前缀为“mylayer”,在一个类名为MyLayerLayer中,参数名为“mylayer_0.w_n”,其中w是参数的名称,n为自动生成的具有唯一性的后缀。如果为None,前缀名将为小写的类名。默认值为None
- **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32``
返回:无 返回
::::::::::::
.. py:method:: train() 方法
::::::::::::
train()
'''''''''
将此层及其所有子层设置为训练模式。这只会影响某些模块,如Dropout和BatchNorm。 将此层及其所有子层设置为训练模式。这只会影响某些模块,如Dropout和BatchNorm。
返回:无 **返回**
.. py:method:: eval() eval()
'''''''''
将此层及其所有子层设置为预测模式。这只会影响某些模块,如DropoutBatchNorm 将此层及其所有子层设置为预测模式。这只会影响某些模块,如DropoutBatchNorm
返回:无 **返回**
.. py:method:: full_name() full_name()
'''''''''
Layer的全名。组成方式为: ``name_scope`` + “/” + MyLayer.__class__.__name__ 。 Layer的全名。组成方式为: ``name_scope`` + “/” + MyLayer.__class__.__name__ 。
返回:Layer的全名 **返回**
Layer的全名
返回类型:str **返回类型**
str
.. py:method:: register_forward_pre_hook(hook) register_forward_pre_hook(hook)
'''''''''
Layer注册一个 ``forward pre-hook`` 函数,该 ``hook`` 函数将会在 ``forward`` 函数调用之前被调用。 Layer注册一个 ``forward pre-hook`` 函数,该 ``hook`` 函数将会在 ``forward`` 函数调用之前被调用。
...@@ -41,12 +55,15 @@ Layer的全名。组成方式为: ``name_scope`` + “/” + MyLayer.__class__ ...@@ -41,12 +55,15 @@ Layer的全名。组成方式为: ``name_scope`` + “/” + MyLayer.__class__
hook(Layer, input) -> None or modified input hook(Layer, input) -> None or modified input
参数: **参数**
- **hook** (function) - 被注册为 ``forward pre-hook`` 的函数 - **hook** (function) - 被注册为 ``forward pre-hook`` 的函数
返回:一个 ``HookRemoveHelper`` 类对象,可通过调用 ``hook_remove_helper.remove()`` 来删除注册的hook函数。 **返回**
一个 ``HookRemoveHelper`` 类对象,可通过调用 ``hook_remove_helper.remove()`` 来删除注册的hook函数。
返回类型: ``HookRemoveHelper`` 类对象 **返回类型**
``HookRemoveHelper`` 类对象
**代码示例** **代码示例**
...@@ -81,7 +98,8 @@ hook(Layer, input) -> None or modified input ...@@ -81,7 +98,8 @@ hook(Layer, input) -> None or modified input
# hook改变了layer的输入(input = input * 2),所以out0等于out1 # hook改变了layer的输入(input = input * 2),所以out0等于out1
assert (out0.numpy() == out1.numpy()).any() assert (out0.numpy() == out1.numpy()).any()
.. py:method:: register_forward_post_hook(hook) register_forward_post_hook(hook)
'''''''''
为Layer注册一个 ``forward post-hook`` 函数,该 ``hook`` 函数将会在 ``forward`` 函数调用之后被调用。 为Layer注册一个 ``forward post-hook`` 函数,该 ``hook`` 函数将会在 ``forward`` 函数调用之后被调用。
...@@ -89,12 +107,15 @@ hook(Layer, input) -> None or modified input ...@@ -89,12 +107,15 @@ hook(Layer, input) -> None or modified input
hook(Layer, input, output) -> None or modified output hook(Layer, input, output) -> None or modified output
参数: **参数**
- **hook** (function) - 被注册为 ``forward post-hook`` 的函数 - **hook** (function) - 被注册为 ``forward post-hook`` 的函数
返回:一个 ``HookRemoveHelper`` 类对象,可通过调用 ``hook_remove_helper.remove()`` 来删除注册的hook函数。 **返回**
一个 ``HookRemoveHelper`` 类对象,可通过调用 ``hook_remove_helper.remove()`` 来删除注册的hook函数。
返回类型: ``HookRemoveHelper`` 类对象 **返回类型**
``HookRemoveHelper`` 类对象
**代码示例** **代码示例**
...@@ -127,58 +148,75 @@ hook(Layer, input, output) -> None or modified output ...@@ -127,58 +148,75 @@ hook(Layer, input, output) -> None or modified output
# hook改变了layer的输出(output = output * 2),所以out0等于out1 * 2 # hook改变了layer的输出(output = output * 2),所以out0等于out1 * 2
assert (out0.numpy() == (out1.numpy()) * 2).any() assert (out0.numpy() == (out1.numpy()) * 2).any()
.. py:method:: create_parameter(shape, attr=None, dtype="float32", is_bias=False, default_initializer=None) create_parameter(shape, attr=None, dtype="float32", is_bias=False, default_initializer=None)
'''''''''
Layer创建参数。 Layer创建参数。
参数: **参数**
- **shape** (list) - 参数的形状。列表中的数据类型必须为int - **shape** (list) - 参数的形状。列表中的数据类型必须为int
- **attr** (ParamAttr,可选) - 指定权重参数属性的对象,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。默认值为None - **attr** (ParamAttr,可选) - 指定权重参数属性的对象,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。默认值为None
- **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为“float32”。 - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为“float32”。
- **is_bias** (bool, 可选) - 是否是偏置参数。默认值:False - **is_bias** (bool, 可选) - 是否是偏置参数。默认值:False
- **default_initializer** (Initializer, 可选) - 默认的参数初始化方法。如果设置为None,则设置非bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_XavierInitializer` ,设置bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_ConstantInitializer` 。默认值:None - **default_initializer** (Initializer, 可选) - 默认的参数初始化方法。如果设置为None,则设置非bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_XavierInitializer` ,设置bias参数的初始化方式为 :ref:`cn_api_fluid_initializer_ConstantInitializer` 。默认值:None
返回:创建的参数变量 **返回**
创建的参数变量
返回类型: :ref:`cn_api_fluid_Variable` **返回类型**
:ref:`cn_api_fluid_Variable`
.. py:method:: create_variable(name=None, persistable=None, dtype=None, type=VarType.LOD_TENSOR) create_variable(name=None, persistable=None, dtype=None, type=VarType.LOD_TENSOR)
'''''''''
为Layer创建变量。 为Layer创建变量。
参数: **参数**
- **name** (str, 可选) - 变量名。默认值:None。 - **name** (str, 可选) - 变量名。默认值:None。
- **persistable** (bool, 可选) - 是否为持久性变量,后续会被移出。默认值:None。 - **persistable** (bool, 可选) - 是否为持久性变量,后续会被移出。默认值:None。
- **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` 。 - **dtype** (str|core.VarDesc.VarType, 可选) - Layer中参数数据类型。如果设置为str,则可以是“bool”,“float16”,“float32”,“float64”,“int8”,“int16”,“int32”,“int64”,“uint8”或“uint16”。默认值为 ``core.VarDesc.VarType.FP32`` 。
- **type** (core.VarDesc.VarType, 可选) - 变量类型,该参数不需要用户设置。默认值:core.VarDesc.VarType.LOD_TENSOR。 - **type** (core.VarDesc.VarType, 可选) - 变量类型,该参数不需要用户设置。默认值:core.VarDesc.VarType.LOD_TENSOR。
返回:创建的 ``Tensor`` **返回**
创建的 ``Tensor``
返回类型: :ref:`cn_api_fluid_Variable` **返回类型**
:ref:`cn_api_fluid_Variable`
.. py:method:: parameters(include_sublayers=True) parameters(include_sublayers=True)
'''''''''
返回一个由当前层及其子层的所有参数组成的列表。 返回一个由当前层及其子层的所有参数组成的列表。
参数: **参数**
- **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True - **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True
返回:一个由当前层及其子层的所有参数组成的列表,列表中的元素类型为Parameter(Variable) **返回**
一个由当前层及其子层的所有参数组成的列表,列表中的元素类型为Parameter(Variable)
返回类型:list **返回类型**
list
.. py:method:: sublayers(include_sublayers=True) sublayers(include_sublayers=True)
'''''''''
返回一个由所有子层组成的列表。 返回一个由所有子层组成的列表。
参数: **参数**
- **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True。 - **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True。
返回: 一个由所有子层组成的列表,列表中的元素类型为Layer **返回**
一个由所有子层组成的列表,列表中的元素类型为Layer。
返回类型:list **返回类型**
list
.. py:method:: clear_gradients() clear_gradients()
'''''''''
清除该层所有参数的梯度。 清除该层所有参数的梯度。
...@@ -201,17 +239,21 @@ hook(Layer, input, output) -> None or modified output ...@@ -201,17 +239,21 @@ hook(Layer, input, output) -> None or modified output
linear.clear_gradients() linear.clear_gradients()
.. py:method:: named_parameters(prefix='', include_sublayers=True) named_parameters(prefix='', include_sublayers=True)
'''''''''
返回层中所有参数的迭代器,生成名称和参数的元组。 返回层中所有参数的迭代器,生成名称和参数的元组。
参数: **参数**
- **prefix** (str, 可选) - 在所有参数名称前加的前缀。默认值:''。 - **prefix** (str, 可选) - 在所有参数名称前加的前缀。默认值:''。
- **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True。 - **include_sublayers** (bool, 可选) - 是否返回子层的参数。如果为True,返回的列表中包含子层的参数。默认值:True。
返回:产出名称和参数的元组的迭代器。 **返回**
产出名称和参数的元组的迭代器。
返回类型:iterator **返回类型**
iterator
**代码示例** **代码示例**
...@@ -226,19 +268,23 @@ hook(Layer, input, output) -> None or modified output ...@@ -226,19 +268,23 @@ hook(Layer, input, output) -> None or modified output
for name, param in model.named_parameters(): for name, param in model.named_parameters():
print(name, param) print(name, param)
.. py:method:: named_sublayers(prefix='', include_sublayers=True, include_self=False, layers_set=None) named_sublayers(prefix='', include_sublayers=True, include_self=False, layers_set=None)
'''''''''
返回层中所有子层上的迭代器,生成名称和子层的元组。重复的子层只产生一次。 返回层中所有子层上的迭代器,生成名称和子层的元组。重复的子层只产生一次。
参数: **参数**
- **prefix** (str, 可选) - 在所有参数名称前加的前缀。默认值:'' - **prefix** (str, 可选) - 在所有参数名称前加的前缀。默认值:''
- **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True - **include_sublayers** (bool, 可选) - 是否返回子层中各个子层。如果为True,则包括子层中的各个子层。默认值:True
- **include_self** (bool, 可选) - 是否包含该层自身。默认值:False - **include_self** (bool, 可选) - 是否包含该层自身。默认值:False
- **layers_set** (set, 可选): 记录重复子层的集合。默认值:None - **layers_set** (set, 可选): 记录重复子层的集合。默认值:None
返回:产出名称和子层的元组的迭代器。 **返回**
产出名称和子层的元组的迭代器。
返回类型:iterator **返回类型**
iterator
**代码示例** **代码示例**
...@@ -253,49 +299,63 @@ hook(Layer, input, output) -> None or modified output ...@@ -253,49 +299,63 @@ hook(Layer, input, output) -> None or modified output
for prefix, layer in model.named_sublayers(): for prefix, layer in model.named_sublayers():
print(prefix, layer) print(prefix, layer)
.. py:method:: forward(*inputs, **kwargs) forward(*inputs, **kwargs)
'''''''''
定义每次调用时执行的计算。应该被所有子类覆盖。 定义每次调用时执行的计算。应该被所有子类覆盖。
参数: **参数**
- **\*inputs** (tuple) - 解包后的tuple参数。 - **\*inputs** (tuple) - 解包后的tuple参数。
- **\*\*kwargs** (dict) - 解包后的dict参数。 - **\*\*kwargs** (dict) - 解包后的dict参数。
.. py:method:: add_sublayer(name, sublayer) add_sublayer(name, sublayer)
'''''''''
添加子层实例。可以通过self.name访问该sublayer 添加子层实例。可以通过self.name访问该sublayer
参数: **参数**
- **name** (str) - 子层名。 - **name** (str) - 子层名。
- **sublayer** (Layer) - Layer实例。 - **sublayer** (Layer) - Layer实例。
返回:添加的子层 **返回**
添加的子层
返回类型:Layer **返回类型**
Layer
.. py:method:: add_parameter(name, parameter) add_parameter(name, parameter)
'''''''''
添加参数实例。可以通过self.name访问该parameter。 添加参数实例。可以通过self.name访问该parameter。
参数: **参数**
- **name** (str) - 参数名。 - **name** (str) - 参数名。
- **parameter** (Parameter) - Parameter实例。 - **parameter** (Parameter) - Parameter实例。
返回:传入的参数实例 **返回**
传入的参数实例
返回类型:Parameter( :ref:`cn_api_fluid_Variable` ) **返回类型**
Parameter( :ref:`cn_api_fluid_Variable` )
.. py:method:: state_dict(destination=None, include_sublayers=True) state_dict(destination=None, include_sublayers=True)
'''''''''
获取当前层及其子层的所有参数。并将所有参数存放在dict结构中。 获取当前层及其子层的所有参数。并将所有参数存放在dict结构中。
参数: **参数**
- **destination** (dict, 可选) - 如果提供 ``destination`` ,则所有参数都将存放在 ``destination`` 中。 默认值:None - **destination** (dict, 可选) - 如果提供 ``destination`` ,则所有参数都将存放在 ``destination`` 中。 默认值:None
- **include_sublayers** (bool, 可选) - 如果设置为True,则包括子层的参数。默认值:True - **include_sublayers** (bool, 可选) - 如果设置为True,则包括子层的参数。默认值:True
返回:包含所有参数的dict **返回**
包含所有参数的dict
返回类型:dict **返回类型**
dict
**代码示例** **代码示例**
...@@ -307,15 +367,18 @@ hook(Layer, input, output) -> None or modified output ...@@ -307,15 +367,18 @@ hook(Layer, input, output) -> None or modified output
state_dict = emb.state_dict() state_dict = emb.state_dict()
fluid.save_dygraph(state_dict, "paddle_dy") fluid.save_dygraph(state_dict, "paddle_dy")
.. py:method:: set_dict(stat_dict, include_sublayers=True) set_dict(stat_dict, include_sublayers=True)
'''''''''
根据传入的 ``stat_dict`` 设置参数。 所有参数将由 ``stat_dict`` 中的 ``Tensor`` 设置。 根据传入的 ``stat_dict`` 设置参数。 所有参数将由 ``stat_dict`` 中的 ``Tensor`` 设置。
参数: **参数**
- **state_dict** (dict) - 包含所有参数的dict。 - **state_dict** (dict) - 包含所有参数的dict。
- **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数。 默认值:True。 - **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数。 默认值:True。
返回:None **返回**
None
**代码示例** **代码示例**
...@@ -329,18 +392,21 @@ hook(Layer, input, output) -> None or modified output ...@@ -329,18 +392,21 @@ hook(Layer, input, output) -> None or modified output
para_state_dict, _ = fluid.load_dygraph("paddle_dy") para_state_dict, _ = fluid.load_dygraph("paddle_dy")
emb.set_dict(para_state_dict) emb.set_dict(para_state_dict)
.. py:method:: load_dict(stat_dict, include_sublayers=True) load_dict(stat_dict, include_sublayers=True)
'''''''''
.. warning:: .. warning::
该函数将被弃用。请使用set_dict函数。 该函数将被弃用。请使用set_dict函数。
根据传入的 ``stat_dict`` 设置参数。 所有参数将由 ``stat_dict`` 中的 ``Tensor`` 设置。 根据传入的 ``stat_dict`` 设置参数。 所有参数将由 ``stat_dict`` 中的 ``Tensor`` 设置。
参数: **参数**
- **state_dict** (dict) - 包含所有参数的dict - **state_dict** (dict) - 包含所有参数的dict
- **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数。 默认值:True - **include_sublayers** (bool, 可选) - 如果设置为True,则还包括子层的参数。 默认值:True
返回:None **返回**
None
**代码示例** **代码示例**
......
...@@ -20,7 +20,9 @@ Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状 ...@@ -20,7 +20,9 @@ Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状
如果 bias_attr 不是 None,则将创建一个 bias 变量并将其添加到输出中。 如果 bias_attr 不是 None,则将创建一个 bias 变量并将其添加到输出中。
最后,如果激活 act 不是 None,则相应激活函数也将应用于输出上。 最后,如果激活 act 不是 None,则相应激活函数也将应用于输出上。
参数: 参数
::::::::::::
- **input_dim** (int) – 线性变换层输入单元的数目。 - **input_dim** (int) – 线性变换层输入单元的数目。
- **output_dim** (int) – 线性变换层输出单元的数目。 - **output_dim** (int) – 线性变换层输出单元的数目。
- **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **param_attr** (ParamAttr, 可选) – 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
...@@ -28,9 +30,12 @@ Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状 ...@@ -28,9 +30,12 @@ Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状
- **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。 - **act** (str, 可选) – 应用于输出上的激活函数,如tanh、softmax、sigmoid,relu等,支持列表请参考 :ref:`api_guide_activations` ,默认值为None。
- **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。 - **dtype** (str, 可选) – 权重的数据类型,可以为float32或float64。默认为float32。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -47,11 +52,13 @@ Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状 ...@@ -47,11 +52,13 @@ Linear 层将输入 Tensor 与权重矩阵 :math:`W` 相乘,然后生成形状
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
...@@ -22,16 +22,23 @@ MSELoss ...@@ -22,16 +22,23 @@ MSELoss
.. math:: .. math::
Out = \operatorname{sum}((input - label)^2) Out = \operatorname{sum}((input - label)^2)
参数: 参数
::::::::::::
- **input** (Variable) - 预测值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - **input** (Variable) - 预测值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。
- **label** (Variable) - 目标值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。 - **label** (Variable) - 目标值,维度为 :math:`[N_1, N_2, ..., N_k, D]` 的多维Tensor,其中最后一维D是类别数目。数据类型为float32或float64。
- **reduction** (str, 可选) - 约简方式,可以是 'none' | 'mean' | 'sum'。设为'none'时不使用约简,设为'mean'时返回loss的均值,设为'sum'时返回loss的和。 - **reduction** (str, 可选) - 约简方式,可以是 'none' | 'mean' | 'sum'。设为'none'时不使用约简,设为'mean'时返回loss的均值,设为'sum'时返回loss的和。
返回:预测值和目标值的均方差 返回
::::::::::::
预测值和目标值的均方差
返回类型:变量(Variable) 返回类型
::::::::::::
变量(Variable)
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,8 +6,9 @@ NCE ...@@ -6,8 +6,9 @@ NCE
.. py:class:: paddle.fluid.dygraph.NCE(num_total_classes, dim, param_attr=None, bias_attr=None, num_neg_samples=None, sampler='uniform', custom_dist=None, seed=0, is_sparse=False, dtype="float32") .. py:class:: paddle.fluid.dygraph.NCE(num_total_classes, dim, param_attr=None, bias_attr=None, num_neg_samples=None, sampler='uniform', custom_dist=None, seed=0, is_sparse=False, dtype="float32")
该接口用于构建 ``NCE`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``NCE`` 损失函数的功能,其默认使用均匀分布进行抽样,计算并返回噪音对比估计( noise-contrastive estimation training loss)。更多详情请参考:`Noise-contrastive estimation: A new estimation principle for unnormalized statistical models <http://www.jmlr.org/proceedings/papers/v9/gutmann10a/gutmann10a.pdf>`_ 该接口用于构建 ``NCE`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``NCE`` 损失函数的功能,其默认使用均匀分布进行抽样,计算并返回噪音对比估计( noise-contrastive estimation training loss)。更多详情请参考:`Noise-contrastive estimation: A new estimation principle for unnormalized statistical models <http://www.jmlr.org/proceedings/papers/v9/gutmann10a/gutmann10a.pdf>`_
参数
::::::::::::
参数:
- **num_total_classes** (int) - 所有样本中的类别的总数。 - **num_total_classes** (int) - 所有样本中的类别的总数。
- **dim** (int) - 输入的维度(一般为词嵌入的维度)。 - **dim** (int) - 输入的维度(一般为词嵌入的维度)。
- **sample_weight** (Variable, 可选) - 维度为\[batch_size, 1\],存储每个样本的权重。每个样本的默认权重为1.0。默认值:None。 - **sample_weight** (Variable, 可选) - 维度为\[batch_size, 1\],存储每个样本的权重。每个样本的默认权重为1.0。默认值:None。
...@@ -20,9 +21,12 @@ NCE ...@@ -20,9 +21,12 @@ NCE
- **is_sparse** (bool, 可选) – 指明是否使用稀疏更新,如果为True, :math:`weight@GRAD` 和 :math:`bias@GRAD` 会变为 SelectedRows。默认值:False。 - **is_sparse** (bool, 可选) – 指明是否使用稀疏更新,如果为True, :math:`weight@GRAD` 和 :math:`bias@GRAD` 会变为 SelectedRows。默认值:False。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -70,10 +74,12 @@ NCE ...@@ -70,10 +74,12 @@ NCE
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
...@@ -28,18 +28,25 @@ NLLLoss ...@@ -28,18 +28,25 @@ NLLLoss
\text{if reduction} = \text{'sum'.} \text{if reduction} = \text{'sum'.}
\end{cases} \end{cases}
参数: 参数
::::::::::::
- **input** (Variable): - 输入 `Tensor`, 其形状为 :math:`[N, C]` , 其中 `C` 为类别数。但是对于多维度的情形下,它的形状为 :math:`[N, C, d_1, d_2, ..., d_K]` 。数据类型为float32或float64。 - **input** (Variable): - 输入 `Tensor`, 其形状为 :math:`[N, C]` , 其中 `C` 为类别数。但是对于多维度的情形下,它的形状为 :math:`[N, C, d_1, d_2, ..., d_K]` 。数据类型为float32或float64。
- **label** (Variable): - 输入input对应的标签值。其形状为 :math:`[N,]` 或者 :math:`[N, d_1, d_2, ..., d_K]`, 数据类型为int64。 - **label** (Variable): - 输入input对应的标签值。其形状为 :math:`[N,]` 或者 :math:`[N, d_1, d_2, ..., d_K]`, 数据类型为int64。
- **weight** (Variable, 可选): - 手动指定每个类别的权重。其默认为 `None` 。如果提供该参数的话,长度必须为 `num_classes` 。数据类型为float32或float64。 - **weight** (Variable, 可选): - 手动指定每个类别的权重。其默认为 `None` 。如果提供该参数的话,长度必须为 `num_classes` 。数据类型为float32或float64。
- **reduction** (string, 可选): - 指定应用于输出结果的计算方式,可选值有: `none`, `mean`, `sum` 。默认为 `mean` ,计算 `mini-batch` loss均值。设置为 `sum` 时,计算 `mini-batch` loss的总和。设置为 `none` 时,则返回loss Tensor。数据类型为string。 - **reduction** (string, 可选): - 指定应用于输出结果的计算方式,可选值有: `none`, `mean`, `sum` 。默认为 `mean` ,计算 `mini-batch` loss均值。设置为 `sum` 时,计算 `mini-batch` loss的总和。设置为 `none` 时,则返回loss Tensor。数据类型为string。
- **ignore_index** (int64, 可选): - 指定一个忽略的标签值,此标签值不参与计算。默认值为-100。数据类型为int64。 - **ignore_index** (int64, 可选): - 指定一个忽略的标签值,此标签值不参与计算。默认值为-100。数据类型为int64。
返回:返回存储表示 `negative log likihood loss` 的损失值。 返回
::::::::::::
返回存储表示 `negative log likihood loss` 的损失值。
返回类型:Variable 返回类型
::::::::::::
Variable
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -32,7 +32,9 @@ NaturalExpDecay ...@@ -32,7 +32,9 @@ NaturalExpDecay
- :math:`decayed\_learning\_rate` : 衰减后的学习率。 - :math:`decayed\_learning\_rate` : 衰减后的学习率。
式子中各参数详细介绍请看参数说明。 式子中各参数详细介绍请看参数说明。
参数: 参数
::::::::::::
- **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - **learning_rate** (Variable|float) - 初始学习率值。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。
- **decay_steps** (int) – 指定衰减的步长。该参数确定衰减的周期。 - **decay_steps** (int) – 指定衰减的步长。该参数确定衰减的周期。
- **decay_rate** (float) – 指定衰减率。 - **decay_rate** (float) – 指定衰减率。
...@@ -41,9 +43,12 @@ NaturalExpDecay ...@@ -41,9 +43,12 @@ NaturalExpDecay
- **step** (int,可选) – 步大小,即以上运算式子中global_step的每次的增量值。默认值为1。 - **step** (int,可选) – 步大小,即以上运算式子中global_step的每次的增量值。默认值为1。
- **dtype** – (str,可选) 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - **dtype** – (str,可选) 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -22,7 +22,9 @@ Noam衰减的计算方式如下。 ...@@ -22,7 +22,9 @@ Noam衰减的计算方式如下。
- :math:`decayed\_learning\_rate` : 衰减后的学习率。 - :math:`decayed\_learning\_rate` : 衰减后的学习率。
式子中各参数详细介绍请看参数说明。 式子中各参数详细介绍请看参数说明。
参数: 参数
::::::::::::
- **d$_{model}$** (Variable|int) - 模型的输入、输出向量特征维度,为超参数。如果设置为Variable类型值,则数据类型可以为int32或int64的标量Tensor,也可以设置为Python int。 - **d$_{model}$** (Variable|int) - 模型的输入、输出向量特征维度,为超参数。如果设置为Variable类型值,则数据类型可以为int32或int64的标量Tensor,也可以设置为Python int。
- **warmup_steps** (Variable|int) - 预热步数,为超参数。如果设置为Variable类型,则数据类型为int32或int64的标量Tensor,也可以设置为为Python int。 - **warmup_steps** (Variable|int) - 预热步数,为超参数。如果设置为Variable类型,则数据类型为int32或int64的标量Tensor,也可以设置为为Python int。
- **begin** (int,可选) – 起始步。即以上运算式子中global_steps的初始值。默认值为0。 - **begin** (int,可选) – 起始步。即以上运算式子中global_steps的初始值。默认值为0。
...@@ -30,9 +32,12 @@ Noam衰减的计算方式如下。 ...@@ -30,9 +32,12 @@ Noam衰减的计算方式如下。
- **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认值为"float32"。 - **dtype** (str,可选) – 学习率值的数据类型,可以为"float32", "float64"。默认值为"float32"。
- **learning_rate** (Variable|float|int,可选) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的int类型。默认值为1.0。 - **learning_rate** (Variable|float|int,可选) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的int类型。默认值为1.0。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,14 +6,15 @@ PRelu ...@@ -6,14 +6,15 @@ PRelu
.. py:class:: paddle.fluid.dygraph.PRelu(mode, input_shape=None, param_attr=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.PRelu(mode, input_shape=None, param_attr=None, dtype="float32")
该接口用于构建 ``PRelu`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``PRelu`` 激活函数的三种激活方式。 该接口用于构建 ``PRelu`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了 ``PRelu`` 激活函数的三种激活方式。
计算公式如下: 计算公式如下:
.. math:: .. math::
y = max(0, x) + \alpha min(0, x) y = max(0, x) + \alpha min(0, x)
参数: 参数
::::::::::::
- **mode** (str) - 权重共享模式。共提供三种激活方式: - **mode** (str) - 权重共享模式。共提供三种激活方式:
.. code-block:: text .. code-block:: text
...@@ -27,9 +28,12 @@ PRelu ...@@ -27,9 +28,12 @@ PRelu
- **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。 - **param_attr** (ParamAttr, 可选) - 指定权重参数属性的对象。默认值为None,表示使用默认的权重参数属性。具体用法请参见 :ref:`cn_api_fluid_ParamAttr` 。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值:"float32"。
返回:无 返回
::::::::::::
**代码示例:** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -57,7 +61,9 @@ PRelu ...@@ -57,7 +61,9 @@ PRelu
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight
weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
...@@ -14,7 +14,8 @@ ParallelEnv ...@@ -14,7 +14,8 @@ ParallelEnv
ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配置动态图并行执行。 ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配置动态图并行执行。
**示例代码:** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
# 这个示例需要由paddle.distributed.launch启动, 用法为: # 这个示例需要由paddle.distributed.launch启动, 用法为:
...@@ -57,16 +58,17 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配 ...@@ -57,16 +58,17 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配
adam.minimize(avg_loss) adam.minimize(avg_loss)
linear.clear_gradients() linear.clear_gradients()
属性 属性
:::::::::::: ::::::::::::
nranks
.. py:attribute:: nranks '''''''''
参与训练进程的数量,一般也是训练所使用GPU卡的数量。 参与训练进程的数量,一般也是训练所使用GPU卡的数量。
此属性的值等于环境变量 `PADDLE_TRAINERS_NUM` 的值。默认值为1。 此属性的值等于环境变量 `PADDLE_TRAINERS_NUM` 的值。默认值为1。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_TRAINERS_NUM=4 # 在Linux环境,提前执行此命令: export PADDLE_TRAINERS_NUM=4
...@@ -77,13 +79,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配 ...@@ -77,13 +79,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配
# The nranks is 4 # The nranks is 4
.. py:attribute:: local_rank local_rank
'''''''''
当前训练进程的编号。 当前训练进程的编号。
此属性的值等于环境变量 `PADDLE_TRAINER_ID` 的值。默认值是0。 此属性的值等于环境变量 `PADDLE_TRAINER_ID` 的值。默认值是0。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ID=0 # 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ID=0
...@@ -94,13 +97,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配 ...@@ -94,13 +97,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配
# The local rank is 0 # The local rank is 0
.. py:attribute:: dev_id dev_id
'''''''''
当前用于并行训练的GPU的编号。 当前用于并行训练的GPU的编号。
此属性的值等于环境变量 `FLAGS_selected_gpus` 的值。默认值是0。 此属性的值等于环境变量 `FLAGS_selected_gpus` 的值。默认值是0。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
# 在Linux环境,提前执行此命令: export FLAGS_selected_gpus=1 # 在Linux环境,提前执行此命令: export FLAGS_selected_gpus=1
...@@ -111,13 +115,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配 ...@@ -111,13 +115,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配
# The device id are 1 # The device id are 1
.. py:attribute:: current_endpoint current_endpoint
'''''''''
当前训练进程的终端节点IP与相应端口,形式为(机器节点IP:端口号)。例如:127.0.0.1:6170。 当前训练进程的终端节点IP与相应端口,形式为(机器节点IP:端口号)。例如:127.0.0.1:6170。
此属性的值等于环境变量 `PADDLE_CURRENT_ENDPOINT` 的值。默认值为空字符串""。 此属性的值等于环境变量 `PADDLE_CURRENT_ENDPOINT` 的值。默认值为空字符串""。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_CURRENT_ENDPOINT=127.0.0.1:6170 # 在Linux环境,提前执行此命令: export PADDLE_CURRENT_ENDPOINT=127.0.0.1:6170
...@@ -128,13 +133,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配 ...@@ -128,13 +133,14 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配
# The current endpoint are 127.0.0.1:6170 # The current endpoint are 127.0.0.1:6170
.. py:attribute:: trainer_endpoints trainer_endpoints
'''''''''
当前任务所有参与训练进程的终端节点IP与相应端口,用于在NCCL2初始化的时候建立通信,广播NCCL ID。 当前任务所有参与训练进程的终端节点IP与相应端口,用于在NCCL2初始化的时候建立通信,广播NCCL ID。
此属性的值等于环境变量 `PADDLE_TRAINER_ENDPOINTS` 的值。默认值为空字符串""。 此属性的值等于环境变量 `PADDLE_TRAINER_ENDPOINTS` 的值。默认值为空字符串""。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
# 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ENDPOINTS=127.0.0.1:6170,127.0.0.1:6171 # 在Linux环境,提前执行此命令: export PADDLE_TRAINER_ENDPOINTS=127.0.0.1:6170,127.0.0.1:6171
...@@ -142,4 +148,4 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配 ...@@ -142,4 +148,4 @@ ParallelEnv通常需要和 `fluid.dygraph.DataParallel` 一起使用,用于配
env = fluid.dygraph.ParallelEnv() env = fluid.dygraph.ParallelEnv()
print("The trainer endpoints are %s" % env.trainer_endpoints) print("The trainer endpoints are %s" % env.trainer_endpoints)
# The trainer endpoints are ['127.0.0.1:6170', '127.0.0.1:6171'] # The trainer endpoints are ['127.0.0.1:6170', '127.0.0.1:6171']
\ No newline at end of file
...@@ -7,12 +7,17 @@ ParameterList ...@@ -7,12 +7,17 @@ ParameterList
参数列表容器。此容器的行为类似于Python列表,但它包含的参数将被正确地注册和添加。 参数列表容器。此容器的行为类似于Python列表,但它包含的参数将被正确地注册和添加。
参数: 参数
::::::::::::
- **parameters** (iterable,可选) - 可迭代的Parameters - **parameters** (iterable,可选) - 可迭代的Parameters
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -18,16 +18,21 @@ PiecewiseDecay ...@@ -18,16 +18,21 @@ PiecewiseDecay
2、在当前训练步数global_step大于或等于10000步,并且小于20000步时,学习率值为0.5。 2、在当前训练步数global_step大于或等于10000步,并且小于20000步时,学习率值为0.5。
3、在当前训练步数global_step大于或等于20000步时,学习率值为0.1。 3、在当前训练步数global_step大于或等于20000步时,学习率值为0.1。
参数: 参数
::::::::::::
- **boundaries** (list) - 指定衰减的步数边界。列表的数据元素为Python int类型。 - **boundaries** (list) - 指定衰减的步数边界。列表的数据元素为Python int类型。
- **values** (list) - 备选学习率列表。数据元素类型为Python float的列表。与边界值列表有对应的关系。 - **values** (list) - 备选学习率列表。数据元素类型为Python float的列表。与边界值列表有对应的关系。
- **begin** (int) – 起始步,即以上举例描述中global_step的初始化值。 - **begin** (int) – 起始步,即以上举例描述中global_step的初始化值。
- **step** (int,可选) – 步大小,即以上举例描述中global_step每步的递增值。默认值为1。 - **step** (int,可选) – 步大小,即以上举例描述中global_step每步的递增值。默认值为1。
- **dtype** (str,可选) – 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - **dtype** (str,可选) – 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -30,7 +30,9 @@ PolynomialDecay ...@@ -30,7 +30,9 @@ PolynomialDecay
- :math:`decayed\_learning\_rate` : 衰减后的学习率。 - :math:`decayed\_learning\_rate` : 衰减后的学习率。
式子中各参数详细介绍请看参数说明。 式子中各参数详细介绍请看参数说明。
参数: 参数
::::::::::::
- **learning_rate** (Variable|float32) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。 - **learning_rate** (Variable|float32) - 初始学习率。如果类型为Variable,则为shape为[1]的Tensor,数据类型为float32或float64;也可以是python的float类型。
- **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。 - **decay_steps** (int) - 衰减步数。必须是正整数,该参数确定衰减周期。
- **end_learning_rate** (float,可选) - 最小的最终学习率。默认值为0.0001。 - **end_learning_rate** (float,可选) - 最小的最终学习率。默认值为0.0001。
...@@ -40,10 +42,13 @@ PolynomialDecay ...@@ -40,10 +42,13 @@ PolynomialDecay
- **step** (int,可选) – 步大小,即以上运算式子中global_step的递增值。默认值为1。 - **step** (int,可选) – 步大小,即以上运算式子中global_step的递增值。默认值为1。
- **dtype** (str,可选)– 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。 - **dtype** (str,可选)– 初始化学习率变量的数据类型,可以为"float32", "float64"。默认值为"float32"。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,7 +6,6 @@ Pool2D ...@@ -6,7 +6,6 @@ Pool2D
.. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True) .. py:class:: paddle.fluid.dygraph.Pool2D(pool_size=-1, pool_type='max', pool_stride=1, pool_padding=0, global_pooling=False, use_cudnn=True, ceil_mode=False, exclusive=True)
该接口用于构建 ``Pool2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维池化层,并使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` , 步长 ``pool_stride`` ,填充 ``pool_padding`` 这些参数得到输出。 该接口用于构建 ``Pool2D`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个二维池化层,并使用上述输入参数的池化配置,为二维空间池化操作,根据 ``input`` , 池化类型 ``pool_type`` , 池化核大小 ``pool_size`` , 步长 ``pool_stride`` ,填充 ``pool_padding`` 这些参数得到输出。
输入X和输出Out是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数( ``ksize``, ``strides``, ``paddings`` )含有两个整型元素。分别表示高度和宽度上的参数。输入X的大小和输出Out的大小可能不一致。 输入X和输出Out是NCHW格式,N为批大小,C是通道数,H是特征高度,W是特征宽度。参数( ``ksize``, ``strides``, ``paddings`` )含有两个整型元素。分别表示高度和宽度上的参数。输入X的大小和输出Out的大小可能不一致。
例如: 例如:
...@@ -51,7 +50,9 @@ Pool2D ...@@ -51,7 +50,9 @@ Pool2D
wend & = min(W, wstart + ksize[1]) \\ wend & = min(W, wstart + ksize[1]) \\
Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)} Output(i ,j) & = \frac{sum(Input[hstart:hend, wstart:wend])}{(hend - hstart) * (wend - wstart)}
参数: 参数
::::::::::::
- **pool_size** (int|list|tuple, 可选) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2。默认值:-1。 - **pool_size** (int|list|tuple, 可选) - 池化核的大小。如果它是一个元组或列表,它必须包含两个整数值, (pool_size_Height, pool_size_Width)。若为一个整数,则它的平方值将作为池化核大小,比如若pool_size=2, 则池化核大小为2x2。默认值:-1。
- **pool_type** (str, 可选) - 池化类型,可以是”max“对应max-pooling,“avg”对应average-pooling。默认为”max“。 - **pool_type** (str, 可选) - 池化类型,可以是”max“对应max-pooling,“avg”对应average-pooling。默认为”max“。
- **pool_stride** (int|list|tuple, 可选) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上stride均为该值。默认值为1。 - **pool_stride** (int|list|tuple, 可选) - 池化层的步长。如果它是一个元组或列表,它将包含两个整数,(pool_stride_Height, pool_stride_Width)。若为一个整数,则表示H和W维度上stride均为该值。默认值为1。
...@@ -61,14 +62,19 @@ Pool2D ...@@ -61,14 +62,19 @@ Pool2D
- **ceil_mode** (bool, 可选)- 是否用ceil函数计算输出高度和宽度。如果设为False,则使用floor函数。默认为False。 - **ceil_mode** (bool, 可选)- 是否用ceil函数计算输出高度和宽度。如果设为False,则使用floor函数。默认为False。
- **exclusive** (bool, 可选) - 是否在平均池化模式忽略填充值。默认为True。 - **exclusive** (bool, 可选) - 是否在平均池化模式忽略填充值。默认为True。
返回:无 返回
::::::::::::
抛出异常
::::::::::::
抛出异常:
- ``ValueError`` - 如果 ``pool_type`` 既不是“max”也不是“avg” - ``ValueError`` - 如果 ``pool_type`` 既不是“max”也不是“avg”
- ``ValueError`` - 如果 ``global_pooling`` 为False并且‘pool_size’为-1 - ``ValueError`` - 如果 ``global_pooling`` 为False并且‘pool_size’为-1
- ``ValueError`` - 如果 ``use_cudnn`` 不是bool值 - ``ValueError`` - 如果 ``use_cudnn`` 不是bool值
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -7,12 +7,17 @@ Sequential ...@@ -7,12 +7,17 @@ Sequential
顺序容器。子Layer将按构造函数参数的顺序添加到此容器中。传递给构造函数的参数可以Layers或可迭代的name Layer元组。 顺序容器。子Layer将按构造函数参数的顺序添加到此容器中。传递给构造函数的参数可以Layers或可迭代的name Layer元组。
参数: 参数
::::::::::::
- **layers** (tuple) - Layers或可迭代的name Layer对。 - **layers** (tuple) - Layers或可迭代的name Layer对。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -6,7 +6,6 @@ SpectralNorm ...@@ -6,7 +6,6 @@ SpectralNorm
.. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32") .. py:class:: paddle.fluid.dygraph.SpectralNorm(weight_shape, dim=0, power_iters=1, eps=1e-12, name=None, dtype="float32")
该接口用于构建 ``SpectralNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了谱归一化层的功能,用于计算fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量维度相同。谱特征值计算方式如下: 该接口用于构建 ``SpectralNorm`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其中实现了谱归一化层的功能,用于计算fc、conv1d、conv2d、conv3d层的权重参数的谱正则值,输入权重参数应分别为2-D, 3-D, 4-D, 5-D张量,输出张量与输入张量维度相同。谱特征值计算方式如下:
步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。 步骤1:生成形状为[H]的向量U,以及形状为[W]的向量V,其中H是输入权重张量的第 ``dim`` 个维度,W是剩余维度的乘积。
步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。 步骤2: ``power_iters`` 应该是一个正整数,用U和V迭代计算 ``power_iters`` 轮,迭代步骤如下。
...@@ -24,7 +23,9 @@ SpectralNorm ...@@ -24,7 +23,9 @@ SpectralNorm
可参考: `Spectral Normalization <https://arxiv.org/abs/1802.05957>`_ 可参考: `Spectral Normalization <https://arxiv.org/abs/1802.05957>`_
参数: 参数
::::::::::::
- **weight_shape** (list 或 tuple) - 权重参数的shape。 - **weight_shape** (list 或 tuple) - 权重参数的shape。
- **dim** (int, 可选) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1。默认值:0。 - **dim** (int, 可选) - 将输入(weight)重塑为矩阵之前应排列到第一个的维度索引,如果input(weight)是fc层的权重,则应设置为0;如果input(weight)是conv层的权重,则应设置为1。默认值:0。
- **power_iters** (int, 可选) - 将用于计算的 ``SpectralNorm`` 功率迭代次数,默认值:1。 - **power_iters** (int, 可选) - 将用于计算的 ``SpectralNorm`` 功率迭代次数,默认值:1。
...@@ -32,9 +33,12 @@ SpectralNorm ...@@ -32,9 +33,12 @@ SpectralNorm
- **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - **name** (str, 可选) - 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。
返回:无 返回
::::::::::::
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -15,17 +15,23 @@ TracedLayer使用 ``Executor`` 和 ``CompiledProgram`` 运行静态图模型。 ...@@ -15,17 +15,23 @@ TracedLayer使用 ``Executor`` 和 ``CompiledProgram`` 运行静态图模型。
TracedLayer只能用于将data independent的动态图模型转换为静态图模型,即待转换的动态图模型不应随tensor数据或维度的变化而变化。 TracedLayer只能用于将data independent的动态图模型转换为静态图模型,即待转换的动态图模型不应随tensor数据或维度的变化而变化。
.. py:staticmethod:: trace(layer, inputs) 方法
::::::::::::
**static** trace(layer, inputs)
'''''''''
创建TracedLayer对象的唯一接口,该接口会调用 ``layer(*inputs)`` 方法运行动态图模型并将其转换为静态图模型。 创建TracedLayer对象的唯一接口,该接口会调用 ``layer(*inputs)`` 方法运行动态图模型并将其转换为静态图模型。
参数: **参数**
- **layer** (dygraph.Layer) - 待追踪的动态图layer对象。 - **layer** (dygraph.Layer) - 待追踪的动态图layer对象。
- **inputs** (list(Variable)) - 动态图layer对象的输入变量列表。 - **inputs** (list(Variable)) - 动态图layer对象的输入变量列表。
返回: 包含2个元素的tuple,其中第一个元素是 ``layer(*inputs)`` 的输出结果,第二个元素是转换后得到的TracedLayer对象。 **返回**
包含2个元素的tuple,其中第一个元素是 ``layer(*inputs)`` 的输出结果,第二个元素是转换后得到的TracedLayer对象。
返回类型: tuple **返回类型**
tuple
**代码示例** **代码示例**
...@@ -57,15 +63,18 @@ TracedLayer只能用于将data independent的动态图模型转换为静态图 ...@@ -57,15 +63,18 @@ TracedLayer只能用于将data independent的动态图模型转换为静态图
# 将静态图模型保存为预测模型 # 将静态图模型保存为预测模型
static_layer.save_inference_model(dirname='./saved_infer_model') static_layer.save_inference_model(dirname='./saved_infer_model')
.. py:method:: set_strategy(build_strategy=None, exec_strategy=None) set_strategy(build_strategy=None, exec_strategy=None)
'''''''''
设置构建和执行静态图模型的相关策略。 设置构建和执行静态图模型的相关策略。
参数: **参数**
- **build_strategy** (BuildStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的构建策略。 - **build_strategy** (BuildStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的构建策略。
- **exec_strategy** (ExecutionStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的执行策略。 - **exec_strategy** (ExecutionStrategy, 可选) - TracedLayer内部 ``CompiledProgram`` 的执行策略。
返回: 无 **返回**
**代码示例** **代码示例**
...@@ -99,16 +108,19 @@ TracedLayer只能用于将data independent的动态图模型转换为静态图 ...@@ -99,16 +108,19 @@ TracedLayer只能用于将data independent的动态图模型转换为静态图
static_layer.set_strategy(build_strategy=build_strategy, exec_strategy=exec_strategy) static_layer.set_strategy(build_strategy=build_strategy, exec_strategy=exec_strategy)
out_static_graph = static_layer([in_var]) out_static_graph = static_layer([in_var])
.. py:method:: save_inference_model(dirname, feed=None, fetch=None) save_inference_model(dirname, feed=None, fetch=None)
'''''''''
将TracedLayer保存为用于预测部署的模型。保存的预测模型可被C++预测接口加载。 将TracedLayer保存为用于预测部署的模型。保存的预测模型可被C++预测接口加载。
参数: **参数**
- **dirname** (str) - 预测模型的保存目录。 - **dirname** (str) - 预测模型的保存目录。
- **feed** (list(int), 可选) - 预测模型输入变量的索引。若为None,则TracedLayer的所有输入变量均会作为预测模型的输入。默认值为None。 - **feed** (list(int), 可选) - 预测模型输入变量的索引。若为None,则TracedLayer的所有输入变量均会作为预测模型的输入。默认值为None。
- **fetch** (list(int), 可选) - 预测模型输出变量的索引。若为None,则TracedLayer的所有输出变量均会作为预测模型的输出。默认值为None。 - **fetch** (list(int), 可选) - 预测模型输出变量的索引。若为None,则TracedLayer的所有输出变量均会作为预测模型的输出。默认值为None。
返回: 无 **返回**
**代码示例** **代码示例**
......
...@@ -7,8 +7,9 @@ TreeConv ...@@ -7,8 +7,9 @@ TreeConv
该接口用于构建 ``TreeConv`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个基于树结构的卷积(Tree-Based Convolution)运算。基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。详情请参考: `基于树的卷积论文 <https://arxiv.org/abs/1409.5718v1>`_ 。 该接口用于构建 ``TreeConv`` 类的一个可调用对象,具体用法参照 ``代码示例`` 。其将在神经网络中构建一个基于树结构的卷积(Tree-Based Convolution)运算。基于树的卷积是基于树的卷积神经网络(TBCNN,Tree-Based Convolution Neural Network)的一部分,它用于对树结构进行分类,例如抽象语法树。 Tree-Based Convolution提出了一种称为连续二叉树的数据结构,它将多路(multiway)树视为二叉树。详情请参考: `基于树的卷积论文 <https://arxiv.org/abs/1409.5718v1>`_ 。
参数
::::::::::::
参数:
- **feature_size** (int) – nodes_vector的shape的最后一维的维度。 - **feature_size** (int) – nodes_vector的shape的最后一维的维度。
- **output_size** (int) – 输出特征宽度。 - **output_size** (int) – 输出特征宽度。
- **num_filters** (int, 可选) – 滤波器的数量,默认值为1。 - **num_filters** (int, 可选) – 滤波器的数量,默认值为1。
...@@ -19,9 +20,12 @@ TreeConv ...@@ -19,9 +20,12 @@ TreeConv
- **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
- **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。 - **dtype** (str, 可选) - 数据类型,可以为"float32"或"float64"。默认值为"float32"。
返回:无 返回
::::::::::::
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -37,11 +41,13 @@ TreeConv ...@@ -37,11 +41,13 @@ TreeConv
属性 属性
:::::::::::: ::::::::::::
.. py:attribute:: weight weight
'''''''''
本层的可学习参数,类型为 ``Parameter`` 本层的可学习参数,类型为 ``Parameter``
.. py:attribute:: bias bias
'''''''''
本层的可学习偏置,类型为 ``Parameter`` 本层的可学习偏置,类型为 ``Parameter``
...@@ -7,9 +7,12 @@ grad ...@@ -7,9 +7,12 @@ grad
.. py:method:: paddle.fluid.dygraph.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False, no_grad_vars=None, backward_strategy=None) .. py:method:: paddle.fluid.dygraph.grad(outputs, inputs, grad_outputs=None, retain_graph=None, create_graph=False, only_inputs=True, allow_unused=False, no_grad_vars=None, backward_strategy=None)
对于每个 `inputs` ,计算所有 `outputs` 相对于其的梯度和。 对于每个 `inputs` ,计算所有 `outputs` 相对于其的梯度和。
参数: 参数
:::::::::
- **outputs** (Variable|list(Variable)|tuple(Variable)) – 用于计算梯度的图的输出变量,或多个输出变量构成的list/tuple。 - **outputs** (Variable|list(Variable)|tuple(Variable)) – 用于计算梯度的图的输出变量,或多个输出变量构成的list/tuple。
- **inputs** (Variable|list(Variable)|tuple(Variable)) - 用于计算梯度的图的输入变量,或多个输入变量构成的list/tuple。该API的每个返回值对应每个 `inputs` 的梯度。 - **inputs** (Variable|list(Variable)|tuple(Variable)) - 用于计算梯度的图的输入变量,或多个输入变量构成的list/tuple。该API的每个返回值对应每个 `inputs` 的梯度。
- **grad_outputs** (Variable|list(Variable|None)|tuple(Variable|None), 可选) - `outputs` 变量梯度的初始值。若 `grad_outputs` 为None,则 `outputs` 梯度的初始值均为全1的Tensor。若 `grad_outputs` 不为None,它必须与 `outputs` 的长度相等,此时,若 `grad_outputs` 的第i个元素为None,则第i个 `outputs` 的梯度初始值为全1的Tensor;若 `grad_outputs` 的第i个元素为Variable,则第i个 `outputs` 的梯度初始值为 `grad_outputs` 的第i个元素。默认值为None。 - **grad_outputs** (Variable|list(Variable|None)|tuple(Variable|None), 可选) - `outputs` 变量梯度的初始值。若 `grad_outputs` 为None,则 `outputs` 梯度的初始值均为全1的Tensor。若 `grad_outputs` 不为None,它必须与 `outputs` 的长度相等,此时,若 `grad_outputs` 的第i个元素为None,则第i个 `outputs` 的梯度初始值为全1的Tensor;若 `grad_outputs` 的第i个元素为Variable,则第i个 `outputs` 的梯度初始值为 `grad_outputs` 的第i个元素。默认值为None。
...@@ -20,11 +23,16 @@ grad ...@@ -20,11 +23,16 @@ grad
- **no_grad_vars** (Variable|list(Variable)|tuple(Variable)|set(Variable), 可选) - 指明不需要计算梯度的变量。默认值为None。 - **no_grad_vars** (Variable|list(Variable)|tuple(Variable)|set(Variable), 可选) - 指明不需要计算梯度的变量。默认值为None。
- **backward_strategy** (BackwardStrategy, 可选) - 计算梯度的策略。详见 :ref:`cn_api_fluid_dygraph_BackwardStrategy` 。默认值为None。 - **backward_strategy** (BackwardStrategy, 可选) - 计算梯度的策略。详见 :ref:`cn_api_fluid_dygraph_BackwardStrategy` 。默认值为None。
返回: 变量构成的tuple,其长度等于 `inputs` 中的变量个数,且第i个返回的变量是所有 `outputs` 相对于第i个 `inputs` 的梯度之和。 返回
:::::::::
变量构成的tuple,其长度等于 `inputs` 中的变量个数,且第i个返回的变量是所有 `outputs` 相对于第i个 `inputs` 的梯度之和。
返回类型: tuple 返回类型
:::::::::
tuple
**示例代码 1** 代码示例 1
:::::::::
.. code-block:: python .. code-block:: python
import paddle.fluid as fluid import paddle.fluid as fluid
...@@ -59,7 +67,8 @@ grad ...@@ -59,7 +67,8 @@ grad
print(test_dygraph_grad(create_graph=False)) # [2.] print(test_dygraph_grad(create_graph=False)) # [2.]
print(test_dygraph_grad(create_graph=True)) # [4.] print(test_dygraph_grad(create_graph=True)) # [4.]
**示例代码 2** 代码示例 2
:::::::::
.. code-block:: python .. code-block:: python
import paddle.fluid as fluid import paddle.fluid as fluid
...@@ -103,4 +112,4 @@ grad ...@@ -103,4 +112,4 @@ grad
print(test_dygraph_grad([FOUR, None])) # [19.] print(test_dygraph_grad([FOUR, None])) # [19.]
# dy1 = [3], dy2 = [4] # dy1 = [3], dy2 = [4]
print(test_dygraph_grad([THREE, FOUR])) # [24.] print(test_dygraph_grad([THREE, FOUR])) # [24.]
\ No newline at end of file
...@@ -9,12 +9,17 @@ guard ...@@ -9,12 +9,17 @@ guard
通过with语句创建一个dygraph运行的context,执行context代码。 通过with语句创建一个dygraph运行的context,执行context代码。
参数: 参数
::::::::::::
- **place** (fluid.CPUPlace|fluid.CUDAPlace, 可选) – 动态图执行的设备,可以选择cpu,gpu,如果用户未制定,则根据用户paddle编译的方式来选择运行的设备,如果编译的cpu版本,则在cpu上运行,如果是编译的gpu版本,则在gpu上运行。默认值:None。 - **place** (fluid.CPUPlace|fluid.CUDAPlace, 可选) – 动态图执行的设备,可以选择cpu,gpu,如果用户未制定,则根据用户paddle编译的方式来选择运行的设备,如果编译的cpu版本,则在cpu上运行,如果是编译的gpu版本,则在gpu上运行。默认值:None。
返回: None 返回
::::::::::::
None
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -11,18 +11,25 @@ load_dygraph ...@@ -11,18 +11,25 @@ load_dygraph
该接口会同时加载 ``model_path + ".pdparams"`` 和 ``model_path + ".pdopt"`` 中的内容。 该接口会同时加载 ``model_path + ".pdparams"`` 和 ``model_path + ".pdopt"`` 中的内容。
参数: 参数
::::::::::::
- **model_path** (str) – 保存state_dict的文件前缀。该路径不应该包括后缀 ``.pdparams`` 或 ``.pdopt``。 - **model_path** (str) – 保存state_dict的文件前缀。该路径不应该包括后缀 ``.pdparams`` 或 ``.pdopt``。
返回: 两个 ``dict`` ,即从文件中恢复的参数 ``dict`` 和优化器 ``dict`` 返回
::::::::::::
两个 ``dict`` ,即从文件中恢复的参数 ``dict`` 和优化器 ``dict``
- para_dict: 从文件中恢复的参数 ``dict`` - para_dict: 从文件中恢复的参数 ``dict``
- opti_dict: 从文件中恢复的优化器 ``dict`` - opti_dict: 从文件中恢复的优化器 ``dict``
返回类型: tuple(dict, dict) 返回类型
::::::::::::
tuple(dict, dict)
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -7,11 +7,13 @@ no_grad ...@@ -7,11 +7,13 @@ no_grad
.. py:method:: paddle.fluid.dygraph.no_grad(func=None) .. py:method:: paddle.fluid.dygraph.no_grad(func=None)
创建一个上下文来禁用动态图梯度计算。在此模式下,每次计算的结果都将具有stop_gradient=True。 创建一个上下文来禁用动态图梯度计算。在此模式下,每次计算的结果都将具有stop_gradient=True。
也可以用作一个装饰器(确保不要用括号来初始化)。 也可以用作一个装饰器(确保不要用括号来初始化)。
**代码示例** 代码示例
:::::::::
.. code-block:: python .. code-block:: python
......
...@@ -7,14 +7,21 @@ prepare_context ...@@ -7,14 +7,21 @@ prepare_context
该API是进行多进程多卡训练的环境配置接口,接受一个ParallelStrategy结构体变量作为输入。当strategy属性中的nums_trainer小于2时,API会直接返回,当nums_trainer大于1且为CUDAPlace时,由于目前动态图模式仅支持GPU多卡训练,仅能配置NCCL多卡训练的环境,所以此时会对NCCL环境进行配置,具体内容包括:生成NCCL ID,并广播至参与训练的各进程,用于支持的处理器同步操作,创建并配置NCCL通信器等。 该API是进行多进程多卡训练的环境配置接口,接受一个ParallelStrategy结构体变量作为输入。当strategy属性中的nums_trainer小于2时,API会直接返回,当nums_trainer大于1且为CUDAPlace时,由于目前动态图模式仅支持GPU多卡训练,仅能配置NCCL多卡训练的环境,所以此时会对NCCL环境进行配置,具体内容包括:生成NCCL ID,并广播至参与训练的各进程,用于支持的处理器同步操作,创建并配置NCCL通信器等。
参数: 参数
::::::::::::
- **strategy** (ParallelStrategy, 可选) – 该参数是配置储存多进程多卡训练配置信息的结构体变量,其具体成员包括:trainer节点的个数,当前trainer节点的ID,所有trainer节点的endpoint,当前节点的endpoint。当输入为None时,会调用PallelStrategy构造函数初始化strategy,此时,strategy的属性值为PallelStrategy结构体的默认值,接着strategy的属性会被环境变量中的对应值覆盖。默认值为None。 - **strategy** (ParallelStrategy, 可选) – 该参数是配置储存多进程多卡训练配置信息的结构体变量,其具体成员包括:trainer节点的个数,当前trainer节点的ID,所有trainer节点的endpoint,当前节点的endpoint。当输入为None时,会调用PallelStrategy构造函数初始化strategy,此时,strategy的属性值为PallelStrategy结构体的默认值,接着strategy的属性会被环境变量中的对应值覆盖。默认值为None。
返回:一个属性配置后的ParallelStrategy结构体变量。 返回
::::::::::::
一个属性配置后的ParallelStrategy结构体变量。
返回类型:实例(ParallelStrategy) 返回类型
::::::::::::
实例(ParallelStrategy)
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -16,13 +16,18 @@ save_dygraph ...@@ -16,13 +16,18 @@ save_dygraph
该接口会根据 ``state_dict`` 的内容,自动给 ``model_path`` 添加 ``.pdparams`` 或者 ``.pdopt`` 后缀, 该接口会根据 ``state_dict`` 的内容,自动给 ``model_path`` 添加 ``.pdparams`` 或者 ``.pdopt`` 后缀,
生成 ``model_path + ".pdparams"`` 或者 ``model_path + ".pdopt"`` 文件。 生成 ``model_path + ".pdparams"`` 或者 ``model_path + ".pdopt"`` 文件。
参数: 参数
::::::::::::
- **state_dict** (dict of Parameters) – 要保存的模型参数的 ``dict`` 。 - **state_dict** (dict of Parameters) – 要保存的模型参数的 ``dict`` 。
- **model_path** (str) – 保存state_dict的文件前缀。格式为 ``目录名称/文件前缀``。如果文件前缀为空字符串,会引发异常。 - **model_path** (str) – 保存state_dict的文件前缀。格式为 ``目录名称/文件前缀``。如果文件前缀为空字符串,会引发异常。
返回: 无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -9,17 +9,24 @@ to_variable ...@@ -9,17 +9,24 @@ to_variable
该函数实现从numpy\.ndarray对象或者Variable对象创建一个 ``Variable`` 类型的对象。 该函数实现从numpy\.ndarray对象或者Variable对象创建一个 ``Variable`` 类型的对象。
参数: 参数
::::::::::::
- **value** (ndarray|Variable) – 需要转换的numpy\.ndarray或Variable对象,维度可以为多维,数据类型为numpy\.{float16, float32, float64, int16, int32, int64, uint8, uint16}中的一种。 - **value** (ndarray|Variable) – 需要转换的numpy\.ndarray或Variable对象,维度可以为多维,数据类型为numpy\.{float16, float32, float64, int16, int32, int64, uint8, uint16}中的一种。
- **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。 - **name** (str, 可选) – 具体用法请参见 :ref:`api_guide_Name` ,一般无需设置,默认值为None。
- **zero_copy** (bool, 可选) – 是否与输入的numpy数组共享内存。此参数仅适用于CPUPlace,当它为None时将设置为True。默认值为None。 - **zero_copy** (bool, 可选) – 是否与输入的numpy数组共享内存。此参数仅适用于CPUPlace,当它为None时将设置为True。默认值为None。
返回:如果 ``value`` 是numpy\.ndarray对象,返回由numpy\.ndarray对象创建的 ``Tensor`` ,其数据类型和维度与 ``value`` 一致;如果 ``value`` 是Variable对象,返回 ``value`` 。 返回
::::::::::::
如果 ``value`` 是numpy\.ndarray对象,返回由numpy\.ndarray对象创建的 ``Tensor`` ,其数据类型和维度与 ``value`` 一致;如果 ``value`` 是Variable对象,返回 ``value`` 。
返回类型:Variable 返回类型
::::::::::::
Variable
**代码示例**: 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -9,14 +9,21 @@ Executor ...@@ -9,14 +9,21 @@ Executor
Executor支持单GPU、多GPU以及CPU运行。 Executor支持单GPU、多GPU以及CPU运行。
参数: 参数
::::::::::::
- **place** (fluid.CPUPlace()|fluid.CUDAPlace(N)|None) – 该参数表示Executor执行所在的设备,这里的N为GPU对应的ID。当该参数为 `None` 时,PaddlePaddle会根据其安装版本来设置默认设备。当PaddlePaddle是CPU版时,默认运行设备将会设置为 `fluid.CPUPlace()` ;当PaddlePaddle是GPU版本时,默认执行设备将会设置为 `fluid.CUDAPlace(0)` 。默认值为None。 - **place** (fluid.CPUPlace()|fluid.CUDAPlace(N)|None) – 该参数表示Executor执行所在的设备,这里的N为GPU对应的ID。当该参数为 `None` 时,PaddlePaddle会根据其安装版本来设置默认设备。当PaddlePaddle是CPU版时,默认运行设备将会设置为 `fluid.CPUPlace()` ;当PaddlePaddle是GPU版本时,默认执行设备将会设置为 `fluid.CUDAPlace(0)` 。默认值为None。
返回:初始化后的 ``Executor`` 对象 返回
::::::::::::
初始化后的 ``Executor`` 对象
返回类型:Executor 返回类型
::::::::::::
Executor
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -73,14 +80,18 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -73,14 +80,18 @@ Executor支持单GPU、多GPU以及CPU运行。
feed={"X": x}, feed={"X": x},
fetch_list=[loss.name]) fetch_list=[loss.name])
.. py:method:: close() 方法
::::::::::::
close()
'''''''''
关闭执行器。该接口主要用于对于分布式训练,调用该接口后不可以再使用该执行器。该接口会释放在PServers上和目前Trainer有关联的资源。 关闭执行器。该接口主要用于对于分布式训练,调用该接口后不可以再使用该执行器。该接口会释放在PServers上和目前Trainer有关联的资源。
返回:无 **返回**
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -92,11 +103,13 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -92,11 +103,13 @@ Executor支持单GPU、多GPU以及CPU运行。
exe.close() exe.close()
.. py:method:: run(program=None, feed=None, fetch_list=None, feed_var_name='feed', fetch_var_name='fetch', scope=None, return_numpy=True, use_program_cache=False, use_prune=False) run(program=None, feed=None, fetch_list=None, feed_var_name='feed', fetch_var_name='fetch', scope=None, return_numpy=True, use_program_cache=False, use_prune=False)
'''''''''
执行指定的Program或者CompiledProgram。需要注意的是,执行器会执行Program或CompiledProgram中的所有算子,而不会根据fetch_list对Program或CompiledProgram中的算子进行裁剪。同时,需要传入运行该模型用到的scope,如果没有指定scope,执行器将使用全局scope,即fluid.global_scope()。 执行指定的Program或者CompiledProgram。需要注意的是,执行器会执行Program或CompiledProgram中的所有算子,而不会根据fetch_list对Program或CompiledProgram中的算子进行裁剪。同时,需要传入运行该模型用到的scope,如果没有指定scope,执行器将使用全局scope,即fluid.global_scope()。
参数: **参数**
- **program** (Program|CompiledProgram) – 该参数为被执行的Program或CompiledProgram,如果未提供该参数,即该参数为None,在该接口内,main_program将被设置为fluid.default_main_program()。默认为:None。 - **program** (Program|CompiledProgram) – 该参数为被执行的Program或CompiledProgram,如果未提供该参数,即该参数为None,在该接口内,main_program将被设置为fluid.default_main_program()。默认为:None。
- **feed** (list|dict) – 该参数表示模型的输入变量。如果是单卡训练,``feed`` 为 ``dict`` 类型,如果是多卡训练,参数 ``feed`` 可以是 ``dict`` 或者 ``list`` 类型变量,如果该参数类型为 ``dict`` ,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU),即输入数据被均匀分配到不同设备上;如果该参数类型为 ``list`` ,则列表中的各个元素都会直接分别被拷贝到各设备中。默认为:None。 - **feed** (list|dict) – 该参数表示模型的输入变量。如果是单卡训练,``feed`` 为 ``dict`` 类型,如果是多卡训练,参数 ``feed`` 可以是 ``dict`` 或者 ``list`` 类型变量,如果该参数类型为 ``dict`` ,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU),即输入数据被均匀分配到不同设备上;如果该参数类型为 ``list`` ,则列表中的各个元素都会直接分别被拷贝到各设备中。默认为:None。
- **fetch_list** (list) – 该参数表示模型运行之后需要返回的变量。默认为:None。 - **fetch_list** (list) – 该参数表示模型运行之后需要返回的变量。默认为:None。
...@@ -107,16 +120,18 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -107,16 +120,18 @@ Executor支持单GPU、多GPU以及CPU运行。
- **use_program_cache** (bool) – 该参数表示是否对输入的Program进行缓存。如果该参数为True,在以下情况时,模型运行速度可能会更快:输入的program为 ``fluid.Program`` ,并且模型运行过程中,调用该接口的参数(program、 feed变量名和fetch_list变量)名始终不变。默认为:False。 - **use_program_cache** (bool) – 该参数表示是否对输入的Program进行缓存。如果该参数为True,在以下情况时,模型运行速度可能会更快:输入的program为 ``fluid.Program`` ,并且模型运行过程中,调用该接口的参数(program、 feed变量名和fetch_list变量)名始终不变。默认为:False。
- **use_prune** (bool) – 该参数表示是否对输入的Program进行剪枝。如果该参数为True,输入的Program会在run之前根据 ``feed`` 和 ``fetch_list`` 进行剪枝,剪枝的逻辑是将产生 ``feed`` 的 ``Variable`` 和 ``Operator`` 以及不产生 ``fetch_list`` 的 ``Variable`` 和 ``Operator`` 进行裁剪。默认为:False,表示不进行剪枝。请注意,如果将 ``Optimizer.minimize()`` 方法返回的 ``tuple`` 传入 ``fetch_list`` 中,则 ``use_prune`` 会被重写为True,并且会开启剪枝。 - **use_prune** (bool) – 该参数表示是否对输入的Program进行剪枝。如果该参数为True,输入的Program会在run之前根据 ``feed`` 和 ``fetch_list`` 进行剪枝,剪枝的逻辑是将产生 ``feed`` 的 ``Variable`` 和 ``Operator`` 以及不产生 ``fetch_list`` 的 ``Variable`` 和 ``Operator`` 进行裁剪。默认为:False,表示不进行剪枝。请注意,如果将 ``Optimizer.minimize()`` 方法返回的 ``tuple`` 传入 ``fetch_list`` 中,则 ``use_prune`` 会被重写为True,并且会开启剪枝。
返回:返回fetch_list中指定的变量值 **返回**
返回fetch_list中指定的变量值
返回类型:List **返回类型**
List
.. note:: .. note::
1. 如果是多卡训练,并且feed参数为dict类型,输入数据将被均匀分配到不同的卡上,例如:使用2块GPU训练,输入样本数为3,即[0, 1, 2],经过拆分之后,GPU0上的样本数为1,即[0],GPU1上的样本数为2,即[1, 2]。如果样本数少于设备数,程序会报错,因此运行模型时,应额外注意数据集的最后一个batch的样本数是否少于当前可用的CPU核数或GPU卡数,如果是少于,建议丢弃该batch。 1. 如果是多卡训练,并且feed参数为dict类型,输入数据将被均匀分配到不同的卡上,例如:使用2块GPU训练,输入样本数为3,即[0, 1, 2],经过拆分之后,GPU0上的样本数为1,即[0],GPU1上的样本数为2,即[1, 2]。如果样本数少于设备数,程序会报错,因此运行模型时,应额外注意数据集的最后一个batch的样本数是否少于当前可用的CPU核数或GPU卡数,如果是少于,建议丢弃该batch。
2. 如果可用的CPU核数或GPU卡数大于1,则fetch出来的结果为不同设备上的相同变量值(fetch_list中的变量)在第0维拼接在一起。 2. 如果可用的CPU核数或GPU卡数大于1,则fetch出来的结果为不同设备上的相同变量值(fetch_list中的变量)在第0维拼接在一起。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -141,7 +156,8 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -141,7 +156,8 @@ Executor支持单GPU、多GPU以及CPU运行。
fetch_list=[loss.name]) fetch_list=[loss.name])
.. py:method:: train_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100) train_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100)
'''''''''
从预定义的数据集中训练。 数据集在Paddle的高性能IO模块paddle.fluid.dataset中定义。 给定Program(或CompiledProgram),train_from_dataset将使用paddle.fluid.dataset中的所有数据样本。输入scope可由用户给出, 默认情况下使用的scope是global_scope()。训练中的线程数是thread个, 默认值为0,表示使用paddle.fluid.dataset中用户配置的线程数。 可以设置debug,以便执行器显示所有算子的运行时间和当前训练任务的吞吐量。当用户设置fetch_list和fetch_info时 从预定义的数据集中训练。 数据集在Paddle的高性能IO模块paddle.fluid.dataset中定义。 给定Program(或CompiledProgram),train_from_dataset将使用paddle.fluid.dataset中的所有数据样本。输入scope可由用户给出, 默认情况下使用的scope是global_scope()。训练中的线程数是thread个, 默认值为0,表示使用paddle.fluid.dataset中用户配置的线程数。 可以设置debug,以便执行器显示所有算子的运行时间和当前训练任务的吞吐量。当用户设置fetch_list和fetch_info时
(两者长度需要一致)时,会打印出fetch_list中所有变量的值,打印该值的间隔为print_period。 (两者长度需要一致)时,会打印出fetch_list中所有变量的值,打印该值的间隔为print_period。
...@@ -152,7 +168,8 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线 ...@@ -152,7 +168,8 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线
注意:train_from_dataset将销毁每次运行在executor中创建的所有资源。 注意:train_from_dataset将销毁每次运行在executor中创建的所有资源。
参数: **参数**
- **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (类型是Program) - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (类型是Program)
- **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的Dataset。默认为None - **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的Dataset。默认为None
- **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域 - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域
...@@ -162,9 +179,10 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线 ...@@ -162,9 +179,10 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线
- **fetch_info** (String List) – 每个变量的打印信息,默认为None - **fetch_info** (String List) – 每个变量的打印信息,默认为None
- **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100 - **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100
返回:None **返回**
None
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -184,11 +202,13 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线 ...@@ -184,11 +202,13 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线
dataset=dataset) dataset=dataset)
.. py:method:: infer_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100) infer_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100)
'''''''''
从预定义的数据集中做预测。 数据集在paddle.fluid.dataset中定义。infer_from_dataset的参数与train_from_dataset相同,两者的区别是infer_from_dataset>没有发送梯度和更新参数。infer_from_dataset可以非常容易地用于大规模分布式多线程中的离线评估。 从预定义的数据集中做预测。 数据集在paddle.fluid.dataset中定义。infer_from_dataset的参数与train_from_dataset相同,两者的区别是infer_from_dataset>没有发送梯度和更新参数。infer_from_dataset可以非常容易地用于大规模分布式多线程中的离线评估。
参数: **参数**
- **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (类型是Program) - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (类型是Program)
- **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义Dataset。默认为None - **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义Dataset。默认为None
- **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域 - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域
...@@ -198,9 +218,10 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线 ...@@ -198,9 +218,10 @@ train_from_dataset可以非常容易扩展到大规模分布式在线和离线
- **fetch_info** (String List) – 每个变量的打印信息,默认为None - **fetch_info** (String List) – 每个变量的打印信息,默认为None
- **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100 - **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100
返回:None **返回**
None
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
......
...@@ -9,11 +9,16 @@ global_scope ...@@ -9,11 +9,16 @@ global_scope
获取全局/默认作用域实例。很多API使用默认 ``global_scope`` ,例如 ``Executor.run`` 等。 获取全局/默认作用域实例。很多API使用默认 ``global_scope`` ,例如 ``Executor.run`` 等。
返回:全局/默认作用域实例 返回
::::::::::::
全局/默认作用域实例
返回类型:Scope 返回类型
::::::::::::
Scope
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -14,12 +14,17 @@ scope_guard ...@@ -14,12 +14,17 @@ scope_guard
当用户需要创建同名的变量时,如果不希望同名的变量映射关系被覆盖,则需要通过该接口切换作用域。 当用户需要创建同名的变量时,如果不希望同名的变量映射关系被覆盖,则需要通过该接口切换作用域。
通过 ``with`` 语句切换后,``with`` 语句块中所有创建的变量都将分配给新的作用域。 通过 ``with`` 语句切换后,``with`` 语句块中所有创建的变量都将分配给新的作用域。
参数: 参数
::::::::::::
- **scope** (Scope) - 新的作用域。 - **scope** (Scope) - 新的作用域。
返回:无 返回
::::::::::::
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -9,7 +9,8 @@ BuildStrategy ...@@ -9,7 +9,8 @@ BuildStrategy
``BuildStrategy`` 使用户更方便地控制 :ref:`cn_api_fluid_ParallelExecutor` 中计算图的建造方法,可通过设置 ``ParallelExecutor`` 中的 ``BuildStrategy`` 成员来实现此功能。 ``BuildStrategy`` 使用户更方便地控制 :ref:`cn_api_fluid_ParallelExecutor` 中计算图的建造方法,可通过设置 ``ParallelExecutor`` 中的 ``BuildStrategy`` 成员来实现此功能。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -35,7 +36,10 @@ BuildStrategy ...@@ -35,7 +36,10 @@ BuildStrategy
places=places) places=places)
.. py:attribute:: debug_graphviz_path 属性
::::::::::::
debug_graphviz_path
'''''''''
str类型。表示以graphviz格式向文件中写入计算图的路径,有利于调试。默认值为空字符串。 str类型。表示以graphviz格式向文件中写入计算图的路径,有利于调试。默认值为空字符串。
...@@ -48,7 +52,8 @@ str类型。表示以graphviz格式向文件中写入计算图的路径,有利 ...@@ -48,7 +52,8 @@ str类型。表示以graphviz格式向文件中写入计算图的路径,有利
build_strategy.debug_graphviz_path = "./graph" build_strategy.debug_graphviz_path = "./graph"
.. py:attribute:: enable_sequential_execution enable_sequential_execution
'''''''''
bool类型。如果设置为True,则算子的执行顺序将与算子定义的执行顺序相同。默认为False。 bool类型。如果设置为True,则算子的执行顺序将与算子定义的执行顺序相同。默认为False。
...@@ -61,7 +66,8 @@ bool类型。如果设置为True,则算子的执行顺序将与算子定义的 ...@@ -61,7 +66,8 @@ bool类型。如果设置为True,则算子的执行顺序将与算子定义的
build_strategy.enable_sequential_execution = True build_strategy.enable_sequential_execution = True
.. py:attribute:: fuse_broadcast_ops fuse_broadcast_ops
'''''''''
bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模式下有效,使程序运行更快。默认为False。 bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模式下有效,使程序运行更快。默认为False。
...@@ -74,7 +80,8 @@ bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模 ...@@ -74,7 +80,8 @@ bool类型。表明是否融合(fuse) broadcast ops。该选项指在Reduce模
build_strategy.fuse_broadcast_ops = True build_strategy.fuse_broadcast_ops = True
.. py:attribute:: fuse_elewise_add_act_ops fuse_elewise_add_act_ops
'''''''''
bool类型。表明是否融合(fuse) elementwise_add_op和activation_op。这会使整体执行过程更快。默认为False。 bool类型。表明是否融合(fuse) elementwise_add_op和activation_op。这会使整体执行过程更快。默认为False。
...@@ -87,7 +94,8 @@ bool类型。表明是否融合(fuse) elementwise_add_op和activation_op。这 ...@@ -87,7 +94,8 @@ bool类型。表明是否融合(fuse) elementwise_add_op和activation_op。这
build_strategy.fuse_elewise_add_act_ops = True build_strategy.fuse_elewise_add_act_ops = True
.. py:attribute:: fuse_relu_depthwise_conv fuse_relu_depthwise_conv
'''''''''
bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存并可能加速执行过程。此选项仅适用于GPU设备。默认为False。 bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存并可能加速执行过程。此选项仅适用于GPU设备。默认为False。
...@@ -99,7 +107,8 @@ bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存 ...@@ -99,7 +107,8 @@ bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存
build_strategy = fluid.BuildStrategy() build_strategy = fluid.BuildStrategy()
build_strategy.fuse_relu_depthwise_conv = True build_strategy.fuse_relu_depthwise_conv = True
.. py:attribute:: gradient_scale_strategy gradient_scale_strategy
'''''''''
``fluid.BuildStrategy.GradientScaleStrategy`` 类型。在 ``ParallelExecutor`` 中,存在三种定义loss对应梯度( *loss@grad* )的方式,分别为 ``CoeffNumDevice``, ``One`` 与 ``Customized``。默认情况下, ``ParallelExecutor`` 根据设备数目来设置 *loss@grad* 。如果用户需要自定义 *loss@grad* ,可以选择 ``Customized`` 方法。默认为 ``CoeffNumDevice`` 。 ``fluid.BuildStrategy.GradientScaleStrategy`` 类型。在 ``ParallelExecutor`` 中,存在三种定义loss对应梯度( *loss@grad* )的方式,分别为 ``CoeffNumDevice``, ``One`` 与 ``Customized``。默认情况下, ``ParallelExecutor`` 根据设备数目来设置 *loss@grad* 。如果用户需要自定义 *loss@grad* ,可以选择 ``Customized`` 方法。默认为 ``CoeffNumDevice`` 。
...@@ -150,11 +159,13 @@ bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存 ...@@ -150,11 +159,13 @@ bool类型。表明是否融合(fuse) relu和depthwise_conv2d,节省GPU内存
feed={"X": x, loss_grad_name : loss_grad}, feed={"X": x, loss_grad_name : loss_grad},
fetch_list=[loss.name, loss_grad_name]) fetch_list=[loss.name, loss_grad_name])
.. py:attribute:: memory_optimize memory_optimize
'''''''''
bool类型或None。设为True时可用于减少总内存消耗,False表示不使用,None表示框架会自动选择使用或者不使用优化策略。当前,None意味着当GC不能使用时,优化策略将被使用。默认为None。 bool类型或None。设为True时可用于减少总内存消耗,False表示不使用,None表示框架会自动选择使用或者不使用优化策略。当前,None意味着当GC不能使用时,优化策略将被使用。默认为None。
.. py:attribute:: reduce_strategy reduce_strategy
'''''''''
``fluid.BuildStrategy.ReduceStrategy`` 类型。在 ``ParallelExecutor`` 中,存在两种参数梯度聚合策略,即 ``AllReduce`` 和 ``Reduce`` 。如果用户需要在所有执行设备上独立地进行参数更新,可以使用 ``AllReduce`` 。如果使用 ``Reduce`` 策略,所有参数的优化将均匀地分配给不同的执行设备,随之将优化后的参数广播给其他执行设备。 ``fluid.BuildStrategy.ReduceStrategy`` 类型。在 ``ParallelExecutor`` 中,存在两种参数梯度聚合策略,即 ``AllReduce`` 和 ``Reduce`` 。如果用户需要在所有执行设备上独立地进行参数更新,可以使用 ``AllReduce`` 。如果使用 ``Reduce`` 策略,所有参数的优化将均匀地分配给不同的执行设备,随之将优化后的参数广播给其他执行设备。
默认值为 ``AllReduce`` 。 默认值为 ``AllReduce`` 。
...@@ -167,7 +178,8 @@ bool类型或None。设为True时可用于减少总内存消耗,False表示不 ...@@ -167,7 +178,8 @@ bool类型或None。设为True时可用于减少总内存消耗,False表示不
build_strategy = fluid.BuildStrategy() build_strategy = fluid.BuildStrategy()
build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce build_strategy.reduce_strategy = fluid.BuildStrategy.ReduceStrategy.Reduce
.. py:attribute:: remove_unnecessary_lock remove_unnecessary_lock
'''''''''
bool类型。设置True会去除GPU操作中的一些锁操作, ``ParallelExecutor`` 将运行得更快,默认为True。 bool类型。设置True会去除GPU操作中的一些锁操作, ``ParallelExecutor`` 将运行得更快,默认为True。
...@@ -180,7 +192,8 @@ bool类型。设置True会去除GPU操作中的一些锁操作, ``ParallelExec ...@@ -180,7 +192,8 @@ bool类型。设置True会去除GPU操作中的一些锁操作, ``ParallelExec
build_strategy.remove_unnecessary_lock = True build_strategy.remove_unnecessary_lock = True
.. py:attribute:: sync_batch_norm sync_batch_norm
'''''''''
bool类型。表示是否使用同步的批正则化,即在训练阶段通过多个设备同步均值和方差。当前的实现不支持FP16训练和CPU。并且目前**仅支持**仅在一台机器上进行同步式批正则。默认为 False。 bool类型。表示是否使用同步的批正则化,即在训练阶段通过多个设备同步均值和方差。当前的实现不支持FP16训练和CPU。并且目前**仅支持**仅在一台机器上进行同步式批正则。默认为 False。
......
...@@ -7,7 +7,8 @@ CPUPlace ...@@ -7,7 +7,8 @@ CPUPlace
``CPUPlace`` 是一个设备描述符,表示一个分配或将要分配 ``Tensor`` 或 ``LoDTensor`` 的 ``CPU`` 设备。 ``CPUPlace`` 是一个设备描述符,表示一个分配或将要分配 ``Tensor`` 或 ``LoDTensor`` 的 ``CPU`` 设备。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -8,7 +8,8 @@ CUDAPinnedPlace ...@@ -8,7 +8,8 @@ CUDAPinnedPlace
``CUDAPinnedPlace`` 是一个设备描述符,它所指代的页锁定内存由 CUDA 函数 ``cudaHostAlloc()`` 在主机内存上分配,主机的操作系统将不会对这块内存进行分页和交换操作,可以通过直接内存访问技术访问,加速主机和 GPU 之间的数据拷贝。 ``CUDAPinnedPlace`` 是一个设备描述符,它所指代的页锁定内存由 CUDA 函数 ``cudaHostAlloc()`` 在主机内存上分配,主机的操作系统将不会对这块内存进行分页和交换操作,可以通过直接内存访问技术访问,加速主机和 GPU 之间的数据拷贝。
有关 CUDA 的数据转移和 ``pinned memory``,参见 `官方文档 <https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#pinned-memory>`_ 。 有关 CUDA 的数据转移和 ``pinned memory``,参见 `官方文档 <https://docs.nvidia.com/cuda/cuda-c-best-practices-guide/index.html#pinned-memory>`_ 。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -15,10 +15,13 @@ CUDAPlace ...@@ -15,10 +15,13 @@ CUDAPlace
可以通过 ``CUDA_VISIBLE_DEVICES`` 环境变量限制程序能够使用的 GPU 设备,程序启动时会遍历当前的可见设备,并从 0 开始为这些设备编号。 可以通过 ``CUDA_VISIBLE_DEVICES`` 环境变量限制程序能够使用的 GPU 设备,程序启动时会遍历当前的可见设备,并从 0 开始为这些设备编号。
如果没有设置 ``CUDA_VISIBLE_DEVICES``,则默认所有的设备都是可见的,此时逻辑编号与实际编号是相同的。 如果没有设置 ``CUDA_VISIBLE_DEVICES``,则默认所有的设备都是可见的,此时逻辑编号与实际编号是相同的。
参数: 参数
::::::::::::
- **id** (int,可选) - GPU的设备ID。如果为 ``None``,则默认会使用 id 为 0 的设备。默认值为 ``None``。 - **id** (int,可选) - GPU的设备ID。如果为 ``None``,则默认会使用 id 为 0 的设备。默认值为 ``None``。
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
...@@ -9,15 +9,22 @@ CompiledProgram ...@@ -9,15 +9,22 @@ CompiledProgram
CompiledProgram根据 `build_strategy` 的配置将输入的Program或Graph进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等,关于build_strategy更多信息。请参阅 ``fluid.BuildStrategy`` 。 CompiledProgram根据 `build_strategy` 的配置将输入的Program或Graph进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等,关于build_strategy更多信息。请参阅 ``fluid.BuildStrategy`` 。
参数: 参数
::::::::::::
- **program_or_graph** (Graph|Program): 该参数为被执行的Program或Graph。 - **program_or_graph** (Graph|Program): 该参数为被执行的Program或Graph。
- **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多信息,请参阅 ``fluid.BuildStrategy`` 。 默认为None。 - **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多信息,请参阅 ``fluid.BuildStrategy`` 。 默认为None。
返回:初始化后的 ``CompiledProgram`` 对象 返回
::::::::::::
初始化后的 ``CompiledProgram`` 对象
返回类型:CompiledProgram 返回类型
::::::::::::
CompiledProgram
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -42,20 +49,26 @@ CompiledProgram根据 `build_strategy` 的配置将输入的Program或Graph进 ...@@ -42,20 +49,26 @@ CompiledProgram根据 `build_strategy` 的配置将输入的Program或Graph进
fetch_list=[loss.name]) fetch_list=[loss.name])
.. py:method:: with_data_parallel(loss_name=None, build_strategy=None, exec_strategy=None, share_vars_from=None, places=None) 方法
::::::::::::
with_data_parallel(loss_name=None, build_strategy=None, exec_strategy=None, share_vars_from=None, places=None)
'''''''''
该接口用于将输入的Program或Graph进行转换,以便通过数据并行模式运行该模型。用户可以通过 `build_strategy` 和 `exec_strategy` 设置计算图构建和计算图执行过程中可以进行的一些优化,例如:将梯度聚合的AllReduce操作进行融合、指定计算图运行过程中使用的线程池大小等。**注意:如果在构建CompiledProgram和调用with_data_parallel时都指定了build_strategy,在CompiledProgram中的build_strategy会被复写,因此,如果是数据并行训练,建议在调用with_data_parallel接口时设置build_strategy**。 该接口用于将输入的Program或Graph进行转换,以便通过数据并行模式运行该模型。用户可以通过 `build_strategy` 和 `exec_strategy` 设置计算图构建和计算图执行过程中可以进行的一些优化,例如:将梯度聚合的AllReduce操作进行融合、指定计算图运行过程中使用的线程池大小等。**注意:如果在构建CompiledProgram和调用with_data_parallel时都指定了build_strategy,在CompiledProgram中的build_strategy会被复写,因此,如果是数据并行训练,建议在调用with_data_parallel接口时设置build_strategy**。
参数: **参数**
- **loss_name** (str) - 该参数为模型最后得到的损失变量的名字,**注意:如果是模型训练,必须设置loss_name,否则计算结果可能会有问题。** 默认为:None。 - **loss_name** (str) - 该参数为模型最后得到的损失变量的名字,**注意:如果是模型训练,必须设置loss_name,否则计算结果可能会有问题。** 默认为:None。
- **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多的信息,请参阅 ``fluid.BuildStrategy`` 。 默认为:None。 - **build_strategy** (BuildStrategy): 通过配置build_strategy,对计算图进行转换和优化,例如:计算图中算子融合、计算图执行过程中开启内存/显存优化等。关于build_strategy更多的信息,请参阅 ``fluid.BuildStrategy`` 。 默认为:None。
- **exec_strategy** (ExecutionStrategy) - 通过exec_strategy指定执行计算图过程可以调整的选项,例如线程池大小等。 关于exec_strategy更多信息,请参阅 ``fluid.ExecutionStrategy`` 。 默认为:None。 - **exec_strategy** (ExecutionStrategy) - 通过exec_strategy指定执行计算图过程可以调整的选项,例如线程池大小等。 关于exec_strategy更多信息,请参阅 ``fluid.ExecutionStrategy`` 。 默认为:None。
- **share_vars_from** (CompiledProgram) - 如果设置了share_vars_from,当前的CompiledProgram将与share_vars_from指定的CompiledProgram共享参数值。需要设置该参数的情况:模型训练过程中需要进行模型测试,并且训练和测试都是采用数据并行模式,那么测试对应的CompiledProgram在调用with_data_parallel时,需要将share_vars_from设置为训练对应的CompiledProgram。由于CompiledProgram只有在第一次执行时才会将变量分发到其他设备上,因此share_vars_from指定的CompiledProgram必须在当前CompiledProgram之前运行。默认为:None。 - **share_vars_from** (CompiledProgram) - 如果设置了share_vars_from,当前的CompiledProgram将与share_vars_from指定的CompiledProgram共享参数值。需要设置该参数的情况:模型训练过程中需要进行模型测试,并且训练和测试都是采用数据并行模式,那么测试对应的CompiledProgram在调用with_data_parallel时,需要将share_vars_from设置为训练对应的CompiledProgram。由于CompiledProgram只有在第一次执行时才会将变量分发到其他设备上,因此share_vars_from指定的CompiledProgram必须在当前CompiledProgram之前运行。默认为:None。
- **places** (list(CUDAPlace)|list(CPUPlace)) - 该参数指定模型运行所在的设备。如果希望在GPU0和GPU1上运行,places为[fluid.CUDAPlace(0), fluid.CUDAPlace(1)];如果希望使用2个CPU运行,places为[fluid.CPUPlace()] * 2。 如果没有设置该参数,即该参数为None,模型执行时,将从环境变量中获取可用的设备:如果使用GPU,模型执行时,从环境变量FLAGS_selected_gpus或CUDA_VISIBLE_DEVICES中获取当前可用的设备ID;如果使用CPU,模型执行时,从环境变量CPU_NUM中获取当前可利用的CPU个数。例如:export CPU_NUM=4,如果没有设置该环境变量,执行器会在环境变量中添加该变量,并将其值设为1。默认为:None。 - **places** (list(CUDAPlace)|list(CPUPlace)) - 该参数指定模型运行所在的设备。如果希望在GPU0和GPU1上运行,places为[fluid.CUDAPlace(0), fluid.CUDAPlace(1)];如果希望使用2个CPU运行,places为[fluid.CPUPlace()] * 2。 如果没有设置该参数,即该参数为None,模型执行时,将从环境变量中获取可用的设备:如果使用GPU,模型执行时,从环境变量FLAGS_selected_gpus或CUDA_VISIBLE_DEVICES中获取当前可用的设备ID;如果使用CPU,模型执行时,从环境变量CPU_NUM中获取当前可利用的CPU个数。例如:export CPU_NUM=4,如果没有设置该环境变量,执行器会在环境变量中添加该变量,并将其值设为1。默认为:None。
返回:配置之后的 ``CompiledProgram`` 对象 **返回**
配置之后的 ``CompiledProgram`` 对象
返回类型:CompiledProgram **返回类型**
CompiledProgram
.. note:: .. note::
1. 如果只是进行多卡测试,不需要设置loss_name以及share_vars_from。 1. 如果只是进行多卡测试,不需要设置loss_name以及share_vars_from。
......
...@@ -50,11 +50,16 @@ DataFeedDesc ...@@ -50,11 +50,16 @@ DataFeedDesc
print(data_feed.desc()) print(data_feed.desc())
参数: 参数
::::::::::::
- **proto_file** (string) : 包含数据描述的protobuf message的磁盘文件 - **proto_file** (string) : 包含数据描述的protobuf message的磁盘文件
.. py:method:: set_batch_size(batch_size) 方法
::::::::::::
set_batch_size(batch_size)
'''''''''
该接口用于设置DataFeedDesc中的 :code:`batch_size` 。可以在训练期间调用修改 :code:`batch_size` 。 该接口用于设置DataFeedDesc中的 :code:`batch_size` 。可以在训练期间调用修改 :code:`batch_size` 。
...@@ -84,12 +89,15 @@ DataFeedDesc ...@@ -84,12 +89,15 @@ DataFeedDesc
data_feed = fluid.DataFeedDesc('data.proto') data_feed = fluid.DataFeedDesc('data.proto')
data_feed.set_batch_size(128) data_feed.set_batch_size(128)
参数: **参数**
- **batch_size** (int) - 新的批尺寸。 - **batch_size** (int) - 新的批尺寸。
返回:无 **返回**
.. py:method:: set_dense_slots(dense_slots_name) set_dense_slots(dense_slots_name)
'''''''''
将 :code:`dense_slots_name` 指定的slots设置为密集的slot。**注意:默认情况下,所有slots都是稀疏的。** 将 :code:`dense_slots_name` 指定的slots设置为密集的slot。**注意:默认情况下,所有slots都是稀疏的。**
...@@ -121,20 +129,24 @@ DataFeedDesc ...@@ -121,20 +129,24 @@ DataFeedDesc
data_feed = fluid.DataFeedDesc('data.proto') data_feed = fluid.DataFeedDesc('data.proto')
data_feed.set_dense_slots(['words']) data_feed.set_dense_slots(['words'])
参数: **参数**
- **dense_slots_name** (list(str)) - slot名称的列表,这些slot将被设置为密集的。 - **dense_slots_name** (list(str)) - slot名称的列表,这些slot将被设置为密集的。
返回:无 **返回**
.. py:method:: set_use_slots(use_slots_name) set_use_slots(use_slots_name)
'''''''''
设置一个特定的slot是否用于训练。一个数据集包含了很多特征,通过这个函数可以选择哪些特征将用于指定的模型。 设置一个特定的slot是否用于训练。一个数据集包含了很多特征,通过这个函数可以选择哪些特征将用于指定的模型。
参数: **参数**
- **use_slots_name** (list) : 将在训练中使用的slot名列表,类型为list,其中每个元素为一个字符串 - **use_slots_name** (list) : 将在训练中使用的slot名列表,类型为list,其中每个元素为一个字符串
**代码示例** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -165,13 +177,15 @@ DataFeedDesc ...@@ -165,13 +177,15 @@ DataFeedDesc
默认值是不使用所有slot 默认值是不使用所有slot
.. py:method:: desc() desc()
'''''''''
返回此DataFeedDesc的protobuf message 返回此DataFeedDesc的protobuf message
返回:一个protobuf message字符串 **返回**
一个protobuf message字符串
**代码示例** **代码示例**
.. code-block:: python .. code-block:: python
......
...@@ -41,17 +41,22 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -41,17 +41,22 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
参数: 参数
::::::::::::
- **feed_list** (list) – 向模型输入的变量表或者变量表名 - **feed_list** (list) – 向模型输入的变量表或者变量表名
- **place** (Place) – place表明是向GPU还是CPU中输入数据。如果想向GPU中输入数据, 请使用 ``fluid.CUDAPlace(i)`` (i 代表 the GPU id);如果向CPU中输入数据, 请使用 ``fluid.CPUPlace()`` - **place** (Place) – place表明是向GPU还是CPU中输入数据。如果想向GPU中输入数据, 请使用 ``fluid.CUDAPlace(i)`` (i 代表 the GPU id);如果向CPU中输入数据, 请使用 ``fluid.CPUPlace()``
- **program** (Program) – 需要向其中输入数据的Program。如果为None, 会默认使用 ``default_main_program()``。 缺省值为None - **program** (Program) – 需要向其中输入数据的Program。如果为None, 会默认使用 ``default_main_program()``。 缺省值为None
抛出异常: 抛出异常
::::::::::::
- ``ValueError`` – 如果一些变量不在此 Program 中 - ``ValueError`` – 如果一些变量不在此 Program 中
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -83,17 +88,23 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -83,17 +88,23 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
fetch_list=[out]) fetch_list=[out])
.. py:method:: feed(iterable) 方法
::::::::::::
feed(iterable)
'''''''''
根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。
参数: **参数**
- **iterable** (list|tuple) – 要输入的数据 - **iterable** (list|tuple) – 要输入的数据
返回: 转换结果 **返回**
转换结果
返回类型: dict **返回类型**
dict
**代码示例** **代码示例**
...@@ -114,18 +125,22 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -114,18 +125,22 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
result = feeder.feed(reader()) result = feeder.feed(reader())
.. py:method:: feed_parallel(iterable, num_places=None) feed_parallel(iterable, num_places=None)
'''''''''
该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。 该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。
参数: **参数**
- **iterable** (list|tuple) – 要输入的数据 - **iterable** (list|tuple) – 要输入的数据
- **num_places** (int) – 设备数目。默认为None。 - **num_places** (int) – 设备数目。默认为None。
返回: 转换结果 **返回**
转换结果
返回类型: dict **返回类型**
dict
.. note:: .. note::
设备(CPU或GPU)的数目必须等于minibatch的数目 设备(CPU或GPU)的数目必须等于minibatch的数目
...@@ -159,23 +174,28 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -159,23 +174,28 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
exe.run(program=program, feed=list(feeder.feed_parallel(data, place_num)), fetch_list=[]) exe.run(program=program, feed=list(feeder.feed_parallel(data, place_num)), fetch_list=[])
data = [] data = []
.. py:method:: decorate_reader(reader, multi_devices, num_places=None, drop_last=True) decorate_reader(reader, multi_devices, num_places=None, drop_last=True)
'''''''''
将reader返回的输入数据batch转换为多个mini-batch,之后每个mini-batch都会被输入进各个设备(CPU或GPU)中。 将reader返回的输入数据batch转换为多个mini-batch,之后每个mini-batch都会被输入进各个设备(CPU或GPU)中。
参数: **参数**
- **reader** (fun) – 该参数是一个可以生成数据的函数 - **reader** (fun) – 该参数是一个可以生成数据的函数
- **multi_devices** (bool) – bool型,指明是否使用多个设备 - **multi_devices** (bool) – bool型,指明是否使用多个设备
- **num_places** (int) – 如果 ``multi_devices`` 为 ``True`` , 可以使用此参数来设置GPU数目。如果 ``multi_devices`` 为 ``None`` ,该函数默认使用当前训练机所有GPU设备。默认为None。 - **num_places** (int) – 如果 ``multi_devices`` 为 ``True`` , 可以使用此参数来设置GPU数目。如果 ``multi_devices`` 为 ``None`` ,该函数默认使用当前训练机所有GPU设备。默认为None。
- **drop_last** (bool) – 如果最后一个batch的大小比 ``batch_size`` 要小,则可使用该参数来指明是否选择丢弃最后一个batch数据。 默认为 ``True`` - **drop_last** (bool) – 如果最后一个batch的大小比 ``batch_size`` 要小,则可使用该参数来指明是否选择丢弃最后一个batch数据。 默认为 ``True``
返回:转换结果 **返回**
转换结果
返回类型: dict **返回类型**
dict
抛出异常: ``ValueError`` – 如果 ``drop_last`` 值为False并且data batch与设备不匹配时,产生此异常 **抛出异常**
``ValueError`` – 如果 ``drop_last`` 值为False并且data batch与设备不匹配时,产生此异常
**代码示例** **代码示例**
......
...@@ -6,17 +6,22 @@ DistributeTranspilerConfig ...@@ -6,17 +6,22 @@ DistributeTranspilerConfig
.. py:class:: paddle.fluid.DistributeTranspilerConfig .. py:class:: paddle.fluid.DistributeTranspilerConfig
.. py:attribute:: slice_var_up (bool) 属性
::::::::::::
slice_var_up (bool)
'''''''''
为多个Pserver(parameter server)将tensor切片, 默认为True。 为多个Pserver(parameter server)将tensor切片, 默认为True。
.. py:attribute:: split_method (PSDispatcher) split_method (PSDispatcher)
'''''''''
可使用 RoundRobin 或者 HashName。 可使用 RoundRobin 或者 HashName。
注意: 尝试选择最佳方法来达到Pserver间负载均衡。 注意: 尝试选择最佳方法来达到Pserver间负载均衡。
.. py:attribute:: min_block_size (int) min_block_size (int)
'''''''''
block中分割(split)出的元素个数的最小值。 block中分割(split)出的元素个数的最小值。
......
...@@ -12,15 +12,22 @@ DistributeTranspiler ...@@ -12,15 +12,22 @@ DistributeTranspiler
算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``Executor`` 来启动NCCL2分布式模式。 算子(broadcasting operators)来实现在该集群中所有工作结点共享``NCCL_ID`` 。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``Executor`` 来启动NCCL2分布式模式。
参数: 参数
::::::::::::
- **config** (DistributeTranspilerConfig) DistributeTranspiler属性配置实例,定义了program转变所需要的属性, 请参考:`DistributeTranspilerConfig` 相关文档。 - **config** (DistributeTranspilerConfig) DistributeTranspiler属性配置实例,定义了program转变所需要的属性, 请参考:`DistributeTranspilerConfig` 相关文档。
返回:初始化后的DistributeTranspiler实例 返回
::::::::::::
初始化后的DistributeTranspiler实例
返回类型:实例(DistributeTranspiler) 返回类型
::::::::::::
实例(DistributeTranspiler)
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -68,11 +75,15 @@ DistributeTranspiler ...@@ -68,11 +75,15 @@ DistributeTranspiler
.. py:method:: transpile(trainer_id, program=None, pservers='127.0.0.1:6174', trainers=1, sync_mode=True, startup_program=None, current_endpoint='127.0.0.1:6174') 方法
::::::::::::
transpile(trainer_id, program=None, pservers='127.0.0.1:6174', trainers=1, sync_mode=True, startup_program=None, current_endpoint='127.0.0.1:6174')
'''''''''
通过此方法,可根据用户配置将单机的program转换为当前节点可用的数据并行的分布式program。 通过此方法,可根据用户配置将单机的program转换为当前节点可用的数据并行的分布式program。
参数: **参数**
- **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1 - **trainer_id** (int) – 当前Trainer worker的id, 如果有n个Trainer worker, id 取值范围为0 ~ n-1
- **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()`` - **program** (Program|None) – 待transpile(转译)的program, 缺省为 ``fluid.default_main_program()``
- **startup_program** (Program|None) - 要转译的 ``startup_program`` ,默认为 ``fluid.default_startup_program()`` - **startup_program** (Program|None) - 要转译的 ``startup_program`` ,默认为 ``fluid.default_startup_program()``
...@@ -82,7 +93,8 @@ DistributeTranspiler ...@@ -82,7 +93,8 @@ DistributeTranspiler
- **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()`` - **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()``
- **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式下时,需要将当前endpoint(终端)传入该参数。PServer模型下,当用户需要使用增量训练时,必须要指定该参数。 - **current_endpoint** (str) – 当需要把program转译(transpile)至NCCL2模式下时,需要将当前endpoint(终端)传入该参数。PServer模型下,当用户需要使用增量训练时,必须要指定该参数。
返回:None **返回**
None
**代码示例** **代码示例**
...@@ -98,14 +110,17 @@ DistributeTranspiler ...@@ -98,14 +110,17 @@ DistributeTranspiler
current_endpoint="127.0.0.1:7000") current_endpoint="127.0.0.1:7000")
.. py:method:: get_trainer_program(wait_port=True) get_trainer_program(wait_port=True)
'''''''''
该方法可以得到Trainer侧的program。 该方法可以得到Trainer侧的program。
返回: Trainer侧的program **返回**
Trainer侧的program
返回类型: Program **返回类型**
Program
**代码示例** **代码示例**
...@@ -121,17 +136,21 @@ DistributeTranspiler ...@@ -121,17 +136,21 @@ DistributeTranspiler
trainer_program = t.get_trainer_program() trainer_program = t.get_trainer_program()
.. py:method:: get_pserver_program(endpoint) get_pserver_program(endpoint)
'''''''''
该方法可以得到Pserver(参数服务器)侧的程序 该方法可以得到Pserver(参数服务器)侧的程序
参数: **参数**
- **endpoint** (str) – 当前Pserver终端 - **endpoint** (str) – 当前Pserver终端
返回: 当前Pserver需要执行的program **返回**
当前Pserver需要执行的program
返回类型: Program **返回类型**
Program
**代码示例** **代码示例**
...@@ -149,17 +168,21 @@ DistributeTranspiler ...@@ -149,17 +168,21 @@ DistributeTranspiler
pserver_program = t.get_pserver_program(current_endpoint) pserver_program = t.get_pserver_program(current_endpoint)
.. py:method:: get_pserver_programs(endpoint) get_pserver_programs(endpoint)
'''''''''
该方法可以得到Pserver侧用于分布式训练的 ``main_program`` 和 ``startup_program`` 。 该方法可以得到Pserver侧用于分布式训练的 ``main_program`` 和 ``startup_program`` 。
参数: **参数**
- **endpoint** (str) – 当前Pserver终端 - **endpoint** (str) – 当前Pserver终端
返回: (main_program, startup_program), “Program”类型的元组 **返回**
(main_program, startup_program), “Program”类型的元组
返回类型: tuple **返回类型**
tuple
**代码示例** **代码示例**
...@@ -178,20 +201,24 @@ DistributeTranspiler ...@@ -178,20 +201,24 @@ DistributeTranspiler
pserver_program, pserver_startup_program = t.get_pserver_programs(current_endpoint) pserver_program, pserver_startup_program = t.get_pserver_programs(current_endpoint)
.. py:method:: get_startup_program(endpoint, pserver_program=None, startup_program=None) get_startup_program(endpoint, pserver_program=None, startup_program=None)
'''''''''
**该函数已停止使用** **该函数已停止使用**
获取当前Pserver的startup_program,如果有多个被分散到不同blocks的变量,则修改operator的输入变量。 获取当前Pserver的startup_program,如果有多个被分散到不同blocks的变量,则修改operator的输入变量。
参数: **参数**
- **endpoint** (str) – 当前Pserver终端 - **endpoint** (str) – 当前Pserver终端
- **pserver_program** (Program) – 已停止使用。 先调用get_pserver_program - **pserver_program** (Program) – 已停止使用。 先调用get_pserver_program
- **startup_program** (Program) – 已停止使用。应在初始化时传入startup_program - **startup_program** (Program) – 已停止使用。应在初始化时传入startup_program
返回: Pserver侧的startup_program **返回**
Pserver侧的startup_program
返回类型: Program **返回类型**
Program
**代码示例** **代码示例**
......
...@@ -9,11 +9,16 @@ ExecutionStrategy ...@@ -9,11 +9,16 @@ ExecutionStrategy
通过设置 ``ExecutionStrategy`` 中的选项,用户可以对执行器的执行配置进行调整,比如设置执行器中线程池的大小等。 通过设置 ``ExecutionStrategy`` 中的选项,用户可以对执行器的执行配置进行调整,比如设置执行器中线程池的大小等。
返回:初始化后的ExecutionStrategy的实例 返回
::::::::::::
初始化后的ExecutionStrategy的实例
返回类型:ExecutionStrategy 返回类型
::::::::::::
ExecutionStrategy
**代码示例** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -36,16 +41,21 @@ ExecutionStrategy ...@@ -36,16 +41,21 @@ ExecutionStrategy
exec_strategy=exec_strategy) exec_strategy=exec_strategy)
.. py:attribute:: num_iteration_per_drop_scope 属性
::::::::::::
num_iteration_per_drop_scope
'''''''''
int型成员。该选项表示间隔多少次迭代之后清理一次临时变量。模型运行过程中,生成的中间临时变量将被放到local execution scope中,为了避免对临时变量频繁的申请与释放,通常将其设为较大的值(比如10或者100)。默认值为100。 int型成员。该选项表示间隔多少次迭代之后清理一次临时变量。模型运行过程中,生成的中间临时变量将被放到local execution scope中,为了避免对临时变量频繁的申请与释放,通常将其设为较大的值(比如10或者100)。默认值为100。
.. py:attribute:: num_iteration_per_run num_iteration_per_run
'''''''''
int型成员。它配置了当用户在python脚本中调用pe.run()时执行器会执行的迭代次数。Executor每次调用,会进行num_iteration_per_run次训练,它会使整体执行过程更快。 int型成员。它配置了当用户在python脚本中调用pe.run()时执行器会执行的迭代次数。Executor每次调用,会进行num_iteration_per_run次训练,它会使整体执行过程更快。
.. py:attribute:: num_threads num_threads
'''''''''
int型成员。该选项表示当前 ``Executor`` 的线程池(thread pool)的大小, 此线程池可用来并发执行program中的operator(算子,运算)。如果 :math:`num\_threads=1` ,则所有的operator将一个接一个地执行,但在不同的program重复周期(iterations)中执行顺序可能不同。如果该选项没有被设置,则在 ``Executor`` 中,它会依据设备类型(device type)、设备数目(device count)而设置为相应值。对GPU,:math:`num\_threads=device\_count∗4` ;对CPU, :math:`num\_threads=CPU\_NUM∗4` 。在 ``Executor`` 中有关于 :math:`CPU\_NUM` 的详细解释。如果没有设置 :math:`CPU\_NUM` ,则设置默认值为1, 并提示用户进行 :math:`CPU\_NUM` 的设置。 int型成员。该选项表示当前 ``Executor`` 的线程池(thread pool)的大小, 此线程池可用来并发执行program中的operator(算子,运算)。如果 :math:`num\_threads=1` ,则所有的operator将一个接一个地执行,但在不同的program重复周期(iterations)中执行顺序可能不同。如果该选项没有被设置,则在 ``Executor`` 中,它会依据设备类型(device type)、设备数目(device count)而设置为相应值。对GPU,:math:`num\_threads=device\_count∗4` ;对CPU, :math:`num\_threads=CPU\_NUM∗4` 。在 ``Executor`` 中有关于 :math:`CPU\_NUM` 的详细解释。如果没有设置 :math:`CPU\_NUM` ,则设置默认值为1, 并提示用户进行 :math:`CPU\_NUM` 的设置。
......
...@@ -10,14 +10,21 @@ Executor ...@@ -10,14 +10,21 @@ Executor
Executor支持单GPU、多GPU以及CPU运行。 Executor支持单GPU、多GPU以及CPU运行。
参数: 参数
::::::::::::
- **place** (fluid.CPUPlace()|fluid.CUDAPlace(N)|None) – 该参数表示Executor执行所在的设备,这里的N为GPU对应的ID。当该参数为 `None` 时,PaddlePaddle会根据其安装版本设置默认的运行设备。当安装的Paddle为CPU版时,默认运行设置会设置成 `CPUPlace()` ,而当Paddle为GPU版时,默认运行设备会设置成 `CUDAPlace(0)` 。默认值为None。 - **place** (fluid.CPUPlace()|fluid.CUDAPlace(N)|None) – 该参数表示Executor执行所在的设备,这里的N为GPU对应的ID。当该参数为 `None` 时,PaddlePaddle会根据其安装版本设置默认的运行设备。当安装的Paddle为CPU版时,默认运行设置会设置成 `CPUPlace()` ,而当Paddle为GPU版时,默认运行设备会设置成 `CUDAPlace(0)` 。默认值为None。
返回:初始化后的 ``Executor`` 对象 返回
::::::::::::
初始化后的 ``Executor`` 对象
返回类型:Executor 返回类型
::::::::::::
Executor
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -74,14 +81,18 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -74,14 +81,18 @@ Executor支持单GPU、多GPU以及CPU运行。
feed={"X": x}, feed={"X": x},
fetch_list=[loss.name]) fetch_list=[loss.name])
.. py:method:: close() 方法
::::::::::::
close()
'''''''''
关闭执行器。该接口主要用于对于分布式训练,调用该接口后不可以再使用该执行器。该接口会释放在PServers上和目前Trainer有关联的资源。 关闭执行器。该接口主要用于对于分布式训练,调用该接口后不可以再使用该执行器。该接口会释放在PServers上和目前Trainer有关联的资源。
返回:无 **返回**
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -93,11 +104,13 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -93,11 +104,13 @@ Executor支持单GPU、多GPU以及CPU运行。
exe.close() exe.close()
.. py:method:: run(program=None, feed=None, fetch_list=None, feed_var_name='feed', fetch_var_name='fetch', scope=None, return_numpy=True, use_program_cache=False, return_merged=True) run(program=None, feed=None, fetch_list=None, feed_var_name='feed', fetch_var_name='fetch', scope=None, return_numpy=True, use_program_cache=False, return_merged=True)
'''''''''
执行指定的Program或者CompiledProgram。需要注意的是,执行器会执行Program或CompiledProgram中的所有算子,而不会根据fetch_list对Program或CompiledProgram中的算子进行裁剪。同时,需要传入运行该模型用到的scope,如果没有指定scope,执行器将使用全局scope,即fluid.global_scope()。 执行指定的Program或者CompiledProgram。需要注意的是,执行器会执行Program或CompiledProgram中的所有算子,而不会根据fetch_list对Program或CompiledProgram中的算子进行裁剪。同时,需要传入运行该模型用到的scope,如果没有指定scope,执行器将使用全局scope,即fluid.global_scope()。
参数: **参数**
- **program** (Program|CompiledProgram) – 该参数为被执行的Program或CompiledProgram,如果未提供该参数,即该参数为None,在该接口内,main_program将被设置为fluid.default_main_program()。默认为:None。 - **program** (Program|CompiledProgram) – 该参数为被执行的Program或CompiledProgram,如果未提供该参数,即该参数为None,在该接口内,main_program将被设置为fluid.default_main_program()。默认为:None。
- **feed** (list|dict) – 该参数表示模型的输入变量。如果是单卡训练,``feed`` 为 ``dict`` 类型,如果是多卡训练,参数 ``feed`` 可以是 ``dict`` 或者 ``list`` 类型变量,如果该参数类型为 ``dict`` ,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU),即输入数据被均匀分配到不同设备上;如果该参数类型为 ``list`` ,则列表中的各个元素都会直接分别被拷贝到各设备中。默认为:None。 - **feed** (list|dict) – 该参数表示模型的输入变量。如果是单卡训练,``feed`` 为 ``dict`` 类型,如果是多卡训练,参数 ``feed`` 可以是 ``dict`` 或者 ``list`` 类型变量,如果该参数类型为 ``dict`` ,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU),即输入数据被均匀分配到不同设备上;如果该参数类型为 ``list`` ,则列表中的各个元素都会直接分别被拷贝到各设备中。默认为:None。
- **fetch_list** (list) – 该参数表示模型运行之后需要返回的变量。默认为:None。 - **fetch_list** (list) – 该参数表示模型运行之后需要返回的变量。默认为:None。
...@@ -108,16 +121,18 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -108,16 +121,18 @@ Executor支持单GPU、多GPU以及CPU运行。
- **use_program_cache** (bool) – 该参数表示是否对输入的Program进行缓存。如果该参数为True,在以下情况时,模型运行速度可能会更快:输入的program为 ``fluid.Program`` ,并且模型运行过程中,调用该接口的参数(program、 feed变量名和fetch_list变量)名始终不变。默认为:False。 - **use_program_cache** (bool) – 该参数表示是否对输入的Program进行缓存。如果该参数为True,在以下情况时,模型运行速度可能会更快:输入的program为 ``fluid.Program`` ,并且模型运行过程中,调用该接口的参数(program、 feed变量名和fetch_list变量)名始终不变。默认为:False。
- **return_merged** (bool) – 该参数表示是否按照执行设备维度将返回的计算结果(fetch list中指定的变量)进行合并。如果 ``return_merged`` 设为False,返回值类型是一个Tensor的二维列表( ``return_numpy`` 设为Fasle时)或者一个numpy.ndarray的二维列表( ``return_numpy`` 设为True时)。如果 ``return_merged`` 设为True,返回值类型是一个Tensor的一维列表( ``return_numpy`` 设为Fasle时)或者一个numpy.ndarray的一维列表( ``return_numpy`` 设为True时)。更多细节请参考示例代码2。如果返回的计算结果是变长的,请设置 ``return_merged`` 为False,即不按照执行设备维度合并返回的计算结果。该参数的默认值为True,但这仅是为了兼容性考虑,在未来的版本中默认值可能会更改为False。 - **return_merged** (bool) – 该参数表示是否按照执行设备维度将返回的计算结果(fetch list中指定的变量)进行合并。如果 ``return_merged`` 设为False,返回值类型是一个Tensor的二维列表( ``return_numpy`` 设为Fasle时)或者一个numpy.ndarray的二维列表( ``return_numpy`` 设为True时)。如果 ``return_merged`` 设为True,返回值类型是一个Tensor的一维列表( ``return_numpy`` 设为Fasle时)或者一个numpy.ndarray的一维列表( ``return_numpy`` 设为True时)。更多细节请参考示例代码2。如果返回的计算结果是变长的,请设置 ``return_merged`` 为False,即不按照执行设备维度合并返回的计算结果。该参数的默认值为True,但这仅是为了兼容性考虑,在未来的版本中默认值可能会更改为False。
返回:返回fetch_list中指定的变量值 **返回**
返回fetch_list中指定的变量值
返回类型:List **返回类型**
List
.. note:: .. note::
1. 如果是多卡训练,并且feed参数为dict类型,输入数据将被均匀分配到不同的卡上,例如:使用2块GPU训练,输入样本数为3,即[0, 1, 2],经过拆分之后,GPU0上的样本数为1,即[0],GPU1上的样本数为2,即[1, 2]。如果样本数少于设备数,程序会报错,因此运行模型时,应额外注意数据集的最后一个batch的样本数是否少于当前可用的CPU核数或GPU卡数,如果是少于,建议丢弃该batch。 1. 如果是多卡训练,并且feed参数为dict类型,输入数据将被均匀分配到不同的卡上,例如:使用2块GPU训练,输入样本数为3,即[0, 1, 2],经过拆分之后,GPU0上的样本数为1,即[0],GPU1上的样本数为2,即[1, 2]。如果样本数少于设备数,程序会报错,因此运行模型时,应额外注意数据集的最后一个batch的样本数是否少于当前可用的CPU核数或GPU卡数,如果是少于,建议丢弃该batch。
2. 如果可用的CPU核数或GPU卡数大于1,则fetch出来的结果为不同设备上的相同变量值(fetch_list中的变量)在第0维拼接在一起。 2. 如果可用的CPU核数或GPU卡数大于1,则fetch出来的结果为不同设备上的相同变量值(fetch_list中的变量)在第0维拼接在一起。
**示例代码1** **代码示例 1**
.. code-block:: python .. code-block:: python
...@@ -142,7 +157,7 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -142,7 +157,7 @@ Executor支持单GPU、多GPU以及CPU运行。
fetch_list=[loss.name]) fetch_list=[loss.name])
**示例代码2** **代码示例 2**
.. code-block:: python .. code-block:: python
...@@ -197,11 +212,13 @@ Executor支持单GPU、多GPU以及CPU运行。 ...@@ -197,11 +212,13 @@ Executor支持单GPU、多GPU以及CPU运行。
# [-0.44514108 -0.2345845 ]] # [-0.44514108 -0.2345845 ]]
.. py:method:: infer_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100) infer_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100)
'''''''''
infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在分布式训练中,推进梯度将在infer_from_dataset中禁用。 infer_from_dataset()可以非常容易地用于多线程中的评估。 infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在分布式训练中,推进梯度将在infer_from_dataset中禁用。 infer_from_dataset()可以非常容易地用于多线程中的评估。
参数: **参数**
- **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的) - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的)
- **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的数据集。必要时请检查Dataset文件。默认为None - **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的数据集。必要时请检查Dataset文件。默认为None
- **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域 - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域
...@@ -211,9 +228,10 @@ infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在 ...@@ -211,9 +228,10 @@ infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在
- **fetch_info** (String List) – 每个变量的打印信息,默认为None - **fetch_info** (String List) – 每个变量的打印信息,默认为None
- **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100 - **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100
返回:None **返回**
None
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -231,13 +249,15 @@ infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在 ...@@ -231,13 +249,15 @@ infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在
exe.infer_from_dataset(program=fluid.default_main_program(),dataset=dataset) exe.infer_from_dataset(program=fluid.default_main_program(),dataset=dataset)
.. py:method:: train_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100) train_from_dataset(program=None, dataset=None, scope=None, thread=0, debug=False, fetch_list=None, fetch_info=None, print_period=100)
'''''''''
从预定义的数据集中训练。 数据集在paddle.fluid.dataset中定义。 给定程序(或编译程序),train_from_dataset将使用数据集中的所有数据样本。 输入范围可由用户给出。 默认情况下,范围是global_scope()。训练中的线程总数是thread。 训练中使用的线程数将是数据集中threadnum的最小值,同时也是此接口中线程的值。 可以设置debug,以便执行器显示所有算子的运行时间和当前训练任务的吞吐量。 从预定义的数据集中训练。 数据集在paddle.fluid.dataset中定义。 给定程序(或编译程序),train_from_dataset将使用数据集中的所有数据样本。 输入范围可由用户给出。 默认情况下,范围是global_scope()。训练中的线程总数是thread。 训练中使用的线程数将是数据集中threadnum的最小值,同时也是此接口中线程的值。 可以设置debug,以便执行器显示所有算子的运行时间和当前训练任务的吞吐量。
注意:train_from_dataset将销毁每次运行在executor中创建的所有资源。 注意:train_from_dataset将销毁每次运行在executor中创建的所有资源。
参数: **参数**
- **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的) - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的)
- **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的数据集。必要时请检查Dataset文件。默认为None - **dataset** (paddle.fluid.Dataset) – 在此函数外创建的数据集,用户应当在调用函数前提供完整定义的数据集。必要时请检查Dataset文件。默认为None
- **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域 - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。默认为全局域
...@@ -247,9 +267,10 @@ infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在 ...@@ -247,9 +267,10 @@ infer_from_dataset的文档与train_from_dataset几乎完全相同,只是在
- **fetch_info** (String List) – 每个变量的打印信息,默认为None - **fetch_info** (String List) – 每个变量的打印信息,默认为None
- **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100 - **print_period** (int) – 每两次打印之间间隔的mini-batches的数量,默认为100
返回:None **返回**
None
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
......
...@@ -7,7 +7,8 @@ LoDTensorArray ...@@ -7,7 +7,8 @@ LoDTensorArray
LoDTensorArray是由LoDTensor组成的数组,支持"[]"运算符、len()函数和for迭代等。 LoDTensorArray是由LoDTensor组成的数组,支持"[]"运算符、len()函数和for迭代等。
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
...@@ -17,16 +18,21 @@ LoDTensorArray是由LoDTensor组成的数组,支持"[]"运算符、len()函数 ...@@ -17,16 +18,21 @@ LoDTensorArray是由LoDTensor组成的数组,支持"[]"运算符、len()函数
.. py:method:: append(self: paddle.fluid.core_avx.LoDTensorArray, tensor: paddle.fluid.core.LoDTensor) → None 方法
::::::::::::
append(self: paddle.fluid.core_avx.LoDTensorArray, tensor: paddle.fluid.core.LoDTensor) → None
'''''''''
该接口将LoDTensor追加到LoDTensorArray后。 该接口将LoDTensor追加到LoDTensorArray后。
参数: **参数**
- **tensor** (LoDTensor) - 追加的LoDTensor。 - **tensor** (LoDTensor) - 追加的LoDTensor。
返回:无。 **返回**
无。
**示例代码** **代码示例**
.. code-block:: python .. code-block:: python
......
...@@ -7,9 +7,12 @@ disable_dygraph ...@@ -7,9 +7,12 @@ disable_dygraph
该接口关闭动态图模式。 该接口关闭动态图模式。
返回:无 返回
::::::::::::
**示例代码** 代码示例
::::::::::::
.. code-block:: python .. code-block:: python
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册