pytorch使用记录(一) Transfer Learning tutorial | 如何使用预训练模型VGG16_bn

pytorch官方文档:Transfer Learning tutorial

cs231n关于Transfer Learning的文档:Transfer Learning-cs231n

迁移学习(Transfer Learning)

       迁移学习是深度学习中很重要的一点。本身是指将已经训练好的模型参数迁移到新的模型。在实际情况中,很少会有人从头训练一个卷积神经网络。原因主要有两个,一是没有足够大的数据集来训练好一个网络;二是没有那么多精力和资源来重新测试一个网络。因此,人们会先在已有的大型数据集上,如ImageNet上训练,之后再使用训练好的模型来完成自己的任务,提高效率。

        迁移学习主要有以下两种情景:1、将卷积网络作为固定的特征提取器。网络在已有大型数据集训练好后,去掉最后的全连接层,将剩下的部分作为固定的特征提取器,在自己的数据集上只训练分类器。

        2、微调卷积网络。网络预训练好后,不仅替换掉最后的全连接层,而且在新的数据集上训练时,依旧对整个网络进行反传,微调参数。

微调(fine-tune)的注意事项

选取微调形式的两个重要因素:新数据集的大小(size)和相似性(与预训练的数据集相比)。

牢记卷积网络在提取特征时,前面的层所提取的更具一般性,后面的层更加具体,更倾向于原始的数据集(more original-dataset-specific)。

四个基本原则:1、新数据集小而且相似时,不建议进行微调,以防止过拟合。最好是只训练线性分类器。

2、新数据集大而且相似时,因为有足够的数据,所以可以对整个网络进行训练微调。

3、新数据集小而且不相似时,因为数据集不相似,所以最好不要在网络最后面的层训练分类器,最好在网络更前一点来对SVM分类器进行训练(it might work better to train the SVM classifier from activations somewhere earlier in the network)。

4、新数据集大而且不相似时,因为数据集足够大,所以有充分的信心可以训练好。[数据集大就是可以随心所欲...]

此外,注意不要随意更改预训练网络的结构,学习率最好选择一个较小的开始。

        以上是关于迁移学习的一些知识,预训练的模型在pytorch中有很多,接下来主要讲解如何使用VGG16_bn,行文的结构主要按照官方的文档,记录自己不懂和比较重要的地方。大家各取所需,互相学习指教。

想直接看重点的,可以直接看模型预训练部分。

Load data

在pytorch中,预训练的模型对输入的图片有最适的要求。图片的形状应为(3 x H x W),高和宽至少是224。需要使用mean = [0.485, 0.456, 0

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值