torch.optim.Adam優化器參數學習


1.參數

https://blog.csdn.net/ibelievesunshine/article/details/99624645

class torch.optim.Adam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)[source]

  • params (iterable) – 待優化參數的iterable或者是定義了參數組的dict
  • lr (float, 可選) – 學習率(默認:1e-3)
  • betas (Tuple[floatfloat], 可選) – 用於計算梯度以及梯度平方的運行平均值的系數(默認:0.9,0.999)
  • eps (float, 可選) – 為了增加數值計算的穩定性而加到分母里的項(默認:1e-8)
  • weight_decay (float, 可選) – 權重衰減(L2懲罰)(默認: 0)

2.算法

https://arxiv.org/pdf/1412.6980.pdf

 

 可以看到,beta參數是用來更新m、v這兩個動量向量和梯度的,梯度經過動量估計之后代替了SDG中的直接用梯度來更新參數。

α也就是lr學習率,用來更新參數,作為一個步長吧。

weight_decay 是針對最后更新參數的時候,給參數加的一個懲罰參數,

 總結:lr是在更新梯度的時候用到的,weight_decay權重衰減是在損失函數中的模型參數的權重,更新參數時用到的。

 總的loss中加入了一個對權重的限制,防止過大產生過擬合現象,

 

 在參數更新時反映出來,正則化參數λ決定了你如何權衡原始損失E和較大的權重懲罰。


免責聲明!

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



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