我想使用 OneCycleLR 从低值开始预热 LR,然后使用 ReduceLROnPlateau 从峰值降低 LR。
我知道我可以在使用OneCycleLR增加LR后手动模拟ReduceLROnPlateau,但是有没有更简单的方法来直接一起使用这两个调度程序?
提前致谢。
PyToch 在 github 上发布了一个方法,而不是官方指南。
您可以尝试以下代码片段:
import torch
from torch.nn import Parameter
from torch.optim import SGD
from torch.optim.lr_scheduler import ExponentialLR, StepLR
model = [Parameter(torch.randn(2, 2, requires_grad=True))]
optimizer = SGD(model, 0.1)
scheduler1 = ExponentialLR(optimizer, gamma=0.9)
scheduler2 = StepLR(optimizer, step_size=5, gamma=0.1)
for epoch in range(10):
print(epoch, scheduler2.get_last_lr()[0])
optimizer.step()
scheduler1.step()
scheduler2.step()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4402 次 |
| 最近记录: |