TensorFlow中循环的实现

TensorArray可以看做是具有动态size功能的Tensor数组。通常都是跟while_loop或map_fn结合使用。

TensorFlow中while_loop:

tf.while_loop(cond, body, loop_vars, shape_invariants=None, 
parallel_iterations=10, back_prop=True, 
swap_memory=False, name=None)

其中,cond返回一个布尔型张量,body是循环体,loop_vars是运行cond和body需要的输入变量列表。

即loop_vars先传入cond 判断条件是否成立,成立之后,把loop_vars传入body 执行操作, 然后返回操作后的loop_vars,即loop_vars已被更新,再把更新后的参数传入cond, 依次循环,直到不满足条件。

例如:

import tensorflow as tf 
a = tf.constant(1) 
b = tf.constant(2) 
c = tf.constant(3) 


def cond(a, b, c): 
    return a<5 


def body(a, b, c): 
    a += 1 
    b += 1 
    c +=1 
    return a, b, c # same with [a, b, c] 


a ,b, c = tf.while_loop(cond, body, [a,b,c]) 

with tf.Session() as sess: 
    sess.run(tf.global_variables_initializer()) 
    print sess.run([a, b, c]) #[5, 6, 7]

 

你可能感兴趣的:(TensorFlow中循环的实现)