GradientTape中的简单Keras网络。LookupError: 没有为操作 "IteratorGetNext"(操作类型:IteratorGetNext)定义梯度。

问题描述 投票:0回答:1

我已经建立了一个非常简单的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中失败。

这里 是一个复制这个问题的笔记本。

python tensorflow keras gradient tensorflow2.0
1个回答
0
投票

试着以这种方式重新定义GradientTape中的预测操作。

with tf.GradientTape() as tape:
    print(model(fake_data).shape)
© www.soinside.com 2019 - 2024. All rights reserved.