梯度下降学习

前言:初步学习梯度下降, 不断根据梯度修改我们的参数,经过多次轮次得到使得我们损失函数最小的时候参数,后续我们可以通过类似的道理,更新我们的参数


假设我们的损失函数是 y = x 1 2 + x 2 2 y = x1^2 + x2^2 y=x12+x22,我们的 x 1 x1 x1 x 2 x2 x2 取什么值的时候能够让 y y y 最小值

def fun(x):
    return x[0]**2 + x[1]**2

这是我们的损失函数

def numerical_gradient(fun,x):
    h = 1e-4
    grad = np.zeros_like(x)
    for i in range(len(x)):
        tmp = x[i]
        x[i] = tmp + h
        fxh1 = fun(x)
        
        x[i] = tmp - h
        fxh2 = fun(x)
        grad[i] = (fxh1 - fxh2)/(h*2)
        x[i] = tmp
    return grad

这是计算梯度

def gradient_descent(f,init_x,lr=0.001,step_num=100):
    x = init_x
    for i in range(step_num):
        grad = numerical_gradient(f,x)
        x -= lr * grad
    return x

上面是通过梯度进行数据的更新,朝着梯度的反方向进行改进

下面我们进行测试

在这里插入图片描述
最后我们的答案无限接近 ( 0 , 0 ) ( 0 , 0 ) (0,0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wniuniu_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值