ValueError: Only instances of `keras.Layer` can be added to a Sequential model.
Received: <tensorflow_hub.keras_layer.KerasLayer object at 0x7c61f819f590>
(of type <class 'tensorflow_hub.keras_layer.KerasLayer'>)
代码:
import kagglehub
# Download latest version
path = kagglehub.model_download("google/mobilenet-v2/tensorFlow2/tf2-preview-feature-vector")
mobile_net = hub.KerasLayer("https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4",
input_shape=(224, 224, 3), # Change as per your input size
trainable=False) # Freeze weights if you don't want to fine-tune
# Define the Sequential model
model = tf.keras.models.Sequential([
mobile_net, # Use the pre-trained model as the first layer
tf.keras.layers.Dense(1, activation='sigmoid') # Final layer for binary classification
])
我想解决问题,但我不能,我需要帮助。
代码在
tensorflow==2.15
和 tensorflow_hub==0.16.1
中运行良好。因此,该错误可能是由于 Keras 3.0 与 TensorFlow 2.17 集成时出现的兼容性问题造成的。考虑使用 tf-keras
(Keras 2.0) 可以解决问题,或者使用 Lambda 层来包装 hub.KerasLayer
(mobile_net) 确保兼容性并允许您使用 tf.keras.models.Sequential
构建模型。
使用lambda层来包裹hub层
import tensorflow as tf
import tensorflow_hub as hub
import kagglehub
path = kagglehub.model_download("google/mobilenet-v2/tensorFlow2/tf2-preview-feature-vector")
mobile_net = hub.KerasLayer(
"https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4")
model = tf.keras.Sequential([
tf.keras.layers.InputLayer(input_shape=(224, 224, 3)),
tf.keras.layers.Lambda(lambda x: mobile_net(x)),
tf.keras.layers.Dense(1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()
输出:
Model: "sequential_5"
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓
┃ Layer (type) ┃ Output Shape ┃ Param # ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩
│ lambda_2 (Lambda) │ (None, 1280) │ 0 │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤
│ dense_5 (Dense) │ (None, 1) │ 1,281 │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘
Total params: 1,281 (5.00 KB)
Trainable params: 1,281 (5.00 KB)
Non-trainable params: 0 (0.00 B)