pytorch学习之优化

调整学习率

调整学习率主要有三种方法。

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函数。

Exmaple Code

3.使用optim的内置函数

详情参见 https://pytorch.org/docs/stable/optim.html#how-to-adjust-learning-rate

总结:三种方法都可以。更推荐后二种方法。

参考资料

  • https://discuss.pytorch.org/t/adaptive-learning-rate/320
  • https://discuss.pytorch.org/t/solved-learning-rate-decay/6825

你可能感兴趣的:(pytorch学习之优化)