一、为什么要调整学习率
学习率控制着更新的步伐,我们希望前期学习率大一些(大幅度定位),后期学习率小一些(小范围定位)
初始学习率一般设置较小的数:0.01、0.001之类
二、pytorch提供的学习率调整策略
都继承一个基类 _LRScheduler
主要属性:optimizer:关联的优化器(所以这个学习率调整器在optimizer声明之后才出现,optimizer先指定一个lr,这里再绑定optimizer)
last_epoch:记录epoch数(可以得知学习率的调整是以epoch为周期的)
base_lrs:记录初始学习率(为一个list)
主要方法:step()更新下一个epoch的学习率
get_lr():虚函数(让子类overwrite的),计算下一个epoch的学习率
(以下调整类都基于_LRScheduler)使用格式optim.lr_scheduler.名字()
1 StepLR:等间隔调整学习率,调整方式 lr=lr*gamma
主要参数:step_size:调整间隔数(每多少个epoch调整一次)
gamma:调整系数
LR=0.1
iteration=50
max_epoch=200
weights=t.randn