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啟用後,會看到前面會顯示環境名字...