我正在使用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的形状看起来很奇怪。

最佳答案

我不确定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)

关于python - 应用程序Inception Resnet v2中的Keras形状错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48785552/

10-12 23:34