应用程序中的 Keras 形状错误 Inception Resnet v2

数据挖掘 Python 深度学习 喀拉斯
2022-02-18 06:59:57

我正在使用 Keras 2.1.3,并且正在尝试使用 Keras 应用程序微调 Inception Resnetv2。

所以我从 keras.applications 加载预训练模型

input_tensor = Input(shape=(299,299,3))
model = applications.inception_resnet_v2.InceptionResNetV2(weights='imagenet', 
                                                        include_top=False,
                                                        input_tensor=input_tensor,
                                                        input_shape=(299, 299,3))

我为我的问题创造了瓶颈:

top_model = Sequential()
top_model.add(Flatten(input_shape=model.output_shape[1:]))
top_model.add(Dense(256, activation='relu'))
top_model.add(Dropout(0.5))
top_model.add(Dense(40, activation='softmax'))

最后创建一个新模型来连接这两个部分:

new_model = Sequential()
for l in model.layers:
      new_model.add(l)

在这一步,我得到一个错误

ValueError:输入 0 与 conv2d_7 层不兼容:输入形状的预期轴 -1 具有值 192 但得到形状(无、35、35、64)

所以我打印了每一层的形状,我有

第 n-1 层:输入:(None, 35, 35, 64),输出:(None, 35, 35, 64)

第 n 层:输入:(None, 35, 35, 192),输出:(None, 35, 35, 48)

如您所见,形状不匹配,来自 Keras 似乎很奇怪。

编辑:

我的确切错误是

ValueError:输入 0 与 conv2d_7 层不兼容:输入形状的预期轴 -1 具有值 192 但得到形状(无、35、35、64)

model.summary() (模型是来自 Keras.applications.inception_resnet_v2.InceptionResNetV2 的模型)给我conv2d_7 层


max_pooling2d_2 (MaxPooling2D) (None, 35, 35, 192) 0 activation_5[0][0]


activation_9(激活)(无、35、35、64)0 batch_normalization_9[0][0]


conv2d_7 (Conv2D) (无, 35, 35, 48) 9216 max_pooling2d_2[0][0]


conv2d_10 (Conv2D) (None, 35, 35, 96) 55296 activation_9[0][0]


0个回答
没有发现任何回复~