PyTorch實戰福利從入門到精通之六 線性回歸

2021-09-28 19:07:32 字數 2410 閱讀 2923

一元線性模型非常簡單,假設我們有變數 x

ix_i

xi​ 和目標 y

iy_i

yi​,每個 i 對應於乙個資料點,希望建立乙個模型

y ^i

=wxi

+b

\hat_i = w x_i + b

y^​i​=

wxi​

+by ^i

\hat_i

y^​i

​ 是我們**的結果,希望通過 y^i

\hat_i

y^​i

​ 來擬合目標 y

iy_i

yi​,通俗來講就是找到這個函式擬合 y

iy_i

yi​ 使得誤差最小,即最小化

1 n∑

i=1n

(y^i

−yi)

2\frac \sum_^n(\hat_i - y_i)^2

n1​i=1

∑n​(

y^​i

​−yi

​)2那麼如何最小化這個誤差呢?

這裡需要用到梯度下降,這是我們接觸到的第乙個優化演算法,非常簡單,但是卻非常強大,在深度學習中被大量使用,所以讓我們從簡單的例子出發了解梯度下降法的原理

import torch

import numpy as np

from torch.autograd import variable

# 讀入資料 x 和 y

x_train = np.array([[

3.3],[

4.4],[

5.5],[

6.71],

[6.93],

[4.168],

[9.779],

[6.182],

[7.59],

[2.167],

[7.042],

[10.791],

[5.313],

[7.997],

[3.1]]

, dtype=np.float32)

y_train = np.array([[

1.7],[

2.76],

[2.09],

[3.19],

[1.694],

[1.573],

[3.366],

[2.596],

[2.53],

[1.221],

[2.827],

[3.465],

[1.65],

[2.904],

[1.3]]

, dtype=np.float32)

# 畫出影象

import matplotlib.pyplot as plt

%matplotlib inline

plt.plot(x_train, y_train,

'bo'

)```# 轉換成 tensor

x_train = torch.from_numpy(x_train)

y_train = torch.from_numpy(y_train)

# 定義引數 w 和 b

w = variable(torch.randn(1)

, requires_grad=

true

)# 隨機初始化

b = variable(torch.zeros(1)

, requires_grad=

true

)# 使用 0 進行初始化

# 構建線性回歸模型

x_train = variable(x_train)

y_train = variable(y_train)

deflinear_model

(x):

return x * w + b

y_ = linear_model(x_train)

plt.plot(x_train.data.numpy(

), y_train.data.numpy(),

'bo'

, label=

'real'

)plt.plot(x_train.data.numpy(

), y_.data.numpy(),

'ro'

, label=

'estimated'

)plt.legend(

)# 計算誤差

defget_loss

(y_, y)

:return torch.mean(

(y_ - y_train)**2

)loss = get_loss(y_, y_train)

# 列印一下看看 loss 的大小

print

(loss)

PyTorch從入門到出門

1.pytorch簡介 為什麼選擇pytorch以及安裝過程 2.1 pytorch神經網路基礎 torch對比numpy 2.2 pytorch神經網路基礎 torch中的變數variable 2.3 pytorch神經網路基礎 激勵函式 activation function 3.1 pytor...

PyTorch 從入門到再次入門(一)

pytorch 以下簡稱torch 是乙個將研究院原型到產品布置無縫銜接的深度學習框架。torch有兩個版本,staple 1.0 與preview nightly 但作為我們初學者來說,直接安裝staple1.0就行了。由於我是以windows入門,所以這篇部落格的前一部分就以windows py...

Nginx從入門到實戰

什麼是nginx?nginx engine x 是一款輕量級的web 伺服器 反向 伺服器及電子郵件 imap pop3 伺服器。什麼是反向 反向 reverse proxy 方式是指以 伺服器來接受internet上的連線請求,然後將請求 給內部網路上的伺服器,並將從伺服器上得到的結果返回給int...