深度学习

PyTorch中不同学习率设置

2019-11-04  本文已影响0人  逆风g

为什么要对不同卷积层设置不同的学习率?
如果某些网络层已经预训练过,那么联合训练时只希望微调它,则为其设置小一些的学习率,如果希望固定其参数,则学习率设置为0(也可以在优化器中忽略它)

  1. 为不同卷积层设置不同的学习率
  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

  1. 更新学习率
    这里选择直接修改优化器中的学习率:
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接口。

上一篇 下一篇

猜你喜欢

热点阅读