PyTorch学习笔记(3)--优化器Optim

目录

1.SGD

2.RMSprop

3.Adagrad

4.Adadelta

5.Adam

6.Adamax


1.SGD

随机梯度下降,随机:随机选取部分数据集参与计算。SGD支持动量参数,支持学习率衰减率。

用法:

optimizer=optim.SGD(model.parameters(),lr=0.01,momentum=0.9)

lr:大于0的浮点数,学习率。

momentum:大于0的浮点数,动量参数。

parameters:Variable参数,要优化的对象。

对于训练的数据集,首先将其分成n个batch,每个batch包含m个样本。每次更新都利用一个batch数据,而非整个数据集。

gif.latex?x%3Dx+%5CDelta%20xgt

gif.latex?%5CDelta%20xt%3D-%5Ceta%20gt

其中, gif.latex?%5Ceta为学习率,gt为x在t时刻的梯度

好处:

①当训练数据太多时,利用整个数据集更新往往时间上不现实,batch的方法可以减少机器压力,并且可以更快收敛

②当训练集有很多冗余时(类似样本出现多次),batch方法收敛更快。以一个极端情况为例来理解,若训练集前一半和后一半的梯度相同,如果前一半作为一个batch,后一半作为一个batch,那么在一次遍历训练集时,batch的方法向最优解前进两个step,而整体的方法只前进一个step。

2.RMSprop

引入一个衰减系数,让r每回合都衰减一定比例,该优化器通常是面对递归神经网络时的一个良好选择。

用法:

keras.optimizers.RMSprop(lr=0.001,rho=0.9,epsilon=1e-06)

lr:大于0的浮点数,学习率。

rho:大于0的浮点数。

epsilon:大于0的小浮点数,防止除0错误。

3.Adagrad

可以自动变更学习速率,只是需要设定一个全局的学习速率,但是这并非是实际学习速率,实际速率是与以往参数的模之和的开方成反比的。

优点:能够实现学习率的自动更改。如果这次梯度大,则学习速率衰减就快一些;如果这次梯度小,则学习速率衰减就慢一些。

在普通算法中也许效果还不错,但在深度学习中,深度过深时会造成训练提前结束。

用法:

keras。optimizers.Adagrad(lr=0.01,epsilon=1e-6)

lr:大于0的浮点数,学习率。

epsilon:大于0的小浮点数,防止除0错误。

4.Adadelta

Adagrad算法存在三个问题:

①其学习率时单调递减的,训练后期学习率非常小

②需要手工设置一个全局的初始学习率

③更新xt时左右两边的单位不一致

Adadelta针对上述三个问题提出了解决方案

用法:

keras.optimizers.Adadelta(lr=1.0,rho=0.95,epsilon=1e-06)

lr:大于0的浮点数,学习率。

rho:大于0的浮点数。

epsilon:大于0的小浮点数,防止除0错误。

建议保持优化器的默认参数不变

5.Adam

一种基于一阶梯度来优化随机目标函数的算法

Adam算法根据损失函数对每个参数的梯度的一阶矩估计和二阶矩估计动态调整针对于每个参数的学习速率。Adam也是基于梯度下降的方法但是每次迭代参数的学习步长都有一个确定·的范围,不会因为很大的梯度导致很大的学习步长,参数的值比较稳定。

Adam(Adaptive Moment Estimation)本质上是带有动量项的RMSprop。Adam的优点主要在于经过偏置校正后,每一次的迭代学习率都有一个确定的范围,使得参数比较平稳。

用法:

keras.optimizers.Adam(lr=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-08)

lr:大于0的浮点数,学习率。

beta_1/beta_2:浮点数,0<beta<1,通常很接近1。

epsilon:大于0的小浮点数,防止除0错误。

6.Adamax

基于无穷范数的Adam方法的变体

用法:

keras.optimizers.Adamax(lr=0.002,beta_1=0.9,beta_2=0.999,epsilon=1e-08)

lr:大于0的浮点数,学习率。

beta_1/beta_2:浮点数,0<beta<1,通常很接近1。

epsilon:大于0的小浮点数,防止除0错误。

参考书籍:《PyTorch深度学习实战(侯宜君 著)》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别管我啦就是说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值