首页 > 解决方案 > 尝试迁移学习时 imagenet 的密集层和卷积层之间的输入维度不匹配

问题描述

我正在尝试在 InceptionV3 的卷积层之上训练密集层。但我无法初始化全连接模型。我收到一个 ValueError。

model_inc = applications.InceptionV3(weights='imagenet', 
                                     include_top=False)

model = Sequential()
model.add(Flatten(input_shape=model_inc.output_shape[1:]))
model.add(Dense(256, activation= 'relu', kernel_initializer='he_normal'))
model.add(Dropout(0.5))
model.add(Dense(9, activation='softmax'))

我希望模型能够成功编译,但我得到“ValueError:“Flatten”的输入形状未完全定义(得到(None,None,2048)。确保传递完整的“input_shape”或“batch_input_shape”参数到模型的第一层。”

标签: tensorflowkerastransfer-learningimagenet

解决方案


你希望你的输入进入你的model_inc,所以你必须在input_shape那里定义。像下面这样的东西应该工作

model_inc = applications.InceptionV3(input_shape=(224,224,3), weights='imagenet', 
                                     include_top=False)
model = Sequential()

# you need to add your base model
model.add(model_inc)

model.add(Flatten())
model.add(Dense(256, activation= 'relu', kernel_initializer='he_normal'))
model.add(Dropout(0.5))
model.add(Dense(9, activation='softmax'))

推荐阅读