Transfer learning using Pytorch
2021-11-25 本文已影响0人
十年磨剑_莫回首
迁移学习的两种基本应用场景:
1 模型初始化又叫做 finetuning, 一般的模型初始化是一个随机初始,但是使用训练好的参数作为初始化,可能模型会更快的收敛和有更好的表现性能。
2 将训练好的模型及其参数固定,在该模型后面增加新的网络或者在训练好的模型中间,替换新的网络,以期达到一种固定预定义的特征选择器作用。
1 模型初始化
加载预训练模型,然后将最后的全连接层的输出层替换成新的全连接,使输出有2类,当替换新的连接层以后,我们开始新的训练任务。
2 固定的特征提取器
这里我们需要冻结网络的梯度更新,除了最后的全连接层,通过设置特征提取网络的requires_grad=False 来冻结训练好的参数,这样他们在loss.backward中,就不会计算梯度并更新参数了。当我们替换掉原始网络中的某一层网络时,新的这一层网络的requires_grad=True, 所以在训练和loss.backward中会计算梯度并更新参数。