深度学习-39-基于PyTorch的预训练源模型微调到目标模型的流程
文章目录
- 1 微调
- 1.1 迁移学习
- 1.2 微调步骤
- 2 示例
- 2.1 加载数据集
- 2.2 模型定义和初始化
- 2.3 微调模型
- 2.4 执行微调
- 3 torchvision.models
- 3.1 导入结构和参数
- 3.2 只导入结构
- 3.3 导入举例
- 3.3.1 加载ResNet18
- 3.3.2 方式一:新增一层
- 3.3.3 方式二:修改一层
- 3.3.4 只保存模型参数
- 4 参考附录
1 微调
1.1 迁移学习
如果我们要去识别图片中不同类型的车辆,用于分析各类车辆的分布情况,一种可能的方法是收集各类车辆的图像,然后基于此训练一个分类模型。我们自然希望收集到的车辆图片足够多,以更好地达到实际应用时所要求的精度。
但是,收集和标记数据可能需要大量的时间和金钱。例如,为了收集 ImageNet数据集,研究人员花费了数百万美元的资金。
尽管如今的数据收集成本也大幅降低,但这一成本仍不能忽视。
为解决训练样本有限的问题,迁移学习(transfer learning)应运而生,其将从源数据集学到的知识迁移到目标数据集。
例如,在ImageNet数据集上训练的模型可能会提取更加通用的图像特征,这有助于识别边缘、纹理、形状和对象组合。这些类似的特征也可能有效地识别车辆。
通常,迁移后的模型训练效果好,收敛速度也更快。
感觉这才可称为人工智能,让它学习了一点东西以后,它可以利用它的所学去学习新的东西。
1.2 微调步骤
微调(fine-tuning)是迁移学习中的常见技巧,其包括以下四个步骤:
(1)在源数据集上预训练神经网络模型&#x