我已经建立了一个非常简单的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中失败。
这里 是一个复制这个问题的笔记本。
试着以这种方式重新定义GradientTape中的预测操作。
with tf.GradientTape() as tape:
print(model(fake_data).shape)