我正在使用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:输入:(无,35,35,64),输出:(无,35,35,64)
图层n:输入:(无,35,35,192),输出:(无,35,35,48)
正如你所看到的那样,形状不匹配,来自Keras似乎很奇怪。
答案 0 :(得分:1)
我不确定 top_model.add(Flatten(input_shape = model.output_shape [1:]))
正在传递所需的尺寸。

另一种方法是试试。
ResNetV2_model_output = model.output
 new_concatenated_model = Flatten()(ResNetV2_model_output)
 new_concatenated_model =(Dense(256, activation ='relu'))(new_concatenated_model)
 new_concatenated_model =((Dropout(0.5)))(new_concatenated_model)
 new_concatenated_model =(Dense(40,activation ='softmax'))(new_concatenated_model)&# XA; 代码>