在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。
基本上,我训练了一个带有调整大小层的模型。这是我的模型:
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。