手動實現線性回歸

2021-10-12 06:39:23 字數 1532 閱讀 6535

我們自定義資料,使用torch實現線性回歸。

假設我們的基礎模型是y=wb+c,其中,w,b均為引數;我們是用y=3x+0.8

來構造資料x,y;所以最後求出的w,b應該接近3,0.8.

1.準備資料

2.計算**值

3.計算損失,把引數梯度設定為0,進行反向傳播。

4.更新引數

import torch

import matplotlib.pyplot as plt

learing_rate=

0.01

#1.準備資料

#y=3x+0.8

x=torch.rand(

[500,1

])#準備500個0~1之間的資料

y_true=x*3+

0.8#2.通過模型計算y_predict

w=torch.rand([1

,1],requires_grad=

true

)b=torch.tensor(

0,requires_grad=

true

,dtype=torch.float32)

##4.通過迴圈,反向傳播,更新引數

for i in

range

(2000):

# 3. 計算loss

y_predict = torch.matmul(x, w)

+ b # 矩陣相乘

loss =

(y_true - y_predict)

.pow(2

).mean(

)# 均方誤差

if w.grad is

notnone

: w.grad.data.zero_(

)if b.grad is

notnone

: b.grad.data.zero_(

) loss.backward(

)#反向傳播

w.data=w.data-learing_rate* w.grad #更新w,b

b.data=b.data-learing_rate* b.grad

if i%

50==0:

print

("w,b,loss"

,w.item(

),b.item(

),loss.item())

#畫圖plt.figure(figsize=(20

,8))

plt.scatter(x.numpy(

).reshape(-1

),y_true.numpy(

).reshape(-1

))y_predict = torch.matmul(x, w)

+ bplt.plot(x.numpy(

).reshape(-1

),y_predict.detach(

).numpy(

).reshape(-1

))plt.show(

)

手動實現線性回歸

找到 函式.y wx b x 找到目標函式 損失函式 最小二乘法.1 2m i 1 m yi y frac sum m y i hat 2m1 i 1 m yi y 使用梯度下降找到損失函式取的最小值的時候對應的係數.import numpy as np import pandas as pd im...

Pytorch實現線性回歸 手動

pytorch實現線性回歸 假設我們的基礎模型就是 y wx b 其中w和b均為引數,我們使用y 3 x 0.8來構造資料x,y 所以最後通過模型應該能夠得到w和b應該在3與0.8附近。思路如下 1準備資料 2計算 值 3計算損失,把引數的梯度設定為0,進行反向傳播 4更新引數 5效果視覺化 1準備...

手動實現邏輯回歸

1.定義 函式.sigmoid g z 11 e z g z frac g z 1 e z 1 2.定義損失函式 目標 函式 3.使用梯度下降求損失函式最小時的係數 import numpy as np import pandas as pd import matplotlib.pyplot as ...