adam函数 python_深度学习中的优化算法(Optimizer)理解与python实现

本文详细介绍了深度学习中常用的优化算法,包括SGD、Momentum、Nesterov、AdaGrad、RMSprop和Adam,通过Python代码展示了它们的实现过程,帮助读者理解并掌握这些算法的运作原理。
摘要由CSDN通过智能技术生成

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

一、SGD

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

更新方式

755d3cfdb18005ec1b250bc8770c9a07.png

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

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

更新方式

2a15c344b6809e2942bfe7bf028bf3b8.png

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为了加速收敛,提前按照之前的动量走了一步,然后求导后按着梯度再走一步

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值