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

时间:2018-02-14 11:00:42

标签: python deep-learning keras

我正在使用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似乎很奇怪。

1 个答案:

答案 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;