PyTorch中不同学习率设置
2019-11-04 本文已影响0人
逆风g
为什么要对不同卷积层设置不同的学习率?
如果某些网络层已经预训练过,那么联合训练时只希望微调它,则为其设置小一些的学习率,如果希望固定其参数,则学习率设置为0(也可以在优化器中忽略它)
- 为不同卷积层设置不同的学习率
optimizer = Adam([
{'params': extractor.parameters()},
{'params': model.parameters(), 'lr': args.base_lr * 10}
], args.base_lr, (0.9, 0.999), eps=1e-08, weight_decay=5e-4)
如果不单独指定lr
,则默认使用全局学习率args.base_lr
。
- 更新学习率
这里选择直接修改优化器中的学习率:
cur_lr = args.base_lr * pow(1 - (1.0 * cur_iter / max_iter), 0.9)
for i in range(len(optimizer.param_groups)):
param_group = optimizer.param_groups[i]
if i == 0:
param_group['lr'] = cur_lr
else:
param_group['lr'] = cur_lr * 10
或者,使用torch.optim.lr_scheduler接口。