Pytorch 通過pytorch實現線性回歸

2022-09-17 04:00:13 字數 1674 閱讀 9375

linear regression

線性回歸是分析乙個變數與另外乙個(多個)變數之間關係的方法

因變數:y     自變數:x     關係:線性  y=wx+b       分析:求解w,b

求解步驟:

1. 確定模型

2. 選擇損失函式

3.求解梯度並更新w,b

此題:1. model:y=wx+b

下為**實現

import torch

import matplotlib.pyplot as plt

torch.manual_seed(10)

lr = 0.05 # 學習率

# 建立訓練資料

x = torch.rand(20, 1) * 10 # x data (tensor), shape=(20, 1)

y = 2*x + (5 + torch.randn(20, 1)) # y data (tensor), shape=(20, 1)

# 構建線性回歸引數

w = torch.randn((1), requires_grad=true)

b = torch.zeros((1), requires_grad=true)

for iteration in range(1000):

# 前向傳播

wx = torch.mul(w, x)

y_pred = torch.add(wx, b)

# 計算 mse loss

loss = (0.5 * (y - y_pred) ** 2).mean()

# 反向傳播

loss.backward()

# 更新引數

b.data.sub_(lr * b.grad)

w.data.sub_(lr * w.grad)

# 清零張量的梯度

w.grad.zero_()

b.grad.zero_()

# 繪圖

if iteration % 20 == 0:

plt.scatter(x.data.numpy(), y.data.numpy())

plt.plot(x.data.numpy(), y_pred.data.numpy(), 'r-', lw=5)

plt.text(2, 20, 'loss=%.4f' % loss.data.numpy(), fontdict=)

plt.xlim(1.5, 10)

plt.ylim(8, 28)

plt.title("iteration: {}\nw: {} b: {}".format(iteration, w.data.numpy(), b.data.numpy()))

plt.pause(0.5)

if loss.data.numpy() < 1:

break

可以看到,最終損失函式停留在0.9左右的地方,對曲線比較擬合

pytorc求導問題

矩陣求導大致可以分為三大類,標量 分子 求導 向量 分子 求導 矩陣 分子 求導。pytorch中均有所實現。用法 backward grad x torch.randn 10,5,requires grad true w torch.randn 5,6,requires grad true y x...

Pytorch學習筆記之通過numpy實現線性擬合

通過使用numpy庫編寫簡單的gradient descent資料位於附件之中 import torch from torch import autograd import numpy as np import matplotlib.pyplot as plt torch關於求導的簡單運用 x to...

anaconda虛擬環境配置pytorch框架

成功安裝anaconda後,我們可以新建虛擬環境,從而使得各個環境之間互不影響,方便使用。1.建立pytorch的虛擬環境 conda create n pytorch python 3.6使用activate啟用該環境 source activate pytorch啟用後,會看到前面會顯示環境名字...