前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch基础知识-动量

Pytorch基础知识-动量

作者头像
用户6719124
发布2019-11-17 21:51:55
7840
发布2019-11-17 21:51:55
举报
文章被收录于专栏:python pytorch AI机器学习实践

上节课讲了Regularization的原理和使用,它作为一个有效的减少over-fitting的手段使用十分广泛,本节课补充介绍一些小技巧(动量)。

动量(Tricks)的概念来源于物理学,可理解为惯性(momentum)。

动量的概念来源于我们所使用的梯度信息

其物理意义如下图所示

此时若加入不同的参数值也会使其方向发生改变。

我们以一个实际例子讲解

当没有惯性时,初始点(starting point)经过不断地更新仍达不到最小值值(optimum),该网络在局部最优解(solution)即停了下来。且刚开始的更新方向非常的随机化,方向跨度很大。

若此时保持learning rate不变,但设置一个惯性,则优化图像变为

惯性(beta)设置为0.78,这样保留之前历史信息就多一些,而另外一方向为0.22,两者合并后的新方向就比之前的短了。后续更新的节奏也会慢慢缓和下来。另外在之前所遇到的极小值点也没有停下来,借助惯性继续前滑。

但要注意,并不是所有的模型都适合加入惯性,有些加了反而速度变慢(因为考虑了之前的历史因素)。

那么具体到代码中是如何操作的呢

在pytorch中添加momentum参数十分方便,只需在优化器设置函数中进行设计即可

代码语言:javascript
复制
optimizer = torch.optim.SGD(model.parameters(), 
                            args.lr,
                            momentum=args.momentum,
                            weight_decay=args.weight_decay)

但要注意,对于Adam优化器来说,Adam已经内置了momentum函数,只有SGD需要额外添加代码。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档