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

迁移学习方法大致可以分为三类:
(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)

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