From 8db945a90560c2c4b550e7caa97333cdd2ebde3e Mon Sep 17 00:00:00 2001 From: Chen Long <1300851984@qq.com> Date: Mon, 19 Jul 2021 20:18:24 +0800 Subject: [PATCH] Update while loop (#34229) * update readme test=document_fix * update while loop docs test=document_fix --- python/paddle/fluid/layers/control_flow.py | 32 ++++++---------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/python/paddle/fluid/layers/control_flow.py b/python/paddle/fluid/layers/control_flow.py index 3a06b84d111..fff65f9f46e 100755 --- a/python/paddle/fluid/layers/control_flow.py +++ b/python/paddle/fluid/layers/control_flow.py @@ -1133,30 +1133,14 @@ def while_loop(cond, body, loop_vars, is_test=False, name=None): refer to :ref:`api_guide_Name`. Default is None. Returns: - A list or tuple of tensors or LoDTensorArrays which returned by ``body`` . - - Returen type: - list(Variable)|tuple(Variable). - - Raises: - TypeError: If the type of ``cond`` is not callable. - TypeError: If the type of ``body`` is not callable. - TypeError: If the type of ``loop_vars`` is not list or tuple. - TypeError: If the type of ``cond`` returns is not Variable. - TypeError: If the type of ``cond`` returns is not a boolean variable. - TypeError: If the shape of ``cond`` returns is not equals 1. - ValueError: If the ``var_loops`` is empty. - ValueError: If the length or type of ``body`` returns is not same as ``loop_vars``. + A list or tuple of Tensors or LoDTensorArrays which returned by ``body`` . Examples: .. code-block:: python - import paddle.fluid as fluid - import paddle.fluid.layers as layers import paddle paddle.enable_static() - def cond(i, ten): return i < ten @@ -1164,14 +1148,14 @@ def while_loop(cond, body, loop_vars, is_test=False, name=None): i = i + 1 return [i, ten] - main_program = fluid.default_main_program() - startup_program = fluid.default_startup_program() - with fluid.program_guard(main_program, startup_program): - i = layers.fill_constant(shape=[1], dtype='int64', value=0) # loop counter - ten = layers.fill_constant(shape=[1], dtype='int64', value=10) # loop length - i, ten = layers.while_loop(cond, body, [i, ten]) + main_program = paddle.static.default_main_program() + startup_program = paddle.static.default_startup_program() + with paddle.static.program_guard(main_program, startup_program): + i = paddle.full(shape=[1], fill_value=0, dtype='int64') # loop counter + ten = paddle.full(shape=[1], fill_value=10, dtype='int64') # loop length + i, ten = paddle.static.nn.while_loop(cond, body, [i, ten]) - exe = fluid.Executor(fluid.CPUPlace()) + exe = paddle.static.Executor(paddle.CPUPlace()) res = exe.run(main_program, feed={}, fetch_list=[i]) print(res) # [array([10])] """ -- GitLab