我想使用OneCycleLR从低值预热LR,然后使用ReduceLROnPlateau从峰值降低LR。我知道我可以在使用OneCycleLR增加LR后手动模拟ReduceLROnPlateau,但是有没有更简单的方法可以直接将这两个调度程序一起使用?先谢谢你。
lbsnaicq1#
PyToch在github上发布了一个method,而不是官方的指导方针。您可以尝试以下代码段:
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()
j2cgzkjk2#
现在PyTorch中有一个特殊的ChainedScheduler,它只是一个接一个地调用调度器。但是为了能够使用它,所有的调度器都必须是“可链接的”,就像文档中写的那样。
2条答案
按热度按时间lbsnaicq1#
PyToch在github上发布了一个method,而不是官方的指导方针。
您可以尝试以下代码段:
j2cgzkjk2#
现在PyTorch中有一个特殊的ChainedScheduler,它只是一个接一个地调用调度器。但是为了能够使用它,所有的调度器都必须是“可链接的”,就像文档中写的那样。