在keras中加载使用lambda调整大小层的模型时出现ValueError

ValueError when loading model that uses lambda resize layer in keras

基本上,我训练了一个带有调整大小层的模型。这是我的模型:

model = Sequential()
model.add(keras.layers.Lambda(
    lambda image: tf.image.resize(
        image,
        (470,470),
        method = tf.image.ResizeMethod.BICUBIC,
        preserve_aspect_ratio = True
    )

))
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=shape))
model.add(MaxPool2D((2, 2)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPool2D((2, 2)))
model.add(Conv2D(128, (3, 3), activation='relu'))
model.add(MaxPool2D((2, 2)))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.33))
model.add(Dense(128, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

在使用第一层之前,我可以保存和加载模型,但现在加载时出现此错误:


ValueError: The channel dimension of the inputs should be defined. The input_shape received is (None, None, None, None), where axis -1 (0-based) is the channel dimension, which found to be `None`.

我首先像这样加载数据: model2 = load_model('catsanddogs.h5')

并且还尝试了一些来自 github 问题的解决方案,使其成为这样 model =load_model('catsanddogs.h5',custom_objects={"tf":tf})

有谁知道如何正确加载这个模型?

对于将来遇到此问题的任何人,不要使用 lambda 层,而是使用 keras 调整大小层。此外,无法加载的 h5 文件仍然适用于 huggingface。