都知道在pytorch中是使用如下方式设置优化器的学习率lr的,但是要是想在训练过程中自己按照自己的学习率下降规则改变学习率该怎么办呢?
optimizer = t.optim.SGD(model.parameters(), lr=lr)
其实很简单,如下:
def adjust_learning_rate(opt, epoch):
# 自定义学习率下降规则(相当于每过opt.epochs轮, 学习率就会乘上0.1)
# 其中opt.lr为初始学习率, opt.epochs为自定义值
lr = opt.lr * (0.1 ** (now_epoch // opt.step))
return lr
lr = adjust_learning_rate(opt, epoch-1)
for param_group in optimizer.param_groups:
param_group["lr"] = lr