参考:PyTorch余弦学习率衰减
PyTorch学习之六个学习率调整策略
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1)
optimizer
需要进行学习率衰减的优化器变量T_max
Cosine是个周期函数嘛,这里的T_max
就是这个周期的一半
如果你将T_max
设置为10,则学习率衰减的周期是20个epoch,其中前10个epoch从学习率的初值(也是最大值)下降到最低值,后10个epoch从学习率的最低值上升到最大值eta_min
学习率衰减时的最小值,默认值为0last_epoch
(上次训练)最后一个epoch的索引值,默认值为-1。
我没有测试,猜测是:如果你将其设置为20,那定义出来的scheduler的第一次step就会到第21个epoch对应的学习率。
实例:
# optimizer学习率初值为0.0005,100个epoch,从第1个epoch(索引为0)开始训练
scheduler = lr_scheduler.CosineAnnealingLR(optimizer, T_max=10, eta_min=5e-6)