Optimizer手动实现优化器

手动实现SDG、Momentum、AdaGrad、RMSProp、Adam等常用优化器。

import math


def func(a):
    return 2 * a


# SDG
# w: = w - lr * dw
def sdg(f_grad, lr=0.01, x_init=1, turns=20):
    results = [x_init]
    for i in range(turns):
        x_init -= lr * f_grad(x_init)
        results.append(x_init)
    return results


# Momentum
# w: = w - lr * v
# v: = upsilon * v + dw
def momentum(f_grad, lr=0.01, upsilon=0.9, x_init=1, turns=20):
    v = 0
    results = [x_init]
    for i in range(turns):
        v = lr * upsilon * v + lr * f_grad(x_init)
        x_init -= v
        results.append(x_init)
    return results


# AdaGrad
# w: = w - lr * (1 / sqrt(s + eps)) * dw
# s: = s + dw ** 2
def ada_grad(f_grad, lr=0.01, x_init=1, turns=20):
    s, eps = 0, 1e-6
    results = [x_init]
    for i in range(turns):
        s += f_grad(x_init) ** 2
        x_init
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值