pytorch实现fine tuning
cs231n notes
pytorch官方实现transfer learning
Pytorch_fine_tuning_Turtorial
cs231n notes
transfer learning
- 特征提取器:将预训练模型当成固定的模型,进行特征提取;然后构造分类器进行分类
- 微调预训练模型:可以将整个模型都进行参数更新,或者冻结前半部分网络,对后半段网络进行参数更新,因为前半段网络提取的是通用的低级特征, 后半段提取的是与数据集有关的特征
How to fine-tune
- 新数据集小,与原始数据集类似:只训练最后的分类器
- 新数据集大,与原始数据集类似:微调整个网络或前半段网络
- 新数据集小,与原始数据集不类似:都不太合适,但可以试试对网络某一层的激活函数进行分类
- 新数据集大,与原始数据集不类似:重新训练整个模型,但是使用预训练的参数作为初始化
注意事项
- 数据维度需要注意匹配,尤其fc层
- 微调模型的时候,对于预训练模型的学习率要较小,对新的分类层的学习率要较大,因为我们不想破坏预训练模型的参数
Pytorch_fine_tuning_Turtorial
- 使用imagenet的训练过程,值得借鉴,并且有详细的讲解