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接口。

https://www.jianshu.com/p/5ed2365238ac

Python量化投资网携手4326手游为资深游戏玩家推荐:《《汉家江湖2》的场景美术优化进展

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论