我們自定義資料,使用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 ...