while_loop¶
- paddle.static.nn. while_loop ( cond, body, loop_vars, is_test=False, name=None ) [source]
-
- Api_attr
-
Static Graph
while_loop is one of the control flows. Repeats while_loop body until cond returns False.
- Notice:
-
Local variables defined in
body
cannot be obtained throughfetch_list
ofExecutor
, variables should be defined outsidebody
and placed inloop_vars
for looping, then these variables can be fetched byfetch_list
.
- Parameters
-
cond (Callable) – A callable returning a boolean tensor controlling whether to continue looping. And
cond
takes as many arguments asloop_vars
.body (Callable) – A callable returning a tuple or list of tensors or LoDTensorArrays of the same arity (length and structure) and types as
loops_vars
. Andbody
takes as many arguments asloop_vars
.loop_vars (list|tuple) – A list or tuple of tensors or LoDTensorArrays that is passed to both
cond
andbody
.is_test (bool, optional) – A flag indicating whether execution is in test phase. Default value is False.
name (str, optional) – Normally there is no need for users to set this property. For more information, please refer to Name. Default is None.
- Returns
-
A list or tuple of Tensors or LoDTensorArrays which returned by
body
.
Examples
import paddle paddle.enable_static() def cond(i, ten): return i < ten def body(i, ten): i = i + 1 return [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 = paddle.static.Executor(paddle.CPUPlace()) res = exe.run(main_program, feed={}, fetch_list=[i]) print(res) # [array([10])]