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]