我有以下代码,使用mobilenetv2进行两类分类。在添加了2个单元的全连接层后,准确率显著下降到45%。我无法找出问题所在,我更换了优化器,但准确率仍然没有提高。我的训练数据集有2000个样本,包含两类,猫和狗。
custom= MobileNetV2(input_shape=None, alpha=1.0, include_top=True, weights='imagenet', input_tensor=None, pooling=None, classes=1000, classifier_activation='softmax') x= custom.output final_output=layers.Dense(2, activation='sigmoid')(x) model = keras.Model(inputs=custom.input, outputs = final_output) for layer in custom.layers: layer.trainable = False model.compile(optimizer="adam", loss='BinaryCrossentropy', metrics=['accuracy'],loss_weights=0.1)
回答:
你可以在加载预训练模型时使用include_top=False
语句。这条代码语句会移除预训练模型的最后一部分。