与DenseNet迁移学习不兼容的形状



我想用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

注意,这只是我的假设。

相关内容

  • 没有找到相关文章

最新更新