天天看點

Pytorch幾種常用的學習率調整方式前言:

前言:

由于在深度學習中, 優化器的學習率需要不斷地調整,今天就來總結一下幾種常用的學習率調整方法.

一. step

采用均勻降低的方式, 比如每次降低為原來的0.1倍.

lr = self.lr * (gamma ** (epoch // self.lr_step))
#self.lr: 初始學習率
#gamma:  每次衰減的倍數
#epoch: 目前的輪數
#self.lr_step: 學習率衰減間隔的epoch數
           

pytorch中的函數方法:

Pytorch幾種常用的學習率調整方式前言:

二. multistep

采用非均勻降低的政策, 非均勻主要指降低的step間隔不是均勻的.

pytorch中的函數方法:

Pytorch幾種常用的學習率調整方式前言:

三. poly政策

lr = self.lr * pow((1 - 1.0 * iter / maxiter), power)
# iter = epoch * iters_per_epoch + i
# maxiter = num_epochs * iters_per_epoch
# power用來控制學習率曲線的形狀, power<1, 曲線凸起來,下降慢後快 ;power>1, 凹下去, 下降先快後慢
           

四. 餘弦退火學習率調整(Cosine )

随着疊代次數的增加,餘弦值首先緩慢下降嗎然後加速下降, 再次緩慢下降.

lr = 0.5 * self.lr * (1 + math.cos(1.0 * iter / maxiter * math.pi))
           

pytorch中的函數方法如下:

Pytorch幾種常用的學習率調整方式前言:

五. SGDR調整(帶重新開機的SGD算法)

在訓練時,梯度下降算法可能陷入局部最小值,而不是全局最小值, 梯度下降算法可以通過突然提高學習率來跳出局部最小值并找到通向全局最小值的路徑.這種方式被成為帶重新開機的随機梯度下降方法(stochastic gradient descent with restrats, SGDR).

pytorch中的函數方法如下:

Pytorch幾種常用的學習率調整方式前言:

最後:

還是感覺step均勻下降最好用, 雖說學習率不是連續變化, 但是簡單實用. 在每個批次儲存模型的時候最好也能夠儲存其相應的學習率參數, 以便于下次可以接着訓練(防止訓練過程因為意外而中斷)

繼續閱讀