美文网首页深度学习
PyTorch中不同学习率设置

PyTorch中不同学习率设置

作者: 逆风g | 来源:发表于2019-11-04 11:34 被阅读0次

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

        本文链接:https://www.haomeiwen.com/subject/lvvrbctx.html