我想用DenseNet做迁移学习,我找到了一个我想要研究的例子。
model_d=DenseNet121(weights='imagenet',include_top=False,
input_shape=(224, 224, 3))
x=model_d.output
x= GlobalAveragePooling2D()(x)
x= BatchNormalization()(x)
x= Dropout(0.5)(x)
x= Dense(1024,activation='relu')(x)
x= Dense(512,activation='relu')(x)
x= BatchNormalization()(x)
x= Dropout(0.5)(x)
preds=Dense(7,activation='softmax')(x)
model=Model(inputs=model_d.input,outputs=preds)
model.summary()
这是用这些层替换原始模型的输出。然而,当我尝试拟合模型时,我得到一个不兼容的形状错误:
ValueError: Shapes (None, 1) and (None, 7) are incompatible
然而,看看模型摘要,我不知道这是什么原因。
我认为在Softmax函数之后只有一个类用于预测,但preds=Dense(7,activation='softmax')(x)
期望有7个类用于预测。如果只预测一个类别,更改number 7 to 1
可能会解决问题。此外,你应该改变你的激活sigmoid
,否则有一个神经元与softmax
将始终输出1
注意,这只是我的假设。