keras 您对导致此TensorFlow错误的原因有什么想法吗?(从未使用对象)

wixjitnu  于 2023-01-17  发布在  其他
关注(0)|答案(2)|浏览(127)

我正在使用Tensorflow后端在Keras上训练序列到序列模型,主要遵循教程here

  • 我在配备P100 GPU的IBM Power8计算机上使用TensorFlow v1.2.1

当它到达model.fit_generator()行时,TensorFlow会抛出以下错误:

Object was never used (type <class 'tensorflow.python.ops.tensor_array_ops.TensorArray'>):
<tensorflow.python.ops.tensor_array_ops.TensorArray object at 0x3bfffc096dd8>
If you want to mark it as used call its "mark_used()" method.

我试着寻找未使用的操作/Tensor,但是没有找到。然后,我把每个操作/Tensor都标记为已使用,但是我仍然无法摆脱这个错误。

i86rm4rw

i86rm4rw1#

通常,当tensorflow中的一些有状态操作从未传递到session.run或用作控件依赖项时,会触发此错误,这意味着一些更新将被静默丢弃,从而导致错误行为。也就是说,请尝试升级以查看故障是否是某些内部库而不是您的代码。

rdlzhqv9

rdlzhqv92#

我在使用TensorArrays时遇到了这个错误,根据TensorArrays的官方文档:https://www.tensorflow.org/api_docs/python/tf/TensorArray
其中提到“注:应使用此函数的输出。如果未使用,将记录警告或可能引发错误。若要将输出标记为已使用,请调用其.mark_used()方法。”
因此,我在使用TensorArray的“write()”方法时遇到了这个错误。

tfa=tf.TensorArray(tf.float32, size=10)
tfa.write(1,10)

后来以这种方式使用时得到解决:

tfa=tf.TensorArray(tf.float32, size=10)

tfa.write(1,10).mark_used()

相关问题