调整学习率
调整学习率主要有三种方法。
1.新建优化器
这种方法更简单,由于optimizer十分轻量级,构建开销很小,故可以构建新的optimizer。但是新的优化器会重新初始化动量等状态信息,这对于使用动量的优化来说,可能会造成损失函数在收敛过程中出现震荡。
old_lr = 0.1
optimizer = optim.SGD([
{'params': net.features.parameters()},
{'params': net.classifier.parameters(), 'lr':old_lr * 0.1}
], lr=1e-5)
2.修改optimizer.param_groups
中对应的学习率
def adjust_learning_rate(optimizer, epoch):
"""Sets the learning rate to the initial LR decayed by 10 every 30 epochs"""
lr = args.lr * (0.1 ** (epoch // 30))
for param_group in optimizer.param_groups:
param_group['lr'] = lr
在每个周期开始时执行adjust_learning_rate
函数。
3.使用optim的内置函数
详情参见 https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate
总结:三种方法都可以。更推荐后二种方法。
网友评论