尝试转移学习时,imagenet的密集层和conv层之间的输入尺寸不匹配

时间:2019-04-16 14:46:16

标签: tensorflow keras transfer-learning imagenet

我正在尝试在InceptionV3的conv层之上训练密集层。 但是我无法初始化完全连接的模型。我遇到了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”输入的形状未完全定义(得到(无,无,2048)。请确保传递完整的“ input_shape”或“ batch_input_shape“参数用于模型的第一层。”

1 个答案:

答案 0 :(得分:0)

您希望输入到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'))