迁移学习准确性令人困惑的结果

时间:2020-03-01 15:10:39

标签: python machine-learning classification pytorch transfer-learning

我刚从pytorch网站(this)上的文档开始根据该教程进行图像分类项目。在该教程中,有一部分代码是这样的:

model_ft = models.resnet50(pretrained=True)
num_ftrs = model_ft.fc.in_features
model_ft.fc = nn.Linear(num_ftrs, 20)

我知道应该更改fc层的原因。由于我的项目需要对20个类进行分类,所以我将参数从2更改为20。但是,我得到的准确度只有60%左右。当我不这样更改fc层时:

model_ft = se_resnet50(pretrained = True)

事实证明,准确度达到93.75%,比以前的结果要好得多。

我只是想不出为什么我在修改fc层时会得到较差的分类结果。不应该修改吗?

1 个答案:

答案 0 :(得分:0)

对于网络而言,找到20个类别之间的匹配类别可能比两个类别之间更难。

例如,如果给它一个狗图像,并且需要在猫,狗和马之间对其进行分类,则它可能会发送60%的猫,30%的狗,10%的马,然后出错 而如果只需要在狗和马之间进行分类,则可能会得到75%的狗,25%的马,然后变得可赖。

finetunnig也将更长,因此,如果您在收敛后但没有固定的时间段后仍未停止训练,则如果在20个班级中对其进行了更长的训练,则可能会获得更好的结果。