PyTorch迁移学习
为什么需要迁移学习?
有时候可获取的数据样本有限,如果从0开始训练一个网络,有可能会耗费过长的时间并且训练效果不好,这时候就需要一个预训练过的网络,这个预训练网络在大量样本的训练过后各个参数的初始化会比随机初始化的分布更好,使用这个预训练的网络用自己的数据进行训练会提高我们的效率。
预训练的网络还可以作为特征提取器。将预训练网络的最后一个全连接层去除,用我们需要的全连接层代替,保持除了最后一个全连接层的其他层的权重,只训练最后一个全连接层的权重,这样在最后一个全连接层之前的网络就变成了一个特征提取器,用训练样本训练就是调整特征和标签之间的权重关系,这样能减少大量训练的时间。比较一下相同的网络分别作为预训练网络和特征提取器时在相同的样本数下的训练时间和训练效果:


预训练网络 特征提取器
特征提取器可以多次使用,但是我现在还不知道特征提取器的效果是否和用于预训练的图片与待训练样本的相似性相关。

浙公网安备 33010602011771号