一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

PyTorch 學習筆記(七):PyTorch的十個優(yōu)化器

 極市平臺 2021-01-26

加入極市專業(yè)CV交流群,與6000+來自騰訊,華為,百度,北大,清華,中科院等名企名校視覺開發(fā)者互動交流!更有機會與李開復老師等大牛群內(nèi)互動!

同時提供每月大咖直播分享、真實項目需求對接、干貨資訊匯總,行業(yè)技術交流。點擊文末“閱讀原文”立刻申請入群~

作者 | 余霆嵩

來源專欄 | PyTorch學習筆記

https://blog.csdn.net/u011995719/article/details/88988420

本文截取自一個github上千星的火爆教程——《PyTorch 模型訓練實用教程》教程內(nèi)容主要為在 PyTorch 中訓練一個模型所可能涉及到的方法及函數(shù)的詳解等,本文為作者整理的學習筆記(六),后續(xù)會繼續(xù)更新這個系列,歡迎關注。

項目代碼:https://github.com/tensor-yu/PyTorch_Tutorial

系列回顧:

PyTorch提供了十種優(yōu)化器,在這里就看看都有哪些優(yōu)化器。


1 torch.optim.SGD

class torch.optim.SGD(params, lr=<object object>, momentum=0, dampening=0, weight_decay=0, nesterov=False)

功能:

可實現(xiàn)SGD優(yōu)化算法,帶動量SGD優(yōu)化算法,帶NAG(Nesterov accelerated gradient)動量SGD優(yōu)化算法,并且均可擁有weight_decay項。

參數(shù):

params(iterable)- 參數(shù)組(參數(shù)組的概念請查看 3.2 優(yōu)化器基類:Optimizer),優(yōu)化器要管理的那部分參數(shù)。

lr(float)- 初始學習率,可按需隨著訓練過程不斷調整學習率。

momentum(float)- 動量,通常設置為0.9,0.8

dampening(float)- dampening for momentum ,暫時不了其功能,在源碼中是這樣用的:buf.mul_(momentum).add_(1 - dampening, d_p),值得注意的是,若采用nesterov,dampening必須為 0.

weight_decay(float)- 權值衰減系數(shù),也就是L2正則項的系數(shù)

nesterov(bool)- bool選項,是否使用NAG(Nesterov accelerated gradient)

注意事項:

pytroch中使用SGD十分需要注意的是,更新公式與其他框架略有不同!

pytorch中是這樣的:

v=ρ?v+g

p=p?lr?v = p - lr?ρ?v - lr?g

其他框架:

v=ρ?v+lr?g

p=p?v = p - ρ?v - lr?g

ρ是動量,v是速率,g是梯度,p是參數(shù),其實差別就是在ρ?v這一項,pytorch中將此項也乘了一個學習率。

2 torch.optim.ASGD

class torch.optim.ASGD(params, lr=0.01, lambd=0.0001, alpha=0.75, t0=1000000.0, weight_decay=0)

功能:

ASGD也成為SAG,均表示隨機平均梯度下降(Averaged Stochastic Gradient Descent),簡單地說ASGD就是用空間換時間的一種SGD,詳細可參看論文:riejohnson.com/rie/stog

參數(shù):

params(iterable)- 參數(shù)組(參數(shù)組的概念請查看 3.1 優(yōu)化器基類:Optimizer),優(yōu)化器要優(yōu)化的那些參數(shù)。

lr(float)- 初始學習率,可按需隨著訓練過程不斷調整學習率。

lambd(float)- 衰減項,默認值1e-4。

alpha(float)- power for eta update ,默認值0.75。

t0(float)- point at which to start averaging,默認值1e6。

weight_decay(float)- 權值衰減系數(shù),也就是L2正則項的系數(shù)。

3 torch.optim.Rprop

class torch.optim.Rprop(params, lr=0.01, etas=(0.5, 1.2), step_sizes=(1e-06, 50))

功能:

實現(xiàn)Rprop優(yōu)化方法(彈性反向傳播),優(yōu)化方法原文《Martin Riedmiller und Heinrich Braun: Rprop - A Fast Adaptive Learning Algorithm. Proceedings of the International Symposium on Computer and Information Science VII, 1992》

該優(yōu)化方法適用于full-batch,不適用于mini-batch,因而在min-batch大行其道的時代里,很少見到。

4 torch.optim.Adagrad

class torch.optim.Adagrad(params, lr=0.01, lr_decay=0, weight_decay=0, initial_accumulator_value=0)

功能:

實現(xiàn)Adagrad優(yōu)化方法(Adaptive Gradient),Adagrad是一種自適應優(yōu)化方法,是自適應的為各個參數(shù)分配不同的學習率。這個學習率的變化,會受到梯度的大小和迭代次數(shù)的影響。梯度越大,學習率越小;梯度越小,學習率越大。缺點是訓練后期,學習率過小,因為Adagrad累加之前所有的梯度平方作為分母。

詳細公式請閱讀:Adaptive Subgradient Methods for Online Learning and Stochastic Optimization

