Pytorch實現線性回歸 手動

2021-10-19 19:54:16 字數 2861 閱讀 8274

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.準備資料y=

3x+0.8

,準備引數

import torch

x=torch.

rand([

50])#x是隨機的50個資料 x在0

-1之間y=3

*x+0.8#y是x的函式 也是50個資料

#視覺化一下

#準備一下要去擬合的線性回歸的w和b

w=torch.

rand(1

,requires_grad=true)#隨機初始的乙個w 範圍在0

-1之間

b=torch.

rand(1

,requires_grad=true)#隨機初始的乙個b 範圍在0

-1之間

print

(w)print

(b)

tensor([0.0100], requires_grad=true)

tensor([0.4700], requires_grad=true)

## 準備一下函式:計算損失,把引數的梯度設定為0,進行反向傳播

def loss_fn

(y,y_predict)

: loss=

(y_predict-y)

.pow(2

).mean

()#均方誤差

#每次反向傳播前把梯度置為0

for i in [w,b]

:#w和b中

if i.grad is not none:#如果梯度不為空 就設定為0

i.grad.data.

zero_()

loss.

backward

()#反向傳播

return loss.data#返回loss的具體數值

## 準備函式:更新引數

def optimize

(learning_rate)

: w.data-

=learning_rate*w.grad.data#這裡運用的是梯度下降法

b.data-

=learning_rate*b.grad.data

for i in range

(3000):

## 2計算**值

y_predict=x*w+b

## 3計算損失 並把引數的梯度置為0 進行反向傳播

loss=

loss_fn

(y,y_predict)

if i%

300==0:

print

('迭代次數:'

,i,'\t誤差:'

,loss)

## 4更新引數w和b

optimize

(0.01

)

迭代次數: 0 誤差: tensor(3.5854)

迭代次數: 300 誤差: tensor(0.1780)

迭代次數: 600 誤差: tensor(0.0958)

迭代次數: 900 誤差: tensor(0.0516)

迭代次數: 1200 誤差: tensor(0.0278)

迭代次數: 1500 誤差: tensor(0.0149)

迭代次數: 1800 誤差: tensor(0.0080)

迭代次數: 2100 誤差: tensor(0.0043)

迭代次數: 2400 誤差: tensor(0.0023)

迭代次數: 2700 誤差: tensor(0.0013)

## 5效果視覺化

y_predict=w*x+b #訓練好的w和b 然後算出y的**值

plt.

figure()

plt.

scatter

(x,y,c=

'b')#原來的資料用散點圖 顏色是藍色

plt.

plot

(x,y_predict.

detach()

.numpy()

,c='r'

)#擬合的資料用直線圖 顏色是紅色

完成。

手動實現線性回歸

我們自定義資料,使用torch實現線性回歸。假設我們的基礎模型是y wb c,其中,w,b均為引數 我們是用y 3x 0.8 來構造資料x,y 所以最後求出的w,b應該接近3,0.8.1.準備資料 2.計算 值 3.計算損失,把引數梯度設定為0,進行反向傳播。4.更新引數 import torch ...

手動實現線性回歸

找到 函式.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線性回歸

線性回歸假設輸出與各個輸入之間是線性關係 y wx b pytorch定義線性回歸模型 def linreg x,w,b return torch.mm x,w b線性回歸常用損失函式是平方損失 2優化函式 隨機梯度下降 小批量隨機梯度下降 mini batch stochastic gradien...