《深度学习的数学》之梯度下降法python实现

《深度学习的数学》 梯度下降法 Excel版

在这里插入图片描述

《深度学习的数学》 梯度下降法 python版

from sympy import *
import time

#《深度学习的数学》 梯度下降法 python实现
def gradient_descent(init_x,init_y,lr):
    x = symbols("x")
    y = symbols("y")
    z = pow(x,2) + pow(y,2) #定义表达式 z = x^2 + y^2
    dif_x = diff(z,x) #自变量x导数
    dif_y = diff(z,y) #自变量y导数

    offset_x = 0
    offset_y = 0
    #梯度下降30次
    for no in range(30):
        x_val = init_x
        y_val = init_y
        dif_x_val = dif_x.subs("x",init_x)
        dif_y_val = dif_y.subs("y",init_y)
        offset_x = -lr * dif_x_val #位移向量x
        offset_y = -lr * dif_y_val #位移向量y
        init_x = init_x + offset_x
        init_y = init_y + offset_y
        z_val = round(z.evalf(subs={x:x_val,y:y_val}),2)
        print("No:",no,"x值:",round(init_x,2),"y值:",round(init_y,2),
              "x梯度:",round(dif_x_val,2),"y梯度:",round(dif_y_val,2),
              "x位移向量:",round(offset_x,2),"y位移向量:",round(offset_y,2),
              "函数值:",z_val)
        time.sleep(0.1)

x = 3
y = 2
lr = 0.1
gradient_descent(x,y,lr)

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值