我一直在关注 Chollet 的机器学习书籍,并且在这段代码中不断收到此错误,特别是在第三行。我似乎正在将 Keras 张量传递给 tf 函数,但我不知道如何解决这个问题。
import tensorflow as tf
inputs = keras.Input(shape=(None,), dtype="int64")
embedded = tf.one_hot(inputs, depth=max_tokens)
x = layers.Bidirectional(layers.LSTM(32))(embedded)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(1, activation="sigmoid")(x)
model = keras.Model(inputs, outputs)
model.compile(optimizer="rmsprop",
loss="binary_crossentropy",
metrics=["accuracy"])
model.summary()
我尝试按照错误消息中的解决方案进行操作,该解决方案告诉我创建一个新类,但不知道该怎么做。
将 TensorFlow 函数 (
tf.one_hot
) 包裹在一个层中。并且,将对函数的调用替换为对新层的调用。
例如:
class EmbeddedLayer(keras.Layer):
def call(self, x):
return tf.one_hot(x, depth=max_tokens)
inputs = keras.Input(shape=(None,), dtype="int64")
embedded = EmbeddedLayer()(inputs)
x = layers.Bidirectional(layers.LSTM(32))(embedded)
x = layers.Dropout(0.5)(x)
outputs = layers.Dense(1, activation="sigmoid")(x)
model = keras.Model(inputs, outputs)
model.compile(
optimizer="rmsprop",
loss="binary_crossentropy",
metrics=["accuracy"],
)
model.summary()