400-123-4657
联系我们/CONTACT US
地址:广东省广州市天河区88号
电话:400-123-4657
传真:+86-123-4567
行业资讯您当前的位置: 首页 > 华宇动态 > 行业资讯

PyTorch 模型训练实用教程(五):优化器基类/十种优化器/六个学习率调整?法

更新时间:2024-03-11

class torch.optim.SGD ( params , lr=<object> , momentum=0 , dampening=0 , weight_decay=0 , nesterov=False )
功能:
可实现 SGD 优化算法,带动量 SGD 优化算法,带 NAG(Nesterov accelerated gradient)动量 SGD 优化算法,并且均可拥有 weight_decay 项。
参数:
params(iterable)- 参数组,优化器要管理的那部分参数。
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)- 权值衰减系数,也就是 L2 正则项的系数
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 是参数,其实差别就是在 ρ ? v 这一项,PyTorch 中将此项也乘了一个学习率。
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,详细可参看论文:
http://riejohnson.com/rie/stograd_nips.pdf
参数:
params(iterable)- 参数组,优化器要优化的那些参数。
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)- 权值衰减系数,也就是 L2 正则项的系数。
class torch.optim.Rprop ( params , lr=0.01 , etas=(0.5 , 1.2) , step_sizes=(1e-06 , 50) )
功能:
实现 Rprop 优化 方法 ( 弹性反向传播 ) ,优化方法原文《 Martin Riedmiller und HeinrichBraun: Rprop - A Fast Adaptive Learning Algorithm. Proceedings of the InternationalSymposium on Computer and Information Science VII, 1992
该优化方法适用于 full-batch 不适用于 mini-batch ,因而在 mini-batch 大行其道的时代
里,很少见到。
class torch.optim.Adagrad ( params , lr=0.01 , lr_decay=0 , weight_decay=0 , initial_accumulator_value=0 )
功能:
实现 Adagrad 优化方法( Adaptive Gradient ),Adagrad 是一种自适应优化方法,是自适应的为各个参数分配不同的学习率。这个学习率的变化,会受到梯度的大小和迭代次数的影响。梯度越大,学习率越小;梯度越小,学习率越大。缺点是训练后期,学习率过小,因为 Adagrad 累加之前所有的梯度平方作为分母。
详细公式请阅读:Adaptive Subgradient Methods for Online Learning and Stochastic Optimization John Duchi, Elad Hazan, Yoram Singer; 12(Jul):2121 ? 2159,2011.( http://www.jmlr.org/papers/volume12/duchi11a/duchi11a.pdf )
class torch.optim.Adadelta ( params , lr=1.0 , rho=0.9 , eps=1e-06 , weight_decay=0 )
功能:
实现 Adadelta 优化方法。 Adadelta Adagrad 的改进。Adadelta 分母中采用距离当前时间点比较近的累计项,这可以避免在训练后期,学习率过小。
详细公式请阅读: https://arxiv.org/pdf/1212.5701.pdf
class torch.optim.RMSprop ( params , lr=0.01 , alpha=0.99 , eps=1e-08 , weight_decay=0 , momentum=0 , centered=False )
功能:
实现 RMSprop 优化方法(Hinton 提出),RMS 是均方根( root meam square )的意思。RMSprop 和 Adadelta 一样,也是对 Adagrad 的一种改进。RMSprop 采用均方根作为分母,可缓解 Adagrad 学习率下降较快的问题,并且引入均方根,可以减少摆动,详细了解 可读: http://www.cs.toronto.edu/~tijmen/csc321/slides/lecture_slides_lec6.pdf
class torch.optim.Adam ( params , lr=0.001 , betas=(0.9 , 0.999) , eps=1e-08 , weight_decay=0 , amsgrad=False )
功能:
实现 Adam(Adaptive Moment Estimation))优化方法。Adam 是一种自适应学习率的优化方法,Adam 利用梯度的一阶矩估计和二阶矩估计动态的调整学习率。吴老师课上说过,Adam 是结合了 Momentum 和 RMSprop,并进行了偏差修正。
参数:
amsgrad- 是否采用 AMSGrad 优化方法,asmgrad 优化方法是针对 Adam 的改进,通过添加额外的约束,使学习率始终为正值。(AMSGrad, ICLR-2018 Best-Pper 之一 ,《 On the convergence of Adam and Beyond 》)。
详细了解 Adam 可阅读,Adam: A Method for Stochastic Optimization ( https://arxiv.org/abs/1412.6980 )。
class torch.optim.Adamax ( params , lr=0.002 , betas=(0.9 , 0.999) , eps=1e-08 , weight_decay=0 )
功能:
实现 Adamax 优化方法。Adamax 是对 Adam 增加了一个学习率上限的概念,所以也称之为 Adamax。
详细了解可阅读,Adam: A Method for Stochastic Optimization ( https://arxiv.org/abs/1412.6980 )(没错,就是 Adam 论文中提出Adamax)。
class torch.optim.SparseAdam ( params , lr=0.001 , betas=(0.9 , 0.999) , eps=1e-08 )
功能:
针对稀疏张量的一种“阉割版”Adam 优化方法。
- only moments that show up in the gradient get updated, and only those portions of the gradient get applied to the parameters
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 )
功能:
实现 L-BFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)优化方法。
L-BFGS 属于拟牛顿算法。L-BFGS 是对 BFGS 的改进,特点就是节省内存
使用注意事项:
1.This optimizer doesn’t support per-parameter options and parameter groups(there can be only one).
2. Right now all parameters have to be on a single device. This will be improved in the future.(2018-10-07)

【返回列表页】

关于华宇娱乐

本站为华宇娱乐,华宇平台永久招商,任何平台的新老会员、代理都可以联系华宇主管申请为总代理、直属,了解详情待遇请加QQ或微信。 客户:为客户提供高质量和最大价值的专业化产品和服务,以真诚和实力赢得客户的理解、尊重和支持。市场:为客户降低采购成本和风险,为客户投资提供切实保障。 发展:追求永续发展的目标,并把它建立在客户满意的基础上。 关于“为合作伙伴创造价值”公司认为客户、供应商、公司股东、公司员工等一切和自...

联系我们

电话:400-123-4657

邮箱:admin@youweb.com

地址:广东省广州市天河区88号

传真:+86-123-4567

版权所有:Copyright © 2002-2017 某某公司 版权所有 ICP备案编号:粤IP********** TOP

平台注册入口