【问题标题】:Reading a TensorArray in Tensorflow always returns zeroes在 Tensorflow 中读取 TensorArray 总是返回零
【发布时间】:2020-02-17 09:09:49
【问题描述】:

我正在使用 Tensorflow v1.15。我对以下示例中给出的TensorArray 有一个非常基本的实现:

import tensorflow as tf

an_array = tf.TensorArray(dtype=tf.float32, size=5, dynamic_size=True, clear_after_read=False, element_shape=(16, 7, 2))
for i in range(5):
    val = tf.random.normal(shape=(16, 7, 2))
    an_array.write(i, val)
    print(tf.Session().run(val))
tensors = [an_array.read(j) for j in range(5)]
print(tf.Session().run(tensors))

for 循环中的print 不会打印全零,而最后一个print 语句会打印。为什么会这样?谢谢。

【问题讨论】:

    标签: python arrays python-3.x tensorflow


    【解决方案1】:

    tf.TensorArray.write 返回一个新的tf.TensorArray,写入操作发生在该处。一般来说,这个函数的输出应该替换之前对数组的引用:

    import tensorflow as tf
    
    an_array = tf.TensorArray(dtype=tf.float32, size=5, dynamic_size=True,
                              clear_after_read=False, element_shape=(16, 7, 2))
    for i in range(5):
        val = tf.random.normal(shape=(16, 7, 2))
        # Replace tensor array reference with the written one
        an_array = an_array.write(i, val)
        print(tf.Session().run(val))
    tensors = [an_array.read(j) for j in range(5)]
    print(tf.Session().run(tensors))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多