pytorch 模擬關(guān)系擬合——回歸實(shí)例
本次用 pytroch 來實(shí)現(xiàn)一個簡單的回歸分析,也借此機(jī)會來熟悉 pytorch 的一些基本操作。
1. 建立數(shù)據(jù)集
import torch from torch.autograd import Variable import matplotlib.pyplot as plt # torch.linspace(-1,1,100)表示返回一個一維張量,包含在區(qū)間 -1到1 上均勻間隔的100個點(diǎn); # torch.unsqueeze(input,dim=1)表示轉(zhuǎn)換維度 x = torch.unsqueeze(torch.linspace(-1, 1, 100), dim=1) # 生成的y值為x的平方加上隨機(jī)數(shù) y = x.pow(2) + 0.2*torch.rand(x.size()) # 用 Variable 來修飾這些數(shù)據(jù) tensor x, y = torch.autograd.Variable(x), Variable(y) # 畫圖 plt.scatter(x.data.numpy(), y.data.numpy()) plt.show()
2. 構(gòu)建神經(jīng)網(wǎng)絡(luò)
import torch
import torch.nn.functional as F # 激勵函數(shù)都在這
class Net(torch.nn.Module): # 繼承 torch 的 Module
def __init__(self, n_feature, n_hidden, n_output):
super(Net, self).__init__() # 繼承 __init__ 功能
# 定義每層用什么樣的形式
self.hidden = torch.nn.Linear(n_feature, n_hidden) # 隱藏層線性輸出
self.predict = torch.nn.Linear(n_hidden, n_output) # 輸出層線性輸出
def forward(self, x): # 這同時也是 Module 中的 forward 功能
# 正向傳播輸入值, 神經(jīng)網(wǎng)絡(luò)分析出輸出值
x = F.relu(self.hidden(x)) # 激勵函數(shù)(隱藏層的線性值)
x = self.predict(x) # 輸出值
return x
net = Net(n_feature=1, n_hidden=10, n_output=1)
print(net) # net 的結(jié)構(gòu)
"""
Net (
(hidden): Linear (1 -> 10)
(predict): Linear (10 -> 1)
)
"""
3. 實(shí)時繪圖查看回歸效果
import matplotlib.pyplot as plt
plt.ion() #打開交互繪圖模式(便于實(shí)時顯示圖像變化)
plt.show()
optimizer = torch.optim.SGD(net.parameters(), lr=0.1) # 定義優(yōu)化器和學(xué)習(xí)率
loss_func = torch.nn.MSELoss() #定義損失函數(shù)
for t in range(200):
prediction = net(x)
loss = loss_func(prediction, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
if t%5 == 0:
plt.cla()
plt.scatter(x.data.numpy(), y.data.numpy()) # 畫散點(diǎn)圖
plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=5) # 畫擬合曲線
plt.text(0.5, 0, 'Loss=%.4f' % loss.data[0], fontdict={'size':20,'color':'red'}) # 顯示損失數(shù)值
plt.pause(0.1)
# 如果在腳本中使用ion()命令開啟了交互模式,沒有使用ioff()關(guān)閉的話,則圖像會一閃而過,并不會常留。要想防止這種情況,需要在plt.show()之前加上ioff()命令。
plt.ioff()
plt.show()
運(yùn)行終態(tài)效果圖如下:

以上這篇pytorch 模擬關(guān)系擬合——回歸實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)調(diào)用另一個路徑下py文件中的函數(shù)方法總結(jié)
這篇文章主要介紹了Python實(shí)現(xiàn)調(diào)用另一個路徑下py文件中的函數(shù)方法,結(jié)合實(shí)例形式總結(jié)分析了Python針對不同文件夾中py文件調(diào)用操作的處理技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-06-06
Python小游戲?qū)崿F(xiàn)實(shí)例之接蘋果
其實(shí)利用Python編寫的小游戲很簡單,下面這篇文章主要給大家介紹了關(guān)于Python小游戲?qū)崿F(xiàn)實(shí)例之接蘋果的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
python3.7 利用函數(shù)os pandas利用excel對文件名進(jìn)行歸類
這篇文章主要介紹了python3.7 利用函數(shù)os pandas利用excel對文件名進(jìn)行歸類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Python RPA自動化機(jī)器人模擬鼠標(biāo)鍵盤
這篇文章主要介紹了Python RPA自動化機(jī)器人模擬鼠標(biāo)鍵盤,RPA,全稱為Robotic Process Automation,即機(jī)器人流程自動化。我們可以利用RPA技術(shù)將工作中可重復(fù)的部分流程化,讓機(jī)器替我們完成這一工作2023-02-02
關(guān)于Python3 類方法、靜態(tài)方法新解
今天小編就為大家分享一篇關(guān)于Python3 類方法、靜態(tài)方法新解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08

