我正在尝试这个:
ta = tf.TensorArray(tf.int32, size=3)
index = tf.placeholder(tf.int32)
value = tf.placeholder(tf.int32)
flow = tf.placeholder(tf.float32)
ta_new = tf.TensorArray(dtype=ta.dtype, handle=ta.handle, flow=flow)
write = ta_new.write(index, value).flow
read = ta_new.read(index)
f = 0
f = session.run(write, feed_dict={index: 0, value: 1, flow: f})
f = session.run(write, feed_dict={index: 1, value: 2, flow: f})
assert_equal(session.run(read, feed_dict={index: 0, flow: f}), 1)
assert_equal(session.run(read, feed_dict={index: 1, flow: f}), 2)
这不起作用。我收到错误:
Could not read from TensorArray index 0 because it has not yet been written to.
有没有办法让它发挥作用?
据我了解,TensorArray.flow
用作tf.control_dependencies
的替代品,也可能用于获得渐变效果?我猜标量本身没有任何意义。我也猜测使用它作为占位符不会那么有意义。但我原以为它仍然有用。
也许无法在TensorArray
的多个计算步骤中存储值?还有其他选择吗?我基本上需要这个。例如。 tf.FIFOQueue
不会给我随机索引访问。