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], dtype=int64)]