diff --git a/doc/fluid/api/api_guides/low_level/layers/conv.rst b/doc/fluid/api/api_guides/low_level/layers/conv.rst index e741f452e37..018c3d56ef9 100644 --- a/doc/fluid/api/api_guides/low_level/layers/conv.rst +++ b/doc/fluid/api/api_guides/low_level/layers/conv.rst @@ -32,7 +32,7 @@ 对于depthwise convolution,可以设置groups等于输入通道数,此时,2D卷积的卷积核形状为[C_o, 1, f_h, f_w]。 对于pointwise convolution,卷积核的形状为[C_o, C_in, 1, 1]。 - **注意**:Fluid针对depthwise convolution的GPU计算做了高度优化,您可以通过在:code:`fluid.layers.conv2d`接口设置:code:`use_cudnn=False`来使用Fluid自身优化的CUDA程序。 + **注意**:Fluid针对depthwise convolution的GPU计算做了高度优化,您可以通过在 :code:`fluid.layers.conv2d`接口设置 :code:`use_cudnn=False`来使用Fluid自身优化的CUDA程序。 - 空洞卷积(dilated convolution): diff --git a/doc/fluid/api/executor_cn.rst b/doc/fluid/api/executor_cn.rst new file mode 100644 index 00000000000..858ee3c9700 --- /dev/null +++ b/doc/fluid/api/executor_cn.rst @@ -0,0 +1,96 @@ + + +.. cn_api_fluid_executor: + +Executor +======================= + + +*class* paddle.fluid.executor. Executor *(place)* +--------------------------------------------------------- + + + +执行引擎(Executor)使用python脚本驱动,仅支持在单GPU环境下运行。多卡环境下请参考 ``ParallelExecutor`` 。 +Python Executor可以接收传入的program,并根据feed map(输入映射表)和fetch_list(结果获取表) +向program中添加feed operators(数据输入算子)和fetch operators(结果获取算子)。 +feed map为该program提供输入数据。fetch_list提供program训练结束后用户预期的变量(或识别类场景中的命名)。 + +应注意,执行器会执行program中的所有算子而不仅仅是依赖于fetch_list的那部分。 + +Executor将全局变量存储到全局作用域中,并为临时变量创建局部作用域。 +当每一mini-batch上的前向/反向运算完成后,局部作用域的内容将被废弃, +但全局作用域中的变量将在Executor的不同执行过程中一直存在。 + +program中所有的算子会按顺序执行。 + +参数: + - place (core.CPUPlace|core.CUDAPlace(n)) – 指明了 ``Executor`` 的执行场所 + + + +提示:你可以用Executor来调试基于并行GPU实现的复杂网络,他们有完全一样的参数也会产生相同的结果。 + + +``close()`` +++++++++++++++++++++++++ + +关闭这个执行器(Executor)。调用这个方法后不可以再使用这个执行器。 对于分布式训练, 该函数会释放在PServers上涉及到目前训练器的资源。 + +**示例代码** + +.. code-block:: python + + cpu = core.CPUPlace() + exe = Executor(cpu) + ... + exe.close() + + + +``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)`` +************************************************************************************************************************************************************************* + +调用该执行器对象的此方法可以执行program。通过feed map提供待学习数据,以及借助fetch_list得到相应的结果。 +Python执行器(Executor)可以接收传入的program,并根据输入映射表(feed map)和结果获取表(fetch_list) +向program中添加数据输入算子(feed operators)和结果获取算子(fetch operators)。 +feed map为该program提供输入数据。fetch_list提供program训练结束后用户预期的变量(或识别类场景中的命名)。 + +应注意,执行器会执行program中的所有算子而不仅仅是依赖于fetch_list的那部分。 + +参数: + - program (Program) – 需要执行的program,如果没有给定那么默认使用default_main_program + - feed (dict) – 前向输入的变量,数据,词典dict类型, 例如 {“image”: ImageData, “label”: LableData} + - fetch_list (list) – 用户想得到的变量或者命名的列表, run会根据这个列表给与结果 + - feed_var_name (str) – 前向算子(feed operator)变量的名称 + - fetch_var_name (str) – 结果获取算子(fetch operator)的输出变量名称 + - scope (Scope) – 执行这个program的域,用户可以指定不同的域。缺省为全局域 + - return_numpy (bool) – 如果为True,则将结果张量(fetched tensor)转化为numpy + - use_program_cache (bool) – 当program较上次比没有改动则将其置为True +**示例代码** + +.. code-block:: python + + + data = layers.data(name='X', shape=[1], dtype='float32') + hidden = layers.fc(input=data, size=10) + layers.assign(hidden, out) + loss = layers.mean(out) + adam = fluid.optimizer.Adam() + adam.minimize(loss) + + +.. code-block:: python + + + cpu = core.CPUPlace() + exe = Executor(cpu) + exe.run(default_startup_program()) + +.. code-block:: python + + x = numpy.random.random(size=(10, 1)).astype('float32') + outs = exe.run( + feed={'X': x}, + fetch_list=[loss.name]) + diff --git a/doc/fluid/api/fluid_cn.rst b/doc/fluid/api/fluid_cn.rst new file mode 100644 index 00000000000..a6bfe2cf4c0 --- /dev/null +++ b/doc/fluid/api/fluid_cn.rst @@ -0,0 +1,102 @@ +.. cn_api_fluid_default_startup_program: + + +default_startup_program +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +paddle.fluid.default_startup_program() +"""""""""""""""""""""""""""""""""""""""""" + + +该函数可以获取默认/全局 startup program (启动程序)。 + +``fluid.layers`` 中的layer函数会新建参数、读取器(readers)、NCCL句柄作为全局变量。 + +startup_program会使用内在的算子(operators)去初始化他们,并由layer函数将这些operators追加到startup program中。 + +该函数将返回默认的或当前的startup_program。用户可以使用 ``fluid.program_guard`` 去切换program。 + +返回: startup program + +返回类型: Program + + + + + + +.. cn_api_fluid_default_main_program: + + +default_main_program +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +paddle.fluid.default_main_program() +"""""""""""""""""""""""""""""""""""""""""" + + + + +此函数用于获取默认或全局main program(主程序)。该主程序用于训练和测试模型。 + +``fluid.layers`` 中的所有layer函数可以向 ``default_main_program`` 中添加算子(operators)和变量(variables)。 + +``default_main_program`` 是fluid的许多编程接口(API)的Program参数的缺省值。例如,当用户program没有传入的时候, +``Executor.run()`` 会默认执行 ``default_main_program`` 。 + + +返回: main program + +返回类型: Program + + + + + + +.. cn_api_fluid_program_guard: + + +program_guard +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +paddle.fluid.program_guard(*args, **kwds) +"""""""""""""""""""""""""""""""""""""""""" + + +该函数应配合使用python的“with”语句来改变全局主程序(main program)和启动程序(startup program)。 + +“with”语句块中的layer函数将在新的主程序(main program)后添加算子(operators)和变量(variables)。 + +**代码示例** + +.. code-block:: python + + import paddle.fluid as fluid + main_program = fluid.Program() + startup_program = fluid.Program() + with fluid.program_guard(main_program, startup_program): + data = fluid.layers.data(...) + hidden = fluid.layers.fc(...) + +需要注意的是,如果用户不需要构建自己的启动程序或者主程序,一个临时的program将会发挥作用。 + +.. The temporary Program can be used if the user does not need to construct either of startup program or main program. + +**代码示例** + +.. code-block:: python + + import paddle.fluid as fluid + main_program = fluid.Program() + # does not care about startup program. Just pass a temporary value. + with fluid.program_guard(main_program, fluid.Program()): + data = ... + + +参数: + - **main_program** (Program) – “with”语句中将使用的新的主程序(main program)。 + - **startup_program** (Program) – “with”语句中将使用的新的启动程序(startup program)。若传入 ``None`` 则不改变当前的启动程序。 + + + diff --git a/doc/fluid/api/layers_cn.rst b/doc/fluid/api/layers_cn.rst new file mode 100644 index 00000000000..43ad2ba8b79 --- /dev/null +++ b/doc/fluid/api/layers_cn.rst @@ -0,0 +1,139 @@ + +.. _cn_api_fluid_layers_While: + +While +>>>>>>>>>>>> + +*class* paddle.fluid.layers. While *(cond, is_test=False, name=None)* +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +该类用于实现while循环控制功能。 + + +参数: + - cond (Variable) – 用于比较的条件 + - is_test (bool) – 用于表明是不是在测试阶段执行 + + +**代码示例** + +.. code-block:: python + + d0 = layers.data("d0", shape=[10], dtype='float32') + data_array = layers.array_write(x=d0, i=i) + array_len = layers.fill_constant(shape=[1],dtype='int64', value=3) + cond = layers.less_than(x=i, y=array_len) + while_op = layers.While(cond=cond) + with while_op.block(): + d = layers.array_read(array=data_array, i=i) + i = layers.increment(x=i, in_place=True) + layers.array_write(result, i=i, array=d) + layers.less_than(x=i, y=array_len, cond=cond) + + + +.. _cn_api_fluid_layers_Switch: + +Switch +>>>>>>>>>>>>>>>>>>>> +*class* paddle.fluid.layers. Switch *(name=None)* +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +Switch类实现的功能十分类似if-elif-else。它可以在学习率调度器(learning rate scheduler)中调整学习率。 +:: + 语义上, + 1. switch控制流挨个检查cases + 2. 各个case的条件是一个布尔值(boolean),它是一个标量(scalar)变量 + 3. 它将执行第一个匹配的case后面的分支,如果没有匹配的case,但若存在一个default case,则会执行default case后面的语句 + 4. 一旦匹配了一个case,它降会执行这个case所对应的分支,且仅此分支。 + +**代码示例** + +.. code-block:: python + + lr = fluid.layers.tensor.create_global_var( + shape=[1], + value=0.0, + dtype='float32', + persistable=True, + name="learning_rate") + one_var = tensor.fill_constant( + shape=[1], dtype='float32', value=1.0) + two_var = tensor.fill_constant( + shape=[1], dtype='float32', value=2.0) + + with fluid.layers.control_flow.Switch() as switch: + with switch.case(global_step == zero_var): + fluid.layers.tensor.assign(input=one_var, output=lr) + with switch.default(): + fluid.layers.tensor.assign(input=two_var, output=lr) + +``case(condition)`` +"""""""""""""""""""""""""""""""""" +为该condition(情况,条件)建立新的block(块)。 + + +``default()`` +"""""""""""""""""""""""""""""""""""""" +为该switch建立default case。 + + + + + + + +.. _cn_api_fluid_layers_increment: + +increment +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> + +paddle.fluid.layers. increment(x, value=1.0, in_place=True) +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +该函数为x中的每一个值增加 ``value`` 大小, ``value`` 即函数中待传入的参数。该函数默认直接在原变量x上进行运算。 + +参数: + - x (Variable|list) – 含有输入值的张量(tensor) + - value (float) – 需要增加在x变量上的值 + - in_place (bool) – 是否在x变量本身进行增加操作,而非返回其增加后的一个副本本身不改变。默认为True, 即在其本身进行操作。 + +返回: 每个元素增加后的对象 +返回类型:变量(variable) + +**代码示例** + +.. code-block:: python + + data = fluid.layers.data(name='data', shape=[32, 32], dtype='float32') + data = fluid.layers.increment(x=data, value=3.0, in_place=True) + + + + + +.. _cn_api_fluid_layers_array_write: + +array_write +>>>>>>>>>>>>>>>>>>>>>> +paddle.fluid.layers. array_write(x, i, array=None) +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +该函数将给定的输入变量(即 ``x`` )写入一个作为输出的 ``LOD_TENSOR_ARRAY`` 变量的某一指定位置中, +这一位置由数组下标(即 ``i`` )指明。 如果 ``LOD_TENSOR_ARRAY`` (即 ``array`` )未指定(即为None值), 一个新的 ``LOD_TENSOR_ARRAY`` 将会被创建并作为结果返回。 + +参数: + - x (Variable|list) – 待从中读取数据的输入张量(tensor) + - i (Variable|list) – 输出结果 ``LOD_TENSOR_ARRAY`` 的下标, 该下标指向输入张量 ``x`` 写入输出数组的位置 + - array (Variable|list) – 会被输入张量 ``x`` 写入的输出结果 ``LOD_TENSOR_ARRAY`` 。如果该项值为None, If this parameter is NONE, 一个新的 ``LOD_TENSOR_ARRAY`` 将会被创建并作为结果返回 + +返回: 输入张量 ``x`` 所写入的输出结果 ``LOD_TENSOR_ARRAY`` +返回类型: 变量(Variable) + +**代码示例** + +.. code-block:: python + + tmp = fluid.layers.zeros(shape=[10], dtype='int32') + i = fluid.layers.fill_constant(shape=[1], dtype='int64', value=10) + arr = layers.array_write(tmp, i=i) +