深度学习练手项目(二)-----利用PyTorch进行线性回归
前言
深度學(xué)習(xí)并沒有想象的那么難,甚至比有些傳統(tǒng)的機(jī)器學(xué)習(xí)更簡(jiǎn)單。所用到的數(shù)學(xué)知識(shí)也不需要特別的高深。這篇文章將利用PyTorch來實(shí)現(xiàn)線性回歸這個(gè)經(jīng)典的模型。
一、線性回歸理論
線性回歸時(shí)利用數(shù)理統(tǒng)計(jì)中的回歸分析來確定兩種或者兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法,運(yùn)用十分廣泛。回歸分析中,只包括一個(gè)自變量和一個(gè)因變量,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個(gè)或兩個(gè)以上的自變量,且因變量和自變量之間是線性關(guān)系,則稱為多元線性回歸分析。
簡(jiǎn)單的說: 線性回歸對(duì)于輸入x與輸出y有一個(gè)映射f,y=f(x),而f的形式為aX+b。其中a和b是兩個(gè)可調(diào)的參數(shù),我們訓(xùn)練的目的就是訓(xùn)練a,b這兩個(gè)參數(shù)。
二、PyTorch代碼實(shí)現(xiàn)
下面我們來用pyTorch的代碼來做一個(gè)詳細(xì)的解釋
- 首先,我們需要導(dǎo)入相關(guān)的包
- 下面定義一個(gè)線性函數(shù),這里使用 y=5x+7y = 5x + 7y=5x+7,這里的5和7就是上面說到的參數(shù)a和b,我們先使用matplot可視化一下這個(gè)函數(shù)
- 下面生成一些隨機(jī)的點(diǎn),來作為我們的訓(xùn)練數(shù)據(jù)
- 在圖上顯示下我們生成的數(shù)據(jù)
- 我們隨機(jī)生成了一些點(diǎn),下面將使用PyTorch建立一個(gè)線性的模型來對(duì)其進(jìn)行擬合,這就是所說的訓(xùn)練的過程,由于只有一層線性模型,所以我們就直接使用了
其中參數(shù)(1, 1)代表輸入輸出的特征(feature)數(shù)量都是1. Linear 模型的表達(dá)式是 y=w?x+by=w \cdot x+by=w?x+b,其中 www 代表權(quán)重, bbb 代表偏置
- 損失函數(shù)我們使用均方損失函數(shù):MSELoss
- 優(yōu)化器我們選擇最常見的優(yōu)化方法 SGD,就是每一次迭代計(jì)算 mini-batch 的梯度,然后對(duì)參數(shù)進(jìn)行更新,學(xué)習(xí)率 0.01
- 訓(xùn)練3000次
- 準(zhǔn)備訓(xùn)練數(shù)據(jù): x_train, y_train 的形狀是 (256, 1), 代表 mini-batch 大小為256, feature 為1. astype(‘float32’) 是為了下一步可以直接轉(zhuǎn)換為 torch.float.
- 開始訓(xùn)練
- 訓(xùn)練完成了,看一下訓(xùn)練的成果是多少。用 model.parameters() 提取模型參數(shù)。 www, bbb 是我們所需要訓(xùn)練的模型參數(shù) 我們期望的數(shù)據(jù) w=5w=5w=5,b=7b=7b=7 可以做一下對(duì)比
- 再次可視化一下我們的模型,看看我們訓(xùn)練的數(shù)據(jù),如果你不喜歡seaborn,可以直接使用matplot
參考文獻(xiàn)
https://github.com/zergtant/pytorch-handbook/blob/master/chapter2/2.2-deep-learning-basic-mathematics.ipynb
總結(jié)
以上是生活随笔為你收集整理的深度学习练手项目(二)-----利用PyTorch进行线性回归的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BRD、MRD 和 PRD 之间的区别与
- 下一篇: 手把手带你撸深度学习经典模型(一)---