诚信为本,市场在变,诚信永远不变...
  咨询电话:400-123-4567

公司新闻

Pytorch(六)优化器

优化器是用来干嘛的?
方法=模型+策略+算法
模型=logistic回归
策略=损失函数
算法=求解损失函数的方法,优化器
核心:如何更新权重

一.了解不同优化器

优化器主要分为3类梯度下降、动量优化法、自适应学习率优化。主要关注各种方法如何更新权重。

1、梯度下降

用于更新权重的误差不同
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2、动量优化器

用于更新当前梯度的不止是代价函数当前的梯度,而是当前梯度与前一次更新时的梯度之和。
在这里插入图片描述

3、自适应学习率优化算法

对学习率η进行调整
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
参考链接:
https://blog.csdn.net/weixin_40170902/article/details/80092628
https://blog.csdn.net/u010977034/article/details/82712471

2.代码实现
优化器参数选择
pytorch库的调用
按公式编写的优化器
在mnist中实现优化器
我的代码:https://github.com/viki6666/Pytorch_learn/blob/master/Optim.ipynb
3.PyTorch种优化器选择
如果数据是稀疏的,就用自适应方法,即 Adagrad, Adadelta, RMSprop, Adam。

RMSprop, Adadelta, Adam 在很多情况下的效果是相似的。

Adam 就是在 RMSprop 的基础上加了 bias-correction 和 momentum。

随着梯度变的稀疏,Adam 比 RMSprop 效果会好。

整体来讲,Adam 是最好的选择。

很多论文里都会用 SGD,没有 momentum 等。SGD 虽然能达到极小值,但是比其它算法用的时间长,而且可能会被困在鞍点。

如果需要更快的收敛,或者是训练更深更复杂的神经网络,需要用一种自适应的算法。

平台注册入口