Pytorch 调度学习率

Yan*_*ang 3 optimization pytorch learning-rate

我正在尝试重新实现一篇论文,其中建议调整学习率如下:

在0.0001的变化值上,学习率降低了回归值的一个因子,耐心时期 10 。

我应该使用torch.optim.lr_scheduler.ReduceLROnPlateau()?

我不确定应该将什么值传递给每个参数。

  1. 语句中的变化值是否表示参数阈值

  2. 的因素在声明中表示的参数的因素

小智 8

torch.optim.lr_scheduler.ReduceLROnPlateau确实是你要找的。我为你总结了所有重要的东西。

mode=min: 当监测到的数量停止减少时,lr 将减少

factor: 学习率将降低的因素

patience: 没有改进的时期数,之后学习率将降低

threshold:衡量新最优值的阈值,只关注显着变化(变化值)。假设我们有threshold=0.0001,如果第n 个时期的损失为 18.0,而第n+1 个时期的损失为 17.9999,那么我们就满足了将当前学习率乘以 的标准factor

criterion = torch.nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer, mode='min',
    factor=0.1, patience=10, threshold=0.0001, threshold_mode='abs')

for epoch in range(20):
    # training loop stuff
    loss = criterion(...)
    scheduler.step(loss)
Run Code Online (Sandbox Code Playgroud)

您可以在文档中查看更多详细信息:https : //pytorch.org/docs/stable/optim.html#torch.optim.lr_scheduler.ReduceLROnPlateau