“ef788603d4047f41965db67a4589cd21483e26ec”上不存在“paddle/fluid/git@gitcode.net:s920243400/PaddleDetection.git”
未验证 提交 272a6bcc 编写于 作者: C Cheerego 提交者: GitHub

syn_cn_en_apidoc (#856)

上级 91d67623
...@@ -2,138 +2,6 @@ ...@@ -2,138 +2,6 @@
fluid fluid
################# #################
.. _cn_api_fluid_AsyncExecutor:
AsyncExecutor
-------------------------------
.. py:class:: paddle.fluid.AsyncExecutor(place=None, run_mode='')
**AsyncExecutor正在积极开发,API可能在短期内进行调整。**
Python中的异步执行器。AsyncExecutor利用多核处理器和数据排队的强大功能,使数据读取和融合解耦,每个线程并行运行。
AsyncExecutor不是在python端读取数据,而是接受一个训练文件列表,该列表将在c++中检索,然后训练输入将被读取、解析并在c++代码中提供给训练网络。
参数:
- **place** (fluid.CPUPlace|None) - 指示 executor 将在哪个设备上运行。目前仅支持CPU
**代码示例:**
.. code-block:: python
data_feed = fluid.DataFeedDesc('data.proto')
startup_program = fluid.default_startup_program()
main_program = fluid.default_main_program()
filelist = ["train_data/part-%d" % i for i in range(100)]
thread_num = len(filelist) / 4
place = fluid.CPUPlace()
async_executor = fluid.AsyncExecutor(place)
async_executor.run_startup_program(startup_program)
epoch = 10
for i in range(epoch):
async_executor.run(main_program,
data_feed,
filelist,
thread_num,
[acc],
debug=False)
.. note::
对于并行gpu调试复杂网络,您可以在executor上测试。他们有完全相同的参数,并可以得到相同的结果。
目前仅支持CPU
.. py:method:: run(program, data_feed, filelist, thread_num, fetch, mode='', debug=False)
使用此 ``AsyncExecutor`` 来运行 ``program`` 。
``filelist`` 中包含训练数据集。用户也可以通过在参数 ``fetch`` 中提出变量来检查特定的变量, 正如 ``fluid.Executor`` 。
但不像 ``fluid.Executor`` , ``AsyncExecutor`` 不返回获取到的变量,而是将每个获取到的变量作为标准输出展示给用户。
数据集上的运算在多个线程上执行,每个线程中都会独立出一个线程本地作用域,并在此域中建立运算。
所有运算同时更新参数值。
参数:
- **program** (Program) – 需要执行的program。如果没有提供该参数,默认使用 ``default_main_program``
- **data_feed** (DataFeedDesc) – ``DataFeedDesc`` 对象
- **filelist** (str) – 一个包含训练数据集文件的文件列表
- **thread_num** (int) – 并发训练线程数。参照 *注解* 部分获取合适的设置方法
- **fetch** (str|list) – 变量名,或者变量名列表。指明最后要进行观察的变量命名
- **mode** (str) – 该接口的运行模式
- **debug** (bool) – 如果为True, 在每一个minibatch处理后,fetch 中指明的变量将会通过标准输出打印出来
.. note::
1.该执行器会运行program中的所有运算,不只是那些依赖于fetchlist的运算
2.该类执行器在多线程上运行,每个线程占用一个CPU核。为了实现效率最大化,建议将 ``thread_num`` 等于或稍微小于CPU核心数
.. py:method:: download_data(afs_path, local_path, fs_default_name, ugi, file_cnt, hadoop_home='$HADOOP_HOME', process_num=12)
download_data是用于分布式训练的默认下载方法,用户可不使用该方法下载数据。
**示例**
.. code-block:: python
exe = fluid.AsyncExecutor()
exe.download_data("/xxx/xxx/xx/",
"./data", "afs://
xxx.xxx.xxx.xxx:9901", "xxx,yyy")
参数:
- **afs_path** (str) - 用户定义的afs_path
- **local_path** (str) - 下载数据路径
- **fs_default_name** (str) - 文件系统服务器地址
- **ugi** (str) - hadoop ugi
- **file_cnt** (int) - 用户可以指定用于调试的文件号
- **hadoop_home** (str) - hadoop home path
- **process_num** (int) - 下载进程号
.. py:method:: get_instance()
获取当前节点的实例,以便用户可以在分布式背景下中执行操作。
.. py:method:: config_distributed_nodes()
如果用户需要运行分布式AsyncExecutor,则需要进行全局配置,以便获取当前进程的信息。
.. py:method:: stop()
在流程结束时,用户应该停止服务器并阻止所有workers。
.. py:method:: init_server(dist_desc)
如果当前进程是server,则初始化当前节点的服务器。
参数:
- **dist_desc** (str)- 描述如何初始化worker和server的protobuf字符串
.. py:method:: init_worker(dist_desc, startup_program)
如果当前进程是worker,则初始化当前节点的worker
参数:
- **dist_desc** (str)- 描述如何初始化worker和server的protobuf字符串
- **startup_program** (fluid.Program)- 当前进程的startup program
.. py:method:: init_model()
可以从其中一个worker中调用的init_model命令。随之,在server中初始化模型参数。
.. py:method:: save_model(save_path)
可以从其中一个worker调用的save_model命令。随之,模型参数会保存在server中并上传到文件系统的save_path指定的位置。
参数:
- **save_path** (str)- 文件系统的保存路径
.. _cn_api_fluid_BuildStrategy: .. _cn_api_fluid_BuildStrategy:
BuildStrategy BuildStrategy
...@@ -263,7 +131,7 @@ CompiledProgram用于转换程序以进行各种优化。例如, ...@@ -263,7 +131,7 @@ CompiledProgram用于转换程序以进行各种优化。例如,
cpu_places cpu_places
------------------------------- -------------------------------
.. py:function:: paddle.fluid.cpu_places(device_count=None) .. py:function:: paddle.fluid.cpu_places(device_count=None)
创建 ``fluid.CPUPlace`` 对象列表。 创建 ``fluid.CPUPlace`` 对象列表。
...@@ -299,7 +167,7 @@ CPUPlace是设备的描述符。它代表一个CPU,可以访问CPUPlace对应 ...@@ -299,7 +167,7 @@ CPUPlace是设备的描述符。它代表一个CPU,可以访问CPUPlace对应
create_lod_tensor create_lod_tensor
------------------------------- -------------------------------
.. py:function:: paddle.fluid.create_lod_tensor(data, recursive_seq_lens, place) .. py:function:: paddle.fluid.create_lod_tensor(data, recursive_seq_lens, place)
该函数从一个numpy数组,列表或者已经存在的lod tensor中创建一个lod tensor。 该函数从一个numpy数组,列表或者已经存在的lod tensor中创建一个lod tensor。
...@@ -358,7 +226,7 @@ create_random_int_lodtensor ...@@ -358,7 +226,7 @@ create_random_int_lodtensor
假如我们想用LoD Tensor来承载一词序列,其中每个词由一个整数来表示。现在,我们意图创建一个LoD Tensor来代表两个句子,其中一个句子有两个词,另外一个句子有三个。那么 ``base_shape`` 为[1], 输入的length-based ``recursive_seq_lens`` 是 [[2, 3]]。那么LoDTensor的整体形状应为[5, 1],并且为两个句子存储5个词。 假如我们想用LoD Tensor来承载一词序列,其中每个词由一个整数来表示。现在,我们意图创建一个LoD Tensor来代表两个句子,其中一个句子有两个词,另外一个句子有三个。那么 ``base_shape`` 为[1], 输入的length-based ``recursive_seq_lens`` 是 [[2, 3]]。那么LoDTensor的整体形状应为[5, 1],并且为两个句子存储5个词。
参数: 参数:
- **recursive_seq_lens** (list) – 一组列表的列表, 表明了由用户指明的length-based level of detail信息 - **recursive_seq_lens** (list) – 一组列表的列表, 表明了由用户指明的length-based level of detail信息
- **base_shape** (list) – LoDTensor所容纳的基本元素的形状 - **base_shape** (list) – LoDTensor所容纳的基本元素的形状
- **place** (Place) – CPU或GPU。 指明返回的新LoD Tensor存储地点 - **place** (Place) – CPU或GPU。 指明返回的新LoD Tensor存储地点
...@@ -496,9 +364,9 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 ...@@ -496,9 +364,9 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含
data_feed.set_batch_size(128) data_feed.set_batch_size(128)
data_feed.set_dense_slots('wd') # The slot named 'wd' will be dense data_feed.set_dense_slots('wd') # The slot named 'wd' will be dense
data_feed.set_use_slots('wd') # The slot named 'wd' will be used data_feed.set_use_slots('wd') # The slot named 'wd' will be used
#Finally, the content can be dumped out for debugging purpose: #Finally, the content can be dumped out for debugging purpose:
print(data_feed.desc()) print(data_feed.desc())
...@@ -517,7 +385,7 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 ...@@ -517,7 +385,7 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含
**代码示例:** **代码示例:**
.. code-block:: python .. code-block:: python
data_feed = fluid.DataFeedDesc('data.proto') data_feed = fluid.DataFeedDesc('data.proto')
data_feed.set_batch_size(128) data_feed.set_batch_size(128)
...@@ -534,11 +402,11 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 ...@@ -534,11 +402,11 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含
**代码示例:** **代码示例:**
.. code-block:: python .. code-block:: python
data_feed = fluid.DataFeedDesc('data.proto') data_feed = fluid.DataFeedDesc('data.proto')
data_feed.set_dense_slots(['words']) data_feed.set_dense_slots(['words'])
.. note:: .. note::
默认情况下,所有slot都是稀疏的 默认情况下,所有slot都是稀疏的
...@@ -558,7 +426,7 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含 ...@@ -558,7 +426,7 @@ DataFeedDesc也可以在运行时更改。一旦你熟悉了每个字段的含
data_feed.set_use_slots(['words']) data_feed.set_use_slots(['words'])
.. note:: .. note::
默认值不用于所有slot 默认值不用于所有slot
...@@ -596,13 +464,13 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -596,13 +464,13 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
以下是简单用法: 以下是简单用法:
.. code-block:: python .. code-block:: python
place = fluid.CPUPlace() place = fluid.CPUPlace()
img = fluid.layers.data(name='image', shape=[1, 28, 28]) img = fluid.layers.data(name='image', shape=[1, 28, 28])
label = fluid.layers.data(name='label', shape=[1], dtype='int64') label = fluid.layers.data(name='label', shape=[1], dtype='int64')
feeder = fluid.DataFeeder([img, label], fluid.CPUPlace()) feeder = fluid.DataFeeder([img, label], fluid.CPUPlace())
result = feeder.feed([([0] * 784, [9]), ([1] * 784, [1])]) result = feeder.feed([([0] * 784, [9]), ([1] * 784, [1])])
在多GPU模型训练时,如果需要提前分别向各GPU输入数据,可以使用 ``decorate_reader`` 函数。 在多GPU模型训练时,如果需要提前分别向各GPU输入数据,可以使用 ``decorate_reader`` 函数。
.. code-block:: python .. code-block:: python
...@@ -637,14 +505,14 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -637,14 +505,14 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
for data in reader(): for data in reader():
outs = exe.run(program=main_program, outs = exe.run(program=main_program,
feed=feeder.feed(data)) feed=feeder.feed(data))
.. py:method:: feed(iterable) .. py:method:: feed(iterable)
根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。 根据feed_list(数据输入表)和iterable(可遍历的数据)提供的信息,将输入数据转成一种特殊的数据结构,使它们可以输入到 ``Executor`` 和 ``ParallelExecutor`` 中。
参数: 参数:
- **iterable** (list|tuple) – 要输入的数据 - **iterable** (list|tuple) – 要输入的数据
返回: 转换结果 返回: 转换结果
...@@ -657,7 +525,7 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -657,7 +525,7 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。 该方法获取的多个minibatch,并把每个minibatch提前输入进各个设备中。
参数: 参数:
- **iterable** (list|tuple) – 要输入的数据 - **iterable** (list|tuple) – 要输入的数据
- **num_places** (int) – 设备数目。默认为None。 - **num_places** (int) – 设备数目。默认为None。
...@@ -673,23 +541,23 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是 ...@@ -673,23 +541,23 @@ reader通常返回一个minibatch条目列表。在列表中每一条目都是
.. py:method:: decorate_reader(reader, multi_devices, num_places=None, drop_last=True) .. py:method:: 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与设备不匹配时,产生此异常
...@@ -746,7 +614,7 @@ default_startup_program ...@@ -746,7 +614,7 @@ default_startup_program
该函数可以获取默认/全局 startup program (启动程序)。 该函数可以获取默认/全局 startup program (启动程序)。
``fluid.layers`` 中的layer函数会新建参数、readers(读取器)、NCCL句柄作为全局变量。 ``fluid.layers`` 中的layer函数会新建参数、readers(读取器)、NCCL句柄作为全局变量。
startup_program会使用内在的operators(算子)去初始化他们,并由layer函数将这些operators追加到startup program中。 startup_program会使用内在的operators(算子)去初始化他们,并由layer函数将这些operators追加到startup program中。
...@@ -777,7 +645,7 @@ DistributeTranspiler ...@@ -777,7 +645,7 @@ DistributeTranspiler
该类可以把fluid program转变为分布式数据并行计算程序(distributed data-parallelism programs),可以有Pserver和NCCL2两种模式。 该类可以把fluid program转变为分布式数据并行计算程序(distributed data-parallelism programs),可以有Pserver和NCCL2两种模式。
当program在Pserver(全称:parameter server)模式下, ``main_program`` (主程序)转为使用一架远程parameter server(即pserver,参数服务器)来进行参数优化,并且优化图会被输入到一个pserver program中。 当program在Pserver(全称:parameter server)模式下, ``main_program`` (主程序)转为使用一架远程parameter server(即pserver,参数服务器)来进行参数优化,并且优化图会被输入到一个pserver program中。
在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享 ``NCCL_ID`` 。 在NCCL2模式下,transpiler会在 ``startup_program`` 中附加一个 ``NCCL_ID`` 广播算子(broadcasting operators)来实现在该集群中所有工作结点共享 ``NCCL_ID`` 。
调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``ParallelExecutor`` 来启动NCCL2分布式模式。 调用 ``transpile_nccl2`` 后, 你 **必须** 将 ``trainer_id`` , ``num_trainers`` 参数提供给 ``ParallelExecutor`` 来启动NCCL2分布式模式。
...@@ -822,11 +690,11 @@ DistributeTranspiler ...@@ -822,11 +690,11 @@ DistributeTranspiler
该方法可以运行该transpiler(转译器)。 该方法可以运行该transpiler(转译器)。
参数: 参数:
- **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()``
- **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号* - **pservers** (str) – 内容为Pserver列表的字符串,格式为:按逗号区分不同的Pserver,每个Pserver的格式为 *ip地址:端口号*
- **trainers** (int|str) – 在Pserver模式下,该参数指Trainer机的个数;在nccl2模式下,它是一个内容为Trainer终端列表的字符串 - **trainers** (int|str) – 在Pserver模式下,该参数指Trainer机的个数;在nccl2模式下,它是一个内容为Trainer终端列表的字符串
- **sync_mode** (bool) – 是否做同步训练(synchronous training), 默认为True - **sync_mode** (bool) – 是否做同步训练(synchronous training), 默认为True
- **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()`` - **startup_program** (Program|None) – 待transpile(转译)的startup_program,默认为 ``fluid.default_main_program()``
...@@ -847,10 +715,10 @@ DistributeTranspiler ...@@ -847,10 +715,10 @@ DistributeTranspiler
该方法可以得到Pserver(参数服务器)侧的程序 该方法可以得到Pserver(参数服务器)侧的程序
参数: 参数:
- **endpoint** (str) – 当前Pserver终端 - **endpoint** (str) – 当前Pserver终端
返回: 当前Pserver需要执行的program 返回: 当前Pserver需要执行的program
返回类型: Program 返回类型: Program
...@@ -861,21 +729,21 @@ DistributeTranspiler ...@@ -861,21 +729,21 @@ DistributeTranspiler
该方法可以得到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
.. py:method:: get_startup_program(endpoint, pserver_program=None, startup_program=None) .. py:method:: 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
...@@ -947,18 +815,18 @@ ExecutionStrategy ...@@ -947,18 +815,18 @@ ExecutionStrategy
.. py:attribute:: allow_op_delay .. py:attribute:: allow_op_delay
这是一个bool类型成员,表示是否推迟communication operators(交流运算)的执行,这样做会使整体执行过程更快一些。但是在一些模型中,allow_op_delay会导致程序中断。默认为False。 这是一个bool类型成员,表示是否推迟communication operators(交流运算)的执行,这样做会使整体执行过程更快一些。但是在一些模型中,allow_op_delay会导致程序中断。默认为False。
.. py:attribute:: num_iteration_per_drop_scope .. py:attribute:: num_iteration_per_drop_scope
int型成员。它表明了清空执行时产生的临时变量需要的程序执行重复次数。因为临时变量的形状可能在两次重复过程中保持一致,所以它会使整体执行过程更快。默认值为100。 int型成员。它表明了清空执行时产生的临时变量需要的程序执行重复次数。因为临时变量的形状可能在两次重复过程中保持一致,所以它会使整体执行过程更快。默认值为100。
.. note:: .. note::
1. 如果在调用 ``run`` 方法时获取结果数据,``ParallelExecutor`` 会在当前程序重复执行尾部清空临时变量 1. 如果在调用 ``run`` 方法时获取结果数据,``ParallelExecutor`` 会在当前程序重复执行尾部清空临时变量
2. 在一些NLP模型里,该成员会致使GPU内存不足。此时,你应减少 ``num_iteration_per_drop_scope`` 的值 2. 在一些NLP模型里,该成员会致使GPU内存不足。此时,你应减少 ``num_iteration_per_drop_scope`` 的值
...@@ -1005,12 +873,12 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 ...@@ -1005,12 +873,12 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局
.. code-block:: python .. code-block:: python
# 新建一个执行引擎Executor名为exe。 # 新建一个执行引擎Executor名为exe。
place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace() place = fluid.CUDAPlace(0) if use_cuda else fluid.CPUPlace()
exe = fluid.Executor(place) exe = fluid.Executor(place)
# 仅运行一次startup program. # 仅运行一次startup program.
# 不需要优化/编译这个startup program. # 不需要优化/编译这个startup program.
exe.run(fluid.default_startup_program()) exe.run(fluid.default_startup_program())
# 无需编译,直接运行main program # 无需编译,直接运行main program
...@@ -1018,7 +886,7 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 ...@@ -1018,7 +886,7 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局
feed=feed_dict, feed=feed_dict,
fetch_list=[loss.name]) fetch_list=[loss.name])
# 另一种方法是,编译这个main program然后运行. 参考CompiledProgram # 另一种方法是,编译这个main program然后运行. 参考CompiledProgram
compiled_prog = compiler.CompiledProgram( compiled_prog = compiler.CompiledProgram(
fluid.default_main_program()).with_data_parallel( fluid.default_main_program()).with_data_parallel(
loss_name=loss.name) loss_name=loss.name)
...@@ -1027,7 +895,7 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 ...@@ -1027,7 +895,7 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局
fetch_list=[loss.name]) fetch_list=[loss.name])
参数: 参数:
- **place** (core.CPUPlace|core.CUDAPlace(n)) – 指明了 ``Executor`` 的执行场所 - **place** (core.CPUPlace|core.CUDAPlace(n)) – 指明了 ``Executor`` 的执行场所
...@@ -1038,11 +906,11 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局 ...@@ -1038,11 +906,11 @@ Executor将全局变量存储到全局作用域中,并为临时变量创建局
关闭这个执行器(Executor)。 关闭这个执行器(Executor)。
调用这个方法后不可以再使用这个执行器。 对于分布式训练, 该函数会释放在PServers上和目前Trainer有关联的资源。 调用这个方法后不可以再使用这个执行器。 对于分布式训练, 该函数会释放在PServers上和目前Trainer有关联的资源。
**示例代码** **示例代码**
.. code-block:: python .. code-block:: python
cpu = core.CPUPlace() cpu = core.CPUPlace()
exe = Executor(cpu) exe = Executor(cpu)
... ...
...@@ -1059,7 +927,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后 ...@@ -1059,7 +927,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后
应注意,执行器会执行program中的所有算子而不仅仅是依赖于fetch_list的那部分。 应注意,执行器会执行program中的所有算子而不仅仅是依赖于fetch_list的那部分。
参数: 参数:
- **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的) - **program** (Program|CompiledProgram) – 需要执行的program,如果没有给定那么默认使用default_main_program (未编译的)
- **feed** (dict) – 前向输入的变量,数据,词典dict类型, 例如 {“image”: ImageData, “label”: LabelData} - **feed** (dict) – 前向输入的变量,数据,词典dict类型, 例如 {“image”: ImageData, “label”: LabelData}
- **fetch_list** (list) – 用户想得到的变量或者命名的列表, 该方法会根据这个列表给出结果 - **fetch_list** (list) – 用户想得到的变量或者命名的列表, 该方法会根据这个列表给出结果
...@@ -1068,7 +936,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后 ...@@ -1068,7 +936,7 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后
- **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。缺省为全局域 - **scope** (Scope) – 执行这个program的域,用户可以指定不同的域。缺省为全局域
- **return_numpy** (bool) – 如果为True,则将结果张量(fetched tensor)转化为numpy - **return_numpy** (bool) – 如果为True,则将结果张量(fetched tensor)转化为numpy
- **use_program_cache** (bool) – 是否跨批使用缓存程序设置。设置为True时,只有当(1)程序没有用数据并行编译,并且(2)program、 feed变量名和fetch_list变量名与上一步相比没有更改时,运行速度才会更快。 - **use_program_cache** (bool) – 是否跨批使用缓存程序设置。设置为True时,只有当(1)程序没有用数据并行编译,并且(2)program、 feed变量名和fetch_list变量名与上一步相比没有更改时,运行速度才会更快。
返回: 根据fetch_list来获取结果 返回: 根据fetch_list来获取结果
返回类型: list(numpy.array) 返回类型: list(numpy.array)
...@@ -1088,19 +956,19 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后 ...@@ -1088,19 +956,19 @@ feed map为该program提供输入数据。fetch_list提供program训练结束后
.. code-block:: python .. code-block:: python
cpu = core.CPUPlace() cpu = core.CPUPlace()
exe = Executor(cpu) exe = Executor(cpu)
exe.run(default_startup_program()) exe.run(default_startup_program())
.. code-block:: python .. code-block:: python
x = numpy.random.random(size=(10, 1)).astype('float32') x = numpy.random.random(size=(10, 1)).astype('float32')
outs = exe.run( outs = exe.run(
feed={'X': x}, feed={'X': x},
fetch_list=[loss.name]) fetch_list=[loss.name])
...@@ -1155,7 +1023,7 @@ LoDTensor ...@@ -1155,7 +1023,7 @@ LoDTensor
LoDTensor是一个具有LoD信息的张量(Tensor) LoDTensor是一个具有LoD信息的张量(Tensor)
``np.array(lod_tensor)`` 可以将LoDTensor转换为numpy array。 ``np.array(lod_tensor)`` 可以将LoDTensor转换为numpy array。
``lod_tensor.lod()`` 可以获得LoD信息。 ``lod_tensor.lod()`` 可以获得LoD信息。
...@@ -1169,7 +1037,7 @@ X 为 LoDTensor,它包含两个序列。第一个长度是2,第二个长度 ...@@ -1169,7 +1037,7 @@ X 为 LoDTensor,它包含两个序列。第一个长度是2,第二个长度
:: ::
x.lod = [[2, 3]] x.lod = [[2, 3]]
x.data = [[1, 2], [3, 4], // seq 1 x.data = [[1, 2], [3, 4], // seq 1
[5, 6], [7, 8], [9, 10]] // seq 2 [5, 6], [7, 8], [9, 10]] // seq 2
...@@ -1204,9 +1072,9 @@ LoD可以有多个level(例如,一个段落可以有多个句子,一个句 ...@@ -1204,9 +1072,9 @@ LoD可以有多个level(例如,一个段落可以有多个句子,一个句
.. py:method:: lod(self: paddle.fluid.core.LoDTensor) → List[List[int]] .. py:method:: lod(self: paddle.fluid.core.LoDTensor) → List[List[int]]
得到LoD Tensor的LoD。 得到LoD Tensor的LoD。
返回:LoD Tensor的LoD。 返回:LoD Tensor的LoD。
返回类型:out(List [List [int]]) 返回类型:out(List [List [int]])
...@@ -1287,7 +1155,7 @@ memory_optimize ...@@ -1287,7 +1155,7 @@ memory_optimize
- **skip_opt_set** (set) – set中的vars将不被内存优化。 - **skip_opt_set** (set) – set中的vars将不被内存优化。
- **print_log** (bool) – 是否打印debug日志。 - **print_log** (bool) – 是否打印debug日志。
- **level** (int) 如果 level=0 并且shape是完全相等,则重用。 - **level** (int) 如果 level=0 并且shape是完全相等,则重用。
返回: None 返回: None
...@@ -1309,13 +1177,13 @@ name_scope ...@@ -1309,13 +1177,13 @@ name_scope
注意: 这个函数只能用于调试和可视化。不要将其用于分析,比如graph/program转换。 注意: 这个函数只能用于调试和可视化。不要将其用于分析,比如graph/program转换。
参数: 参数:
- **prefix** (str) - 前缀 - **prefix** (str) - 前缀
**示例代码** **示例代码**
.. code-block:: python .. code-block:: python
with name_scope("encoder"): with name_scope("encoder"):
... ...
with name_scope("decoder"): with name_scope("decoder"):
...@@ -1344,7 +1212,7 @@ ParallelExecutor ...@@ -1344,7 +1212,7 @@ ParallelExecutor
参数: 参数:
- **use_cuda** (bool) – 是否使用CUDA - **use_cuda** (bool) – 是否使用CUDA
- **loss_name** (str) – 在训练阶段,必须提供loss function名称。默认为None - **loss_name** (str) – 在训练阶段,必须提供loss function名称。默认为None
- **main_program** (Program) – 需要执行的program。如果未提供, 那么将使用 ``default_main_program``。 默认为None - **main_program** (Program) – 需要执行的program。如果未提供, 那么将使用 ``default_main_program``。 默认为None
...@@ -1385,11 +1253,11 @@ ParallelExecutor ...@@ -1385,11 +1253,11 @@ ParallelExecutor
例如,如果 ``feed`` 是个 ``dict`` 类型变量,则有 例如,如果 ``feed`` 是个 ``dict`` 类型变量,则有
.. code-block:: python .. code-block:: python
exe = ParallelExecutor() exe = ParallelExecutor()
# 图像会被split到设备中。假设有两个设备,那么每个设备将会处理形为 (24, 1, 28, 28)的图像 # 图像会被split到设备中。假设有两个设备,那么每个设备将会处理形为 (24, 1, 28, 28)的图像
exe.run(feed={'image': numpy.random.random(size=(48, 1, 28, 28))}) exe.run(feed={'image': numpy.random.random(size=(48, 1, 28, 28))})
如果 ``feed`` 是个 ``list`` 类型变量,则有 如果 ``feed`` 是个 ``list`` 类型变量,则有
.. code-block:: python .. code-block:: python
...@@ -1404,7 +1272,7 @@ ParallelExecutor ...@@ -1404,7 +1272,7 @@ ParallelExecutor
{"image": numpy.random.random(size=(32, 1, 28, 28))}, {"image": numpy.random.random(size=(32, 1, 28, 28))},
]) ])
参数: 参数:
- **fetch_list** (list) – 获取的变量名列表 - **fetch_list** (list) – 获取的变量名列表
- **feed** (list|dict|None) – feed变量。 如果该参数是 ``dict`` 类型,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU)。反之,如果它是 ``list`` ,则列表中的各个元素都直接分别被拷贝到各设备中。默认为None - **feed** (list|dict|None) – feed变量。 如果该参数是 ``dict`` 类型,feed中的数据将会被分割(split)并分送给多个设备(CPU/GPU)。反之,如果它是 ``list`` ,则列表中的各个元素都直接分别被拷贝到各设备中。默认为None
- **feed_dict** – 该参数已经停止使用。feed参数的别名, 为向后兼容而立。默认为None - **feed_dict** – 该参数已经停止使用。feed参数的别名, 为向后兼容而立。默认为None
...@@ -1414,7 +1282,7 @@ ParallelExecutor ...@@ -1414,7 +1282,7 @@ ParallelExecutor
返回类型:List 返回类型:List
抛出异常: 抛出异常:
- ``ValueError`` - 如果feed参数是list类型,但是它的长度不等于可用设备(执行场所)的数目,再或者给定的feed不是dict类型,抛出此异常 - ``ValueError`` - 如果feed参数是list类型,但是它的长度不等于可用设备(执行场所)的数目,再或者给定的feed不是dict类型,抛出此异常
- ``TypeError`` - 如果feed参数是list类型,但是它里面的元素不是dict类型时,弹出此异常 - ``TypeError`` - 如果feed参数是list类型,但是它里面的元素不是dict类型时,弹出此异常
...@@ -1442,7 +1310,7 @@ ParallelExecutor ...@@ -1442,7 +1310,7 @@ ParallelExecutor
.. _cn_api_fluid_ParamAttr: .. _cn_api_fluid_ParamAttr:
ParamAttr ParamAttr
------------------------------- -------------------------------
...@@ -1451,7 +1319,7 @@ ParamAttr ...@@ -1451,7 +1319,7 @@ ParamAttr
该类代表了参数的各种属性。 为了使神经网络训练过程更加流畅,用户可以根据需要调整参数属性。比如learning rate(学习率), regularization(正则化), trainable(可训练性), do_model_average(平均化模型)和参数初始化方法. 该类代表了参数的各种属性。 为了使神经网络训练过程更加流畅,用户可以根据需要调整参数属性。比如learning rate(学习率), regularization(正则化), trainable(可训练性), do_model_average(平均化模型)和参数初始化方法.
参数: 参数:
- **name** (str) – 参数名。默认为None。 - **name** (str) – 参数名。默认为None。
- **initializer** (Initializer) – 初始化该参数的方法。 默认为None - **initializer** (Initializer) – 初始化该参数的方法。 默认为None
- **learning_rate** (float) – 参数的学习率。计算方法为 :math:`global\_lr*parameter\_lr∗scheduler\_factor` 。 默认为1.0 - **learning_rate** (float) – 参数的学习率。计算方法为 :math:`global\_lr*parameter\_lr∗scheduler\_factor` 。 默认为1.0
...@@ -1459,7 +1327,7 @@ ParamAttr ...@@ -1459,7 +1327,7 @@ ParamAttr
- **trainable** (bool) – 该参数是否可训练。默认为True - **trainable** (bool) – 该参数是否可训练。默认为True
- **gradient_clip** (BaseGradientClipAttr) – 减少参数梯度的方法。默认为None - **gradient_clip** (BaseGradientClipAttr) – 减少参数梯度的方法。默认为None
- **do_model_average** (bool) – 该参数是否服从模型平均值。默认为False - **do_model_average** (bool) – 该参数是否服从模型平均值。默认为False
**代码示例** **代码示例**
.. code-block:: python .. code-block:: python
...@@ -1553,7 +1421,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 ...@@ -1553,7 +1421,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
用于debug 用于debug
参数: 参数:
- **throw_on_error** (bool): 没有设置任何必需的字段时,抛出值错误。 - **throw_on_error** (bool): 没有设置任何必需的字段时,抛出值错误。
- **with_details** (bool): 值为true时,打印更多关于变量和参数的信息,如trainable, optimize_attr等 - **with_details** (bool): 值为true时,打印更多关于变量和参数的信息,如trainable, optimize_attr等
...@@ -1561,7 +1429,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 ...@@ -1561,7 +1429,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
返回类型: str 返回类型: str
抛出异常: 抛出异常:
- ``ValueError`` - 当 ``throw_on_error == true`` ,但没有设置任何必需的字段时,抛出 ``ValueError`` 。 - ``ValueError`` - 当 ``throw_on_error == true`` ,但没有设置任何必需的字段时,抛出 ``ValueError`` 。
...@@ -1610,8 +1478,8 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 ...@@ -1610,8 +1478,8 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
test_program = train_program.clone(for_test=True) test_program = train_program.clone(for_test=True)
sgd = fluid.optimizer.SGD(learning_rate=1e-3) sgd = fluid.optimizer.SGD(learning_rate=1e-3)
with fluid.program_guard(train_program, startup_program): with fluid.program_guard(train_program, startup_program):
sgd.minimize(loss) sgd.minimize(loss)
2.如果分别运行 train Program 和 test Program,则可以不使用clone。 2.如果分别运行 train Program 和 test Program,则可以不使用clone。
.. code-block:: python .. code-block:: python
...@@ -1650,7 +1518,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 ...@@ -1650,7 +1518,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
注意:在序列化和反序列化之后,所有关于参数的信息都会丢失。 注意:在序列化和反序列化之后,所有关于参数的信息都会丢失。
参数: 参数:
- **binary_str_type** (str) – prootbuf二进制字符串 - **binary_str_type** (str) – prootbuf二进制字符串
返回: 反序列化后的ProgramDesc 返回: 反序列化后的ProgramDesc
...@@ -1691,7 +1559,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。 ...@@ -1691,7 +1559,7 @@ operator的角色,值只能是枚举变量{Forward, Backward, Optimize}。
返回:generator 会yield每个Program中的变量 返回:generator 会yield每个Program中的变量
返回类型:iterable 返回类型:iterable
...@@ -1736,7 +1604,7 @@ program_guard ...@@ -1736,7 +1604,7 @@ program_guard
data = ... data = ...
参数: 参数:
- **main_program** (Program) – “with”语句中将使用的新的main program。 - **main_program** (Program) – “with”语句中将使用的新的main program。
- **startup_program** (Program) – “with”语句中将使用的新的startup program。若传入 ``None`` 则不改变当前的启动程序。 - **startup_program** (Program) – “with”语句中将使用的新的startup program。若传入 ``None`` 则不改变当前的启动程序。
...@@ -1754,7 +1622,7 @@ program_guard ...@@ -1754,7 +1622,7 @@ program_guard
release_memory release_memory
------------------------------- -------------------------------
.. py:function:: paddle.fluid.release_memory(input_program, skip_opt_set=None) .. py:function:: paddle.fluid.release_memory(input_program, skip_opt_set=None)
该函数可以调整输入program,插入 ``delete_op`` 删除算子,提前删除不需要的变量。 该函数可以调整输入program,插入 ``delete_op`` 删除算子,提前删除不需要的变量。
...@@ -1762,8 +1630,8 @@ release_memory ...@@ -1762,8 +1630,8 @@ release_memory
**提醒**: 该API还在试验阶段,会在后期版本中删除。不建议用户使用。 **提醒**: 该API还在试验阶段,会在后期版本中删除。不建议用户使用。
参数: 参数:
- **input_program** (Program) – 在此program中插入 ``delete_op`` - **input_program** (Program) – 在此program中插入 ``delete_op``
- **skip_opt_set** (set) – 在内存优化时跳过的变量的集合 - **skip_opt_set** (set) – 在内存优化时跳过的变量的集合
返回: None 返回: None
...@@ -1788,7 +1656,7 @@ scope_guard ...@@ -1788,7 +1656,7 @@ scope_guard
.. code-block:: python .. code-block:: python
import paddle.fluid as fluid import paddle.fluid as fluid
new_scope = fluid.Scope() new_scope = fluid.Scope()
with fluid.scope_guard(new_scope): with fluid.scope_guard(new_scope):
... ...
......
...@@ -2882,8 +2882,8 @@ dropout op可以从Program中删除,提高执行效率。 ...@@ -2882,8 +2882,8 @@ dropout op可以从Program中删除,提高执行效率。
1. downgrade_in_infer(default), 在预测时减小输出结果 1. downgrade_in_infer(default), 在预测时减小输出结果
- train: out = input * mask - train: out = input * mask
- inference: out = input * (1.0 - dropout_prob) - inference: out = input * (1.0 - dropout_prob)
(mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` ) (mask是一个张量,维度和输入维度相同,值为0或1,值为0的比例即为 ``dropout_prob`` )
...@@ -3179,9 +3179,9 @@ LSTMP层(具有循环映射的LSTM)在LSTM层后有一个分离的映射层, ...@@ -3179,9 +3179,9 @@ LSTMP层(具有循环映射的LSTM)在LSTM层后有一个分离的映射层,
- **proj_activation** (str) - 投影输出的激活函数。Choices = [“sigmoid”,“tanh”,“relu”,“identity”],默认“tanh”。 - **proj_activation** (str) - 投影输出的激活函数。Choices = [“sigmoid”,“tanh”,“relu”,“identity”],默认“tanh”。
- **dtype** (str) - 数据类型。Choices = [“float32”,“float64”],默认“float32”。 - **dtype** (str) - 数据类型。Choices = [“float32”,“float64”],默认“float32”。
- **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。 - **name** (str|None) - 该层名称(可选)。若设为None,则自动为该层命名。
- **h_0** (Variable) - 初始隐藏状态是可选输入,默认为0。这是一个具有形状的张量(N x D),其中N是批大小,D是投影大小。 - **h_0** (Variable) - 初始隐藏状态是可选输入,默认为0。这是一个具有形状的张量(N x D),其中N是批大小,D是投影大小。
- **c_0** (Variable) - 初始cell状态是可选输入,默认为0。这是一个具有形状(N x D)的张量,其中N是批大小。h_0和c_0可以为空,但只能同时为空。 - **c_0** (Variable) - 初始cell状态是可选输入,默认为0。这是一个具有形状(N x D)的张量,其中N是批大小。h_0和c_0可以为空,但只能同时为空。
- **cell_clip** (float) - 如果提供该参数,则在单元输出激活之前,单元状态将被此值剪裁。 - **cell_clip** (float) - 如果提供该参数,则在单元输出激活之前,单元状态将被此值剪裁。
- **proj_clip** (float) - 如果 num_proj > 0 并且 proj_clip 被提供,那么将投影值沿元素方向剪切到[-proj_clip,proj_clip]内 - **proj_clip** (float) - 如果 num_proj > 0 并且 proj_clip 被提供,那么将投影值沿元素方向剪切到[-proj_clip,proj_clip]内
返回:含有两个输出变量的元组,隐藏状态(hidden state)的投影和LSTMP的cell状态。投影的shape为(T*P),cell state的shape为(T*D),两者的LoD和输入相同。 返回:含有两个输出变量的元组,隐藏状态(hidden state)的投影和LSTMP的cell状态。投影的shape为(T*P),cell state的shape为(T*D),两者的LoD和输入相同。
...@@ -3827,12 +3827,12 @@ fc ...@@ -3827,12 +3827,12 @@ fc
data_1.data = [[[0.1, 0.2], data_1.data = [[[0.1, 0.2],
[0.3, 0.4]]] [0.3, 0.4]]]
data_1.shape = (1, 2, 2) # 1 is batch_size data_1.shape = (1, 2, 2) # 1 is batch_size
data_2 = [[[0.1, 0.2, 0.3]]] data_2 = [[[0.1, 0.2, 0.3]]]
data_2.shape = (1, 1, 3) data_2.shape = (1, 1, 3)
out = fluid.layers.fc(input=[data_1, data_2], size=2) out = fluid.layers.fc(input=[data_1, data_2], size=2)
Then: Then:
out.data = [[0.18669507, 0.1893476]] out.data = [[0.18669507, 0.1893476]]
out.shape = (1, 2) out.shape = (1, 2)
...@@ -8597,7 +8597,7 @@ shape层。 ...@@ -8597,7 +8597,7 @@ shape层。
返回: (Tensor),输入变量的形状 返回: (Tensor),输入变量的形状
返回类型: Variable 返回类型: Variable
**代码示例:** **代码示例:**
.. code-block:: python .. code-block:: python
...@@ -9012,7 +9012,7 @@ softmax操作符计算k维向量输入中所有其他维的指数和指数值的 ...@@ -9012,7 +9012,7 @@ softmax操作符计算k维向量输入中所有其他维的指数和指数值的
fc = fluid.layers.fc(input=x, size=10) fc = fluid.layers.fc(input=x, size=10)
# 在第二维执行softmax # 在第二维执行softmax
softmax = fluid.layers.softmax(input=fc, axis=1) softmax = fluid.layers.softmax(input=fc, axis=1)
# 在最后一维执行softmax # 在最后一维执行softmax
softmax = fluid.layers.softmax(input=fc, axis=-1) softmax = fluid.layers.softmax(input=fc, axis=-1)
...@@ -9061,7 +9061,7 @@ softmax_with_cross_entropy ...@@ -9061,7 +9061,7 @@ softmax_with_cross_entropy
- **logits** (Variable) - 未标准化(unscaled)的log概率,一个形为 N X K 的二维张量。 N是batch大小,K是类别总数。 - **logits** (Variable) - 未标准化(unscaled)的log概率,一个形为 N X K 的二维张量。 N是batch大小,K是类别总数。
- **label** (Variable) - 2-D 张量,代表了正确标注(ground truth), 如果 ``soft_label`` 为 False,则该参数是一个形为 N X 1 的Tensor<int64> 。如果 ``soft_label`` 为 True,它是 Tensor<float/double> ,形为 N X K 。 - **label** (Variable) - 2-D 张量,代表了正确标注(ground truth), 如果 ``soft_label`` 为 False,则该参数是一个形为 N X 1 的Tensor<int64> 。如果 ``soft_label`` 为 True,它是 Tensor<float/double> ,形为 N X K 。
- **soft_label** (bool) - 是否将输入标签当作软标签。默认为False。 - **soft_label** (bool) - 是否将输入标签当作软标签。默认为False。
- **ignore_index** (int) - 指明要无视的目标值,使之不对输入梯度有贡献。仅在 ``soft_label`` 为False时有效,默认为kIgnoreIndex。 - **ignore_index** (int) - 指明要无视的目标值,使之不对输入梯度有贡献。仅在 ``soft_label`` 为False时有效,默认为kIgnoreIndex。
- **numeric_stable_mode** (bool) – 标志位,指明是否使用一个具有更佳数学稳定性的算法。仅在 ``soft_label`` 为 False的GPU模式下生效. 若 ``soft_label`` 为 True 或者执行场所为CPU, 算法一直具有数学稳定性。 注意使用稳定算法时速度可能会变慢。默认为 True。 - **numeric_stable_mode** (bool) – 标志位,指明是否使用一个具有更佳数学稳定性的算法。仅在 ``soft_label`` 为 False的GPU模式下生效. 若 ``soft_label`` 为 True 或者执行场所为CPU, 算法一直具有数学稳定性。 注意使用稳定算法时速度可能会变慢。默认为 True。
- **return_softmax** (bool) – 标志位,指明是否额外返回一个softmax值, 同时返回交叉熵计算结果。默认为False。 - **return_softmax** (bool) – 标志位,指明是否额外返回一个softmax值, 同时返回交叉熵计算结果。默认为False。
...@@ -9387,7 +9387,7 @@ stack ...@@ -9387,7 +9387,7 @@ stack
[5.0, 6.0] ] ] [5.0, 6.0] ] ]
Out.dims = [1, 3, 2] Out.dims = [1, 3, 2]
参数: 参数:
- **x** (Variable|list(Variable)|tuple(Variable)) – 输入变量 - **x** (Variable|list(Variable)|tuple(Variable)) – 输入变量
- **axis** (int|None) – 对输入进行stack运算所在的轴 - **axis** (int|None) – 对输入进行stack运算所在的轴
...@@ -9909,9 +9909,9 @@ abs ...@@ -9909,9 +9909,9 @@ abs
参数: 参数:
- **x** - abs算子的输入 - **x** - abs算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: abs算子的输出。 返回: abs算子的输出。
...@@ -9931,8 +9931,8 @@ arccosine激活函数。 ...@@ -9931,8 +9931,8 @@ arccosine激活函数。
out = cos^{-1}(x) out = cos^{-1}(x)
参数: 参数:
- **x** - acos算子的输入 - **x** - acos算子的输入
返回: acos算子的输出。 返回: acos算子的输出。
...@@ -9950,8 +9950,8 @@ arcsine激活函数。 ...@@ -9950,8 +9950,8 @@ arcsine激活函数。
out = sin^{-1}(x) out = sin^{-1}(x)
参数: 参数:
- **x** - asin算子的输入 - **x** - asin算子的输入
返回: asin算子的输出。 返回: asin算子的输出。
...@@ -9968,8 +9968,8 @@ arctanh激活函数。 ...@@ -9968,8 +9968,8 @@ arctanh激活函数。
out = tanh^{-1}(x) out = tanh^{-1}(x)
参数: 参数:
- **x** - atan算子的输入 - **x** - atan算子的输入
返回: atan算子的输出。 返回: atan算子的输出。
...@@ -9993,7 +9993,7 @@ ceil ...@@ -9993,7 +9993,7 @@ ceil
参数: 参数:
- **x** - Ceil算子的输入 - **x** - Ceil算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: Ceil算子的输出。 返回: Ceil算子的输出。
...@@ -10024,7 +10024,7 @@ Cosine余弦激活函数。 ...@@ -10024,7 +10024,7 @@ Cosine余弦激活函数。
参数: 参数:
- **x** - cos算子的输入 - **x** - cos算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
...@@ -10085,7 +10085,7 @@ Exp激活函数(Exp指以自然常数e为底的指数运算)。 ...@@ -10085,7 +10085,7 @@ Exp激活函数(Exp指以自然常数e为底的指数运算)。
参数: 参数:
- **x** - Exp算子的输入 - **x** - Exp算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
...@@ -10116,7 +10116,7 @@ floor ...@@ -10116,7 +10116,7 @@ floor
参数: 参数:
- **x** - Floor算子的输入 - **x** - Floor算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
...@@ -10188,8 +10188,8 @@ Logsigmoid激活函数。 ...@@ -10188,8 +10188,8 @@ Logsigmoid激活函数。
参数: 参数:
- **x** - LogSigmoid算子的输入 - **x** - LogSigmoid算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: LogSigmoid算子的输出 返回: LogSigmoid算子的输出
...@@ -10217,8 +10217,8 @@ Reciprocal(取倒数)激活函数 ...@@ -10217,8 +10217,8 @@ Reciprocal(取倒数)激活函数
参数: 参数:
- **x** - reciprocal算子的输入 - **x** - reciprocal算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: Reciprocal算子的输出。 返回: Reciprocal算子的输出。
...@@ -10247,8 +10247,8 @@ Round取整激活函数。 ...@@ -10247,8 +10247,8 @@ Round取整激活函数。
参数: 参数:
- **x** - round算子的输入 - **x** - round算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: Round算子的输出。 返回: Round算子的输出。
...@@ -10276,7 +10276,7 @@ sigmoid激活函数 ...@@ -10276,7 +10276,7 @@ sigmoid激活函数
参数: 参数:
- **x** - Sigmoid算子的输入 - **x** - Sigmoid算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: Sigmoid运算输出. 返回: Sigmoid运算输出.
...@@ -10305,7 +10305,7 @@ sin ...@@ -10305,7 +10305,7 @@ sin
参数: 参数:
- **x** - sin算子的输入 - **x** - sin算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
...@@ -10423,7 +10423,7 @@ sqrt ...@@ -10423,7 +10423,7 @@ sqrt
参数: 参数:
- **x** - Sqrt算子的输入 - **x** - Sqrt算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: Sqrt算子的输出。 返回: Sqrt算子的输出。
...@@ -10482,7 +10482,7 @@ tanh 激活函数。 ...@@ -10482,7 +10482,7 @@ tanh 激活函数。
参数: 参数:
- **x** - Tanh算子的输入 - **x** - Tanh算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: Tanh算子的输出。 返回: Tanh算子的输出。
...@@ -10511,7 +10511,7 @@ tanh_shrink激活函数。 ...@@ -10511,7 +10511,7 @@ tanh_shrink激活函数。
参数: 参数:
- **x** - TanhShrink算子的输入 - **x** - TanhShrink算子的输入
- **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn - **use_cudnn** (BOOLEAN) – (bool,默认为false)是否仅用于cudnn核,需要安装cudnn
返回: tanh_shrink算子的输出 返回: tanh_shrink算子的输出
...@@ -11295,37 +11295,9 @@ zeros ...@@ -11295,37 +11295,9 @@ zeros
============ ==========================
learning_rate_scheduler learning_rate_scheduler
============ ==========================
.. _cn_api_fluid_layers_append_LARS:
append_LARS
-------------------------------
.. py:function:: paddle.fluid.layers.append_LARS(params_grads,learning_rate,weight_decay)
对每一层的学习率运用LARS(LAYER-WISE ADAPTIVE RATE SCALING)
参数:
- **learning_rate** -变量学习率。LARS的全局学习率。
- **weight_decay** -Python float类型数
返回: 衰减的学习率
**代码示例** :
.. code-block:: python
learning_rate*=local_gw_ratio * sqrt(sumsq(param))
/ (sqrt(sumsq(gradient))+ weight_decay * sqrt(sumsq(param)))
.. _cn_api_fluid_layers_cosine_decay: .. _cn_api_fluid_layers_cosine_decay:
...@@ -11354,7 +11326,7 @@ cosine_decay ...@@ -11354,7 +11326,7 @@ cosine_decay
.. code-block:: python .. code-block:: python
base_lr = 0.1 base_lr = 0.1
lr = fluid.layers.cosine_decay( learning_rate = base_lr, step_each_epoch=10000, epochs=120) lr = fluid.layers.cosine_decay( learning_rate = base_lr, step_each_epoch=10000, epochs=120)
...@@ -11922,7 +11894,7 @@ box decode过程得出decode_box,然后分配方案如下所述: ...@@ -11922,7 +11894,7 @@ box decode过程得出decode_box,然后分配方案如下所述:
scores = fluid.layers.data( scores = fluid.layers.data(
name='scores', shape=[20, 81], dtype='float32') name='scores', shape=[20, 81], dtype='float32')
decoded_box, output_assign_box = fluid.layers.box_decoder_and_assign( decoded_box, output_assign_box = fluid.layers.box_decoder_and_assign(
pb, pbv, loc, scores, 4.135) pb, pbv, loc, scores, 4.135)
.. _cn_api_fluid_layers_density_prior_box: .. _cn_api_fluid_layers_density_prior_box:
...@@ -12858,7 +12830,7 @@ yolo_box ...@@ -12858,7 +12830,7 @@ yolo_box
先前网络的输出形状为[N,C,H,W],而H和W应相同,用来指定网格大小。对每个网格点预测给定的数目的框,这个数目记为S,由anchor的数量指定。 在第二维(通道维度)中,C应该等于S *(5 + class_num),class_num是源数据集中对象类别数目(例如coco数据集中的80),此外第二个(通道)维度中还有4个框位置坐标x,y,w,h,以及anchor box的one-hot key的置信度得分。 先前网络的输出形状为[N,C,H,W],而H和W应相同,用来指定网格大小。对每个网格点预测给定的数目的框,这个数目记为S,由anchor的数量指定。 在第二维(通道维度)中,C应该等于S *(5 + class_num),class_num是源数据集中对象类别数目(例如coco数据集中的80),此外第二个(通道)维度中还有4个框位置坐标x,y,w,h,以及anchor box的one-hot key的置信度得分。
假设4个位置坐标是 :math:`t_x` ,:math:`t_y` ,:math:`t_w` , :math:`t_h` 假设4个位置坐标是 :math:`t_x` ,:math:`t_y` ,:math:`t_w` , :math:`t_h`
,则框的预测算法为: ,则框的预测算法为:
.. math:: .. math::
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册