深度学习中迁移学习方法原理

迁移学习是深度学习中的重要技术,通过预训练和微调提高模型在新任务上的学习效率。主要分为基于样本、特征和参数/模型的迁移学习方法。预训练+调参是常用策略,先在大型数据集上预训练模型,然后替换顶层并针对具体任务进行微调。在实际操作中,通常会冻结大部分层,只更新最后一层权重。
摘要由CSDN通过智能技术生成

迁移学习是当前深度学习领域的⼀系列通⽤的解决⽅案,⽽不是⼀个具体的算法模型。我们使用模型在特定任务上收集的知识来解决不同但相关的任务。模型可以从上一个任务中学到的东西中获益,从而更快地学习新任务。

迁移学习方法大致可以分为三类:
(1)基于样本的迁移学习方法

         从源域数据集中筛选出部分数据,使得筛选出的部分数据与目标数据概率分布近似 。

(2)基于特征的迁移学习方法

将源域与目标域样本映射到可再生和希尔特空间(RKHS),并最小化二者之间的差异。

(3)基于参数/模型的迁移学习方法

         Pre-training:把最后一层替换成自己的分类器,剩下的网络结构当做特征提取器,进行预训练;fine-tuning:把预训练的模型参数作为初始化,更新所有权重;在微调过程中⼀般不建议使⽤过⼤的学习率,通常来说1e-5是⽐较合适的选择。

Pre-training + fine-tuning(预训练+调参) 的迁移学习⽅式是现在深度学习中⼀个⾮常流⾏的迁移学习⽅式,尤其是以图像领域为代表。

示例代码

#加载训练好的模型
checkpoint=torch.load('./ckpt_210.pth')
self.symbol.load_state_dict(checkpoint['net'])

#除了最后的全连接层外所有层权重冻结,仅训练最后的全连接层
#方法一
'''
for par in self.symbol.parameters():
    par.requires_grad = False
    self.symbol.classifier.weight.requires_grad = True
# 把优化器调整一下,只保留模型中可训练的层
train_layer = [p for p in self.symbol.parameters() if p.requires_grad == True]
self.optimizer = optim.Adam(train_layer, lr=self.lr)
'''

#方法二:
self.optimizer = optim.Adam(self.symbol.classifier.parameters(), lr=self.lr)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值