PyTorch - 梯度下降

文章目录


示例

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

w = 1.0

def forward(x): 
    return x * w 

def cost(xs, ys):
    cost = 0 
    for x, y in zip(xs, ys):
        y_pred = forward(x) 
        cost += (y_pred - y) ** 2
    return cost/len(xs) 

def gradient(xs, ys):
    grad = 0
    for x, y in zip(xs, ys):
        grad += 2 * x * (x * w - y) 
    return grad / len(xs)  



for epoch in range(100):
    cost_val = cost(x_data, y_data) 
    grad_val = gradient(x_data, y_data) 
    w -= 0.01 * grad_val 
    if epoch % 10 == 1:
        print(f'-- epoch : {epoch}, w : {w}, loss : {cost_val}' )
    

-- epoch : 1, w : 1.1779555555555554, loss : 3.8362074074074086
-- epoch : 11, w : 1.6914171457314033, loss : 0.5405738908195378
-- epoch : 21, w : 1.8841627376815275, loss : 0.07617422636521683
-- epoch : 31, w : 1.9565164714895047, loss : 0.010733986344664803
-- epoch : 41, w : 1.983676951493168, loss : 0.0015125649231412608
-- epoch : 51, w : 1.9938725783835114, loss : 0.0002131410058905752
-- epoch : 61, w : 1.9976998600690001, loss : 3.0034471708953996e-05
-- epoch : 71, w : 1.9991365628100501, loss : 4.232266273994499e-06
-- epoch : 81, w : 1.999675878945041, loss : 5.963839812987369e-07
-- epoch : 91, w : 1.9998783299358769, loss : 8.403862850836479e-08

print(f'\n-- predict : f - ', forward(4) )  
# -- predict : f -  7.999777758621207
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI工程仔

请我喝杯伯爵奶茶~!

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

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

打赏作者

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

抵扣说明:

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

余额充值