迁移学习的模型载入
查看我的另一篇博文:
模型载入
在这篇博文中只是载入了预训练模型,然后整体训练。
不过,在迁移学习中常用的策略是不同的层使用不同的学习率,对于预训练模型使用较低的学习率,对于新加入的层使用较大的学习率。
不同层的学习率的设置
设conv1和conv2是新加入的层,即迁移学习需要重点学习的对象,其对应的学习率设置为模型的其他部分的10倍。
conv1 = list(map(id, net.conv1.parameters()))
conv2 = list(map(id, net.conv2.parameters()))
base_params = filter(lambda p: id(p) not in conv1 + conv2, net.parameters())
optimizer = optim.Adam([{'params': base_params},
{'params': net.conv1.parameters(), 'lr': opt.lr * 10},
{'params': net.conv2.parameters(), 'lr': opt.lr * 10}], lr=opt.lr,betas=(0.9,0.999))