【发布时间】:2020-02-18 04:35:39
【问题描述】:
我正在尝试使用另一个 TensorArray 将 TensorArray 中的值左移,使用以下代码:
import tensorflow as tf
an_array = tf.TensorArray(dtype=tf.float32, size=2, dynamic_size=False, clear_after_read=False, element_shape=(1, 2), name="First")
old_array = tf.TensorArray(dtype=tf.float32, size=2, dynamic_size=False, clear_after_read=False, element_shape=(1, 2), name="Second")
old_array = old_array.write(0, 2.*tf.ones((1, 2)))
old_array = old_array.write(1, 3.*tf.ones((1, 2)))
for _ in range(1, 5):
val = tf.random.normal(shape=(1, 2))
an_array = an_array.write(0, old_array.read(1))
an_array = an_array.write(1, val)
old_array = an_array.identity()
print(tf.Session().run([an_array.stack(), old_array.stack()]))
我用一些初始值加载old_array。在循环中,我读取了old_array 数组的第二个元素,并将其提供给an_array 数组的第一个元素。然后将新值写入an_array 数组的第二个元素。 an_array 的内容被复制到old_array。
虽然在第一次迭代中,an_array 中的第一个元素严格来说不是数组的左移版本,而是基于初始条件的一些东西,但以后的迭代预计会给出an_array 的左移版本数组。
当我运行这个脚本时,我得到了错误
tensorflow.python.framework.errors_impl.InvalidArgumentError: TensorArray First_1: 无法写入 TensorArray 索引 0,因为它已被写入。
有人能指出代码有什么问题吗?谢谢。
【问题讨论】:
-
您的代码在我的机器上运行。你的 tensorflow 版本是什么?
-
@Kalpit tfv1.15
-
@Kalpit 你用的是什么版本的 tf?
-
我在 tf v1.14
标签: python arrays python-3.x tensorflow