PyTorch中不同学习率设置

为什么要对不同卷积层设置不同的学习率?
如果某些网络层已经预训练过,那么联合训练时只希望微调它,则为其设置小一些的学习率,如果希望固定其参数,则学习率设置为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接口。

 

你可能感兴趣的:(Pytorch,机器学习,人工智能,机器学习,人工智能)