我构建了一个非常简单的 TensorFlow Keras 模型,只有一个密集层。它在 GradientTape
外面工作得很好块,但在 GradientTape
内阻止它引发 LookupError: No gradient defined for operation 'IteratorGetNext' (op type: IteratorGetNext)
重现代码:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import tensorflow as tf
import numpy as np
print(tf.__version__)
model = Sequential()
model.add(Dense(1, input_shape=(16,)))
fake_data = np.random.random((1, 16))
print(model.predict(fake_data).shape) # works
with tf.GradientTape() as tape:
print(model.predict(fake_data).shape) # LookupError: No gradient defined for operation 'IteratorGetNext' (op type: IteratorGetNext)
这似乎在 TensorFlow 2.0.0 中有效,但在 TensorFlow 2.1.0 和 2.2.0 中失败
Here是一个复制问题的笔记本。
最佳答案
尝试以这种方式重新定义 GradientTape 中的预测操作
with tf.GradientTape() as tape:
print(model(fake_data).shape)
关于python - GradientTape : LookupError: No gradient defined for operation 'IteratorGetNext' (op type: IteratorGetNext) 中的简单 Keras 网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61923379/