在炼丹的过程中,学习率的调整是必不可少的,下面给出scheduler模块的调学习率的方法,后面会慢慢补充
调整学习率:PyTorch官方文档
一、CyclicLR
torch.optim.lr_scheduler.CyclicLR(optimizer, base_lr, max_lr, step_size_up=2000, step_size_down=None)
- optimizer: wrapped optimizer
- base_lr: 学习率的最低值
- max_lr:学习率的最大值
- step_size_up: lr从最小值到最大值所需的步骤(即半个循环)
- step_size_down: lr从最大值到最小值所需的步骤(即半个循环)
二、CosineAnnealingLR
torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max, eta_min=0, last_epoch=-1, verbose=False)
- optimizer: wrapped optimizer
- T_max: 最大迭代次数(就是学习率降到最小值的迭代次数)
- eta_min:学习率的最小值,默认为0
- last_epoch:
- verbose:如果为True,每次更新lr的时候都会打印出来
学习率会随着epoch成周期性的变化,例如最大迭代次数为100,一共有300个epoch,那么前100个epoch学习率从0.0009降到0,然后100-200个周期从0又升到0.0009,200-300个epoch从0.0009降到0
更新公式:
1 | import torch.optim as optim |