我正在尝试重新实现一篇论文,其中建议调整学习率如下:
The learning rate is decreased by a factor of the regression value with patience epochs 10 on the change value of 0.0001.
我应该使用
torch.optim.lr_scheduler.ReduceLROnPlateau()
?我不确定应该将什么值传递给每个参数。
最佳答案
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)
您可以在文档中查看更多详细信息:https://pytorch.org/docs/stable/optim.html#torch.optim.lr_scheduler.ReduceLROnPlateau
关于optimization - Pytorch 调度学习率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63108131/