John Duchi, Elad Hazan, Yoram Singer; 12(Jul):2121?2159, 2011.

(http://www./papers/volume12/duchi11a/duchi11a.pdf)

5 torch.optim.Adadelta

class torch.optim.Adadelta(params, lr=1.0, rho=0.9, eps=1e-06, weight_decay=0)

功能:

實現(xiàn)Adadelta優(yōu)化方法。Adadelta是Adagrad的改進。Adadelta分母中采用距離當前時間點比較近的累計項,這可以避免在訓練后期,學習率過小。

詳細公式請閱讀:arxiv.org/pdf/1212.5701

6 torch.optim.RMSprop

class torch.optim.RMSprop(params, lr=0.01, alpha=0.99, eps=1e-08, weight_decay=0, momentum=0, centered=False)

功能:

實現(xiàn)RMSprop優(yōu)化方法(Hinton提出),RMS是均方根(root meam square)的意思。RMSprop和Adadelta一樣,也是對Adagrad的一種改進。RMSprop采用均方根作為分母,可緩解Adagrad學習率下降較快的問題。并且引入均方根,可以減少擺動,詳細了解可讀:cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf

7 torch.optim.Adam(AMSGrad)

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

功能:

實現(xiàn)Adam(Adaptive Moment Estimation))優(yōu)化方法。Adam是一種自適應學習率的優(yōu)化方法,Adam利用梯度的一階矩估計和二階矩估計動態(tài)的調整學習率。吳老師課上說過,Adam是結合了Momentum和RMSprop,并進行了偏差修正。

功能:

amsgrad- 是否采用AMSGrad優(yōu)化方法,asmgrad優(yōu)化方法是針對Adam的改進,通過添加額外的約束,使學習率始終為正值。(AMSGrad,ICLR-2018 Best-Pper之一,《On the convergence of Adam and Beyond》)。

詳細了解Adam可閱讀,Adam: A Method for Stochastic Optimization(Adam: A Method for Stochastic Optimization)。

8 torch.optim.Adamax

class torch.optim.Adamax(params, lr=0.002, betas=(0.9, 0.999), eps=1e-08, weight_decay=0)

功能:

實現(xiàn)Adamax優(yōu)化方法。Adamax是對Adam增加了一個學習率上限的概念,所以也稱之為Adamax。

詳細了解可閱讀,Adam: A Method for Stochastic Optimization(arxiv.org/abs/1412.6980)(沒錯,就是Adam論文中提出了Adamax)。

9 torch.optim.SparseAdam

--

class torch.optim.SparseAdam(params, lr=0.001, betas=(0.9, 0.999), eps=1e-08)

功能:

針對稀疏張量的一種“閹割版”Adam優(yōu)化方法。

only moments that show up in the gradient get updated, and only those portions of the gradient get applied to the parameters

10 torch.optim.LBFGS

class torch.optim.LBFGS(params, lr=1, max_iter=20, max_eval=None, tolerance_grad=1e-05, tolerance_change=1e-09, history_size=100, line_search_fn=None)

**功能:**

實現(xiàn)L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)優(yōu)化方法。L-BFGS屬于擬牛頓算法。L-BFGS是對BFGS的改進,特點就是節(jié)省內(nèi)存。

使用注意事項:

1.This optimizer doesn’t support per-parameter options and parameter groups (there can be only one).

Right now all parameters have to be on a single device. This will be improved in the future.(2018-10-07)

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲熟妇av一区二区三区色堂| 五月天六月激情联盟网| 国产成人免费激情视频| 三级理论午夜福利在线看| 不卡免费成人日韩精品| 亚洲中文字幕熟女丝袜久久| 国产麻豆一线二线三线| 亚洲av在线视频一区| 五月天丁香婷婷一区二区| 国产中文字幕久久黄色片| 视频一区日韩经典中文字幕| 国产99久久精品果冻传媒| 中文字幕精品一区二区三| 欧美日韩中黄片免费看| 日本丰满大奶熟女一区二区| 亚洲中文在线中文字幕91| 九九热这里有精品20| 人人妻在人人看人人澡| 国产午夜福利在线免费观看| 白丝美女被插入视频在线观看| 国产二级一级内射视频播放| 人妻精品一区二区三区视频免精| 欧美日韩精品一区二区三区不卡| 久久一区内射污污内射亚洲| 99国产精品国产精品九九| 99精品人妻少妇一区二区人人妻 | 最近的中文字幕一区二区| 中文字幕免费观看亚洲视频| 白丝美女被插入视频在线观看| 日韩人妻一区二区欧美| 亚洲国产天堂av成人在线播放| 99久久精品午夜一区| 免费观看成人免费视频| 99久久婷婷国产亚洲综合精品| 婷婷开心五月亚洲综合| 久久国产精品熟女一区二区三区| 欧美日韩黑人免费观看| 狠狠做深爱婷婷久久综合| 亚洲做性视频在线播放| 欧洲日韩精品一区二区三区| 日韩一区二区三区嘿嘿|