Pytorch——迴歸問題
1.前言
我會這次會來見證神經網路是如何透過簡單的形式將一群資料用一條線條來表示. 或者說, 是如何在資料當中找到他們的關係, 然後用神經網路模型來建立一個可以代表他們關係的線條.
2.資料準備
我們建立一些假資料來模擬真實的情況. 比如一個一元二次函式: y = a * x^2 + b, 我們給 y 資料加上一點噪聲來更加真實的展示它.
import torch
import matplotlib.pyplot as plt
#製造一些資料
x = torch.unsqueeze(torch.linspace(-1,1,100),dim = 1) #torch.Size([100, 1]) #把[a,b,c]變成[[a,b,c]]
#print(x)
y = 2*(x.pow(2)) + 0.5*torch.rand(x.size()) #torch.rand為均勻分佈,返回一個張量,包含了從區間[0, 1)的均勻分佈中抽取的一組隨機數。張量的形狀由引數sizes定義
#print(y)
#畫圖
plt.scatter(x.data.numpy(),y.data.numpy())
plt.show()
3.搭建神經網路
建立一個神經網路我們可以直接運用 torch 中的體系. 先定義所有的層屬性(init()), 然後再一層層搭建(forward(x))層於層的關係連結. 建立關係的時候, 我們會用到激勵函式
from torch import nn
import torch.nn.functional as F
class NetWork(nn.Module):
def __init__(self,n_input,n_hidden,n_output):
super(NetWork,self).__init__()
self.hidden = nn.Linear(n_input,n_hidden)
self.output_for_predict = nn.Linear(n_hidden,n_output)
def forward(self,x):
x = F.relu(self.hidden(x)) #對x進入隱層後的輸出應用啟用函式(相當於一個篩選的過程)
output = self.output_for_predict(x) #做線性變換,將維度為1
return output
network = NetWork(n_input = 1,n_hidden = 8, n_output = 1)
print(network) #列印模型的層次結構
4.訓練搭建的神經網路
訓練的步驟很簡單, 如下:
from torch import nn
import torch.nn.functional as F
class NetWork(nn.Module):
def __init__(self,n_input,n_hidden,n_output):
super(NetWork,self).__init__()
self.hidden = nn.Linear(n_input,n_hidden)
self.output_for_predict = nn.Linear(n_hidden,n_output)
def forward(self,x):
x = F.relu(self.hidden(x)) #對x進入隱層後的輸出應用啟用函式(相當於一個篩選的過程)
output = self.output_for_predict(x) #做線性變換,將維度為1
return output
network = NetWork(n_input = 1,n_hidden = 8, n_output = 1)
print(network) #列印模型的層次結構
optimizer = torch.optim.SGD(network.parameters(),lr = 0.2)
criterion = torch.nn.MSELoss() #均方誤差,用於計算預測值與真實值之間的誤差
for i in range(500): #訓練步數(相當於迭代次數)
predication = network(x)
loss = criterion(predication, y) #predication為預測的值,y為真實值
optimizer.zero_grad()
loss.backward() #反向傳播,更新引數
optimizer.step() #將更新的引數值放進network的parameters
5.視覺化操作
x = torch.unsqueeze(torch.linspace(-1,1,100),dim = 1) #torch.Size([100, 1]) #把[a,b,c]變成[[a,b,c]]
#print(x) 鄭州哪裡做人流好
y = 2*(x.pow(2)) + 0.5*torch.rand(x.size()) #torch.rand為均勻分佈,返回一個張量,包含了從區間[0, 1)的均勻分佈中抽取的一組隨機數。張量的形狀由引數sizes定義
#print(y)
#畫圖
# plt.scatter(x.data.numpy(),y.data.numpy())
# plt.show()
from torch import nn
import torch.nn.functional as F
class NetWork(nn.Module):
def __init__(self,n_input,n_hidden,n_output):
super(NetWork,self).__init__()
self.hidden = nn.Linear(n_input,n_hidden)
self.output_for_predict = nn.Linear(n_hidden,n_output)
def forward(self,x):
x = F.relu(self.hidden(x)) #對x進入隱層後的輸出應用啟用函式(相當於一個篩選的過程)
output = self.output_for_predict(x) #做線性變換,將維度為1
return output
network = NetWork(n_input = 1,n_hidden = 8, n_output = 1)
print(network) #列印模型的層次結構
plt.ion() # 開啟互動模式
plt.show()
optimizer = torch.optim.SGD(network.parameters(),lr = 0.2)
criterion = torch.nn.MSELoss() #均方誤差,用於計算預測值與真實值之間的誤差
for i in range(500): #訓練步數(相當於迭代次數)
predication = network(x)
loss = criterion(predication, y) #predication為預測的值,y為真實值
optimizer.zero_grad()
loss.backward() #反向傳播,更新引數
optimizer.step() #將更新的引數值放進network的parameters
if i % 10 == 0:
plt.cla() # 清座標軸
plt.scatter(x.data.numpy(),y.data.numpy())
plt.plot(x.data.numpy(),predication.data.numpy(),'ro', lw=5) #畫預測曲線,用紅色o作為標記
plt.text(0.5,0,'Loss = %.4f' % loss.data.numpy(), fontdict = {'size': 20, 'color': 'red'})
plt.pause(0.1)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2679779/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 03_利用pytorch解決線性迴歸問題PyTorch
- 迴歸問題知識樹
- pytorch實現線性迴歸PyTorch
- orange人工智慧迴歸問題人工智慧
- 機器學習:迴歸問題機器學習
- 迴歸測試遇到的問題求助
- Pytorch 實現簡單線性迴歸PyTorch
- 【pytorch_5】線性迴歸的實現PyTorch
- 三、邏輯迴歸logistic regression——分類問題邏輯迴歸
- 【深度學習 01】線性迴歸+PyTorch實現深度學習PyTorch
- 【機器學習】--迴歸問題的數值優化機器學習優化
- Pytorch安裝問題PyTorch
- 線性迴歸——lasso迴歸和嶺迴歸(ridge regression)
- 如何解決迴歸任務資料不均衡的問題?
- [國集論文筆記] 淺談保序迴歸問題筆記
- 數值分析:最小二乘與嶺迴歸(Pytorch實現)PyTorch
- (二)神經網路入門之Logistic迴歸(分類問題)神經網路
- 迴歸
- [譯] 使用 PyTorch 在 MNIST 資料集上進行邏輯迴歸PyTorch邏輯迴歸
- 線性迴歸與邏輯迴歸邏輯迴歸
- 哪個才是解決迴歸問題的最佳演算法?線性迴歸、神經網路還是隨機森林?演算法神經網路隨機森林
- 遞迴問題遞迴
- 邏輯迴歸求解二分類問題以及SPSS的實現邏輯迴歸SPSS
- 演算法金 | 線性迴歸:不能忽視的五個問題演算法
- ML.NET教程之計程車車費預測(迴歸問題)
- 統計學習:邏輯迴歸與交叉熵損失(Pytorch實現)邏輯迴歸熵PyTorch
- pytorch入門2.2構建迴歸模型初體驗(開始訓練)PyTorch模型
- 迴歸樹
- 遞迴中的遞推與迴歸以及返回值和函式儲存的問題(以階乘問題進行討論)遞迴函式
- 自我學習與理解:keras框架下的深度學習(三)迴歸問題Keras框架深度學習
- 梯度下降法實現最簡單線性迴歸問題python實現梯度Python
- 為你的迴歸問題選擇最佳機器學習演算法機器學習演算法
- Pytorch實戰-logistic 迴歸二元分類程式碼詳細註釋PyTorch
- 迴文數問題
- python實現線性迴歸之簡單迴歸Python
- 對比線性迴歸、邏輯迴歸和SVM邏輯迴歸
- 吳恩達《Machine Learning》精煉筆記 3:迴歸問題和正則化吳恩達Mac筆記
- 用邏輯迴歸模型解決網際網路金融信用風險問題邏輯迴歸模型