05-01-學(xué)習(xí)率調(diào)整策略

學(xué)習(xí)率learning rate
LR的作用在于更新步長(zhǎng)
LRScheduler會(huì)去修改optimizer中的學(xué)習(xí)率,所以LRScheduler需要去關(guān)聯(lián)一個(gè)優(yōu)化器,從而關(guān)聯(lián)優(yōu)化器里面的學(xué)習(xí)率并改動(dòng)
LRScheduler主要屬性

LRScheduler主要方法

lr_scheduler.StepLR
等間隔調(diào)整學(xué)習(xí)率,調(diào)整倍數(shù)為 gamma 倍,調(diào)整間隔為 step_size。間隔單位是step。需要注意的是,step 通常是指 epoch

調(diào)用 scheduler_lr.step()

lr_scheduler.MultiStepLR
milestones(list)- 一個(gè) list,每一個(gè)元素代表何時(shí)調(diào)整學(xué)習(xí)率,list 元素必須是遞增的。如 milestones=[30,80,120]

調(diào)用 scheduler_lr.step()

lr_scheduler.ExponentialLR


LR學(xué)習(xí)率

lr_scheduler.CosineAnnealingLR

t_max = 50
scheduler_lr = optim.lr_scheduler.CosineAnnealingLR
(optimizer, T_max=t_max, eta_min=0.)

lr_scheduler.ReduceLROnPlateau

當(dāng)某指標(biāo)不再變化(下降或升高),調(diào)整學(xué)習(xí)率
例如,當(dāng)驗(yàn)證集的 loss 不再下降時(shí),進(jìn)行學(xué)習(xí)率調(diào)整;或者監(jiān)測(cè)驗(yàn)證集的 accuracy,當(dāng)accuracy 不再上升時(shí),則調(diào)整學(xué)習(xí)率
factor(float)- 學(xué)習(xí)率調(diào)整倍數(shù)(等同于其它方法的 gamma),即學(xué)習(xí)率更新為 lr = lr *?factor
調(diào)用 scheduler_lr.step(loss_value)
必須把監(jiān)控的參數(shù)放進(jìn)去,標(biāo)量
lr_scheduler.LambdaLR

為不同參數(shù)組設(shè)定不同學(xué)習(xí)率調(diào)整策略。調(diào)整規(guī)則為,lr = base_lr *?lmbda(self.last_epoch)
兩個(gè)參數(shù)組優(yōu)化器
lr_init = 0.1 weights_1 = torch.randn((6, 3, 5, 5)) weights_2 = torch.ones((5, 5)) optimizer = optim.SGD([ {'params': [weights_1]}, {'params': [weights_2]}], lr=lr_init) lambda1 = lambda epoch: 0.1 ** (epoch // 20) lambda2 = lambda epoch: 0.95 ** epoch scheduler = torch.optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=[lambda1, lambda2])
小結(jié)

第一類(lèi),依一定規(guī)律有序進(jìn)行調(diào)整,這一類(lèi)是最常用的,分別是等間隔下降(Step),按需設(shè)定下降間隔(MultiStep),指數(shù)下(Exponential)和 CosineAnnealing。
第二類(lèi),依訓(xùn)練狀況伺機(jī)調(diào)整,這就是 ReduceLROnPlateau 方法。屬于自適
應(yīng)的調(diào)整。
第三類(lèi),自定義調(diào)整,Lambda。Lambda 方法?供的調(diào)整策略十分靈活,我們可以為不
同的層設(shè)定不同的學(xué)習(xí)率調(diào)整方法,這在 fine-tune 中十分有用,我們不僅可為不同的層
設(shè)定不同的學(xué)習(xí)率,還可以為其設(shè)定不同的學(xué)習(xí)率調(diào)整策略
(來(lái)源于《PyTorch 模型訓(xùn)練實(shí)用教程》余霆嵩)