python优化算法_深度学习中的优化算法(Optimizer)理解与python实现

本篇笔记将介绍深度学习中几种优化算法,SGD,Momentum,Nestrov,AdaGrad,RMSprop和Adam的理解以及简单的python实现

一、SGD

随机梯度下降法不用多说,每一个参数按照梯度的方向来减小以追求最小化损失函数

更新方式

Python实现

class SGD:

def __init__(self, lr=0.01):

self.lr = lr

def update(self, params, grads):

for key in params.keys():

params[key] -= self.lr * grads[key]

二 、Momentum

在梯度下降的基础上加入了动量,即前面的梯度将会影响本轮的梯度方向

更新方式

Python实现

class Momentum:

def __init__(self, lr=0.01, momemtum=0.9):

self.lr = lr

self.momemtum = momemtum

self.v = None

def update(self, params, grads):

if self.v is None:

self.v = {}

for key, val in params.items():

self.v[key] = np.zeros_like(val)

for key in params.keys():

self.v[key] = self.momemtum * self.v[key] - self.lr * grads[key]

params[key] += self.v[key]

三、Nestrov

Nestrov也是一种动量更新的方式,但是与普通动量方式不同的是,Nestrov为了加速收敛,提前按照之前的动量走了一步,然后求导后按着梯度再走一步

更新方式

但是这样一来,就给实现带来了很大的麻烦,因为我们当前是在W的位置上,无法求得W+αv处的梯度,所以我们要进行一定改变。由于W与W+αv对参数

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值