为什么要微调
在迁移学习中,模型预训练权重是在ImageNet上训练的。为了更好的针对我们自己的数据集进行训练,在冻结训练之后还可以进行微调,以达到更好的训练效果。
微调的步骤
- 在预训练卷积基上添加自定义分类层
- 冻结卷积基所有层
- 训练添加的分类层
- 解冻卷积基的一部分层(解冻全部或者靠近输出的层)
- 联合训练解冻的卷积层和添加的自定义层
代码见 预训练网络 resnet101 微调
几个注意点
- 注意顺序,先冻结卷积层训练全连接层,最后解冻训练全部参数进行微调
- 解冻训练的时候learning rate记得要设置小一点比如0.0001