未验证 提交 96c7fbb8 编写于 作者: G guofei 提交者: GitHub

Modify chinese document of while_loop (#1764)

As the title
上级 1e6dec90
...@@ -9,9 +9,9 @@ ____________________________________ ...@@ -9,9 +9,9 @@ ____________________________________
该API用于实现类似while的循环控制功能,只要循环条件 ``cond`` 的返回值为True,``while_loop`` 则会循环执行循环体 ``body`` ,直到 ``cond`` 的返回值为False。 该API用于实现类似while的循环控制功能,只要循环条件 ``cond`` 的返回值为True,``while_loop`` 则会循环执行循环体 ``body`` ,直到 ``cond`` 的返回值为False。
参数: 参数:
- **cond** (callable) - 返回boolean类型张量的可调用函数,用以判断循环是否继续执行。 - **cond** (callable) - 返回boolean类型张量的可调用函数,用以判断循环是否继续执行。 ``cond`` 的参数和 ``loop_vars`` 相对应。
- **body** (callable) - 循环执行的结构体。其返回一个tensor的列表或元组,且这些tensor的长度,结构,类型和 ``loop_vars`` 中的相同 - **body** (callable) - 循环执行的结构体。其返回一个包含tensor或LoDTensorArray的列表或元组,且这些tensor或LoDTensorArray的长度,结构,类型和 ``loop_vars`` 中的相同。 且``body`` 的参数与 ``loop_vars`` 相对应
- **loop_vars** (list|tuple) - tensor的列表或是元组,其传入至 ``cond`` 和 ``body`` 中,得到循环条件和输出值。 - **loop_vars** (list|tuple) - 包含tensor或LoDTensorArray的列表或是元组,将其传入至 ``cond`` 和 ``body`` 中,得到循环条件和输出值。
- **is_test** (bool,可选) - 用于表明是否在测试阶段执行,默认值为False。 - **is_test** (bool,可选) - 用于表明是否在测试阶段执行,默认值为False。
- **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`。一般无需设置,默认值为None。 - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`。一般无需设置,默认值为None。
...@@ -27,6 +27,7 @@ ____________________________________ ...@@ -27,6 +27,7 @@ ____________________________________
- ``TypeError``:若 ``cond`` 返回值不是boolean类型的variable。 - ``TypeError``:若 ``cond`` 返回值不是boolean类型的variable。
- ``TypeError``:若 ``cond`` 返回值的shape不等于1。 - ``TypeError``:若 ``cond`` 返回值的shape不等于1。
- ``ValueError``:若 ``loop_vars`` 为空。 - ``ValueError``:若 ``loop_vars`` 为空。
- ``ValueError``:若 ``cond`` 返回值的长度和类型和 ``loop_vars`` 不同。
**示例代码** **示例代码**
...@@ -36,19 +37,20 @@ ____________________________________ ...@@ -36,19 +37,20 @@ ____________________________________
import paddle.fluid as fluid import paddle.fluid as fluid
import paddle.fluid.layers as layers import paddle.fluid.layers as layers
def cond(i): def cond(i, ten): # 参数和loop_vars相对应
return layers.less_than(i, ten) return i < ten
def body(i): def body(i, ten): # 参数和loop_vars相对应
return layers.increment(x=i, value=1, in_place=True) i = i + 1
return [i, ten]
main_program = fluid.default_main_program() main_program = fluid.default_main_program()
startup_program = fluid.default_startup_program() startup_program = fluid.default_startup_program()
with fluid.program_guard(main_program, startup_program): with fluid.program_guard(main_program, startup_program):
i = layers.fill_constant(shape=[1], dtype='int64', value=0) # 循环计数器 i = layers.fill_constant(shape=[1], dtype='int64', value=0) # 循环计数器
ten = layers.fill_constant(shape=[1], dtype='int64', value=10) # 循环次数 ten = layers.fill_constant(shape=[1], dtype='int64', value=10) # 循环次数
out = layers.while_loop(cond, body, [i]) i, ten = layers.while_loop(cond, body, [i, ten])
exe = fluid.Executor(fluid.CPUPlace()) exe = fluid.Executor(fluid.CPUPlace())
res = exe.run(main_program, feed={}, fetch_list=out) res = exe.run(main_program, feed={}, fetch_list=[i])
print(res) #[array([10])] print(res) #[array([10])]
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册