PyTorch余弦學習率衰減


前言

今天用到了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)

效果圖如下:

CosineAnnealingLR

參考鏈接

https://pytorch.org/docs/stable/optim.html?highlight=cosine#torch.optim.lr_scheduler.CosineAnnealingLR


作者:@臭咸魚

轉載請注明出處:https://www.cnblogs.com/chouxianyu/

歡迎討論和交流!



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM