cs231n notes
pytorch官方实现transfer learning
Pytorch_fine_tuning_Turtorial

cs231n notes

transfer learning

  • 特征提取器:将预训练模型当成固定的模型,进行特征提取;然后构造分类器进行分类
  • 微调预训练模型:可以将整个模型都进行参数更新,或者冻结前半部分网络,对后半段网络进行参数更新,因为前半段网络提取的是通用的低级特征, 后半段提取的是与数据集有关的特征

How to fine-tune

  • 新数据集小,与原始数据集类似:只训练最后的分类器
  • 新数据集大,与原始数据集类似:微调整个网络或前半段网络
  • 新数据集小,与原始数据集不类似:都不太合适,但可以试试对网络某一层的激活函数进行分类
  • 新数据集大,与原始数据集不类似:重新训练整个模型,但是使用预训练的参数作为初始化

注意事项

  • 数据维度需要注意匹配,尤其fc层
  • 微调模型的时候,对于预训练模型的学习率要较小,对新的分类层的学习率要较大,因为我们不想破坏预训练模型的参数

Pytorch_fine_tuning_Turtorial

  • 使用imagenet的训练过程,值得借鉴,并且有详细的讲解