【AI】PyTorch实战(三):迁移学习

1、简述

迁移学习和微调的区别:

1.1 迁移学习

迁移学习 feature + classifier:通常做法就是在大的数据集(比如ImageNet)上训练出一个CNN,然后提取最后一层卷积层或者倒数第二层全连接层的输出作为CNN 特征,然后直接使用 SVM、贝叶斯或softmax等分类器进行分类;

1.2 微调

微调 Fine-tuning:将在大数据集上训练得到的weights作为特定任务(小数据集)的初始化权重,重新训练该网络(根据需要,修改全连接层输出);
至于训练的方式可以是:

微调所有层;
固定网络前面几层权重,只微调网络的后面几层

这样做有两个原因:

A.避免因数据量小造成过拟合现象;
B.CNN前几层的特征中包含更多的一般特征(比如,边缘信息,色彩信息等),
    这对许多任务来说是非常有用的,但是CNN后面几层的特征学习注重高层特征,也就是语义特征,
    这是针对于数据集而言的,不同的数据集后面几层学习的语义特征也是完全不同的;

2、 代码详解

下面使用一个例子做说明:
训练一个模型来对蚂蚁和蜜蜂进行分类。但是蚂蚁和蜜蜂只有大约 120 张训练图像,每个类别只有75 个验证图像。
通常,如果从头开始训练的话,这是一个非常小的数据集。因此这里使用

你可能感兴趣的:(AI)