前言
今天用到了PyTorch里的CosineAnnealingLR,也就是用余弦函數進行學習率的衰減。
下面講講定義CosineAnnealingLR這個類的對象時輸入的幾個參數是什么,代碼示例就不放了。
正文
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
學習率衰減時的最小值,默認值為0
-
last_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)
效果圖如下:
參考鏈接
作者:@臭咸魚
轉載請注明出處:https://www.cnblogs.com/chouxianyu/
歡迎討論和交流!