最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Pytorch的神經(jīng)網(wǎng)絡(luò)之Regression的實現(xiàn)

 更新時間:2022年03月15日 10:15:49   作者:ZDDWLIG  
本文主要介紹了基于Pytorch的神經(jīng)網(wǎng)絡(luò)之Regression的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

1.引言

我們之前已經(jīng)介紹了神經(jīng)網(wǎng)絡(luò)的基本知識,神經(jīng)網(wǎng)絡(luò)的主要作用就是預(yù)測與分類,現(xiàn)在讓我們來搭建第一個用于擬合回歸的神經(jīng)網(wǎng)絡(luò)吧。

2.神經(jīng)網(wǎng)絡(luò)搭建

2.1 準(zhǔn)備工作

要搭建擬合神經(jīng)網(wǎng)絡(luò)并繪圖我們需要使用python的幾個庫。

import torch
import torch.nn.functional as F
import matplotlib.pyplot as plt
 
x = torch.unsqueeze(torch.linspace(-5, 5, 100), dim=1)
y = x.pow(3) + 0.2 * torch.rand(x.size())

 既然是擬合,我們當(dāng)然需要一些數(shù)據(jù)啦,我選取了在區(qū)間 [-5,5] 內(nèi)的100個等間距點,并將它們排列成三次函數(shù)的圖像。

2.2 搭建網(wǎng)絡(luò)

我們定義一個類,繼承了封裝在torch中的一個模塊,我們先分別確定輸入層、隱藏層、輸出層的神經(jīng)元數(shù)目,繼承父類后再使用torch中的.nn.Linear()函數(shù)進行輸入層到隱藏層的線性變換,隱藏層也進行線性變換后傳入輸出層predict,接下來定義前向傳播的函數(shù)forward(),使用relu()作為激活函數(shù),最后輸出predict()結(jié)果即可。

class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)
        self.predict = torch.nn.Linear(n_hidden, n_output)
    def forward(self, x):
        x = F.relu(self.hidden(x))
        return self.predict(x)
net = Net(1, 20, 1)
print(net)
optimizer = torch.optim.Adam(net.parameters(), lr=0.2)
loss_func = torch.nn.MSELoss()

網(wǎng)絡(luò)的框架搭建完了,然后我們傳入三層對應(yīng)的神經(jīng)元數(shù)目再定義優(yōu)化器,這里我選取了Adam而隨機梯度下降(SGD),因為它是SGD的優(yōu)化版本,效果在大部分情況下比SGD好,我們要傳入這個神經(jīng)網(wǎng)絡(luò)的參數(shù)(parameters),并定義學(xué)習(xí)率(learning rate),學(xué)習(xí)率通常選取小于1的數(shù),需要憑借經(jīng)驗并不斷調(diào)試。最后我們選取均方差法(MSE)來計算損失(loss)。

2.3 訓(xùn)練網(wǎng)絡(luò)

接下來我們要對我們搭建好的神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,我訓(xùn)練了2000輪(epoch),先更新結(jié)果prediction再計算損失,接著清零梯度,然后根據(jù)loss反向傳播(backward),最后進行優(yōu)化,找出最優(yōu)的擬合曲線。

for t in range(2000):
    prediction = net(x)
    loss = loss_func(prediction, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

3.效果

使用如下繪圖的代碼展示效果。

for t in range(2000):
    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(), s=10)
        plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=2)
        plt.text(2, -100, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 10, 'color': 'red'})
        plt.pause(0.1)
plt.ioff()
plt.show()

最后的結(jié)果: 

4. 完整代碼

import torch
import torch.nn.functional as F
import matplotlib.pyplot as plt
 
x = torch.unsqueeze(torch.linspace(-5, 5, 100), dim=1)
y = x.pow(3) + 0.2 * torch.rand(x.size())
class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)
        self.predict = torch.nn.Linear(n_hidden, n_output)
    def forward(self, x):
        x = F.relu(self.hidden(x))
        return self.predict(x)
net = Net(1, 20, 1)
print(net)
optimizer = torch.optim.Adam(net.parameters(), lr=0.2)
loss_func = torch.nn.MSELoss()
plt.ion()
for t in range(2000):
    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(), s=10)
        plt.plot(x.data.numpy(), prediction.data.numpy(), 'r-', lw=2)
        plt.text(2, -100, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 10, 'color': 'red'})
        plt.pause(0.1)
plt.ioff()
plt.show()

到此這篇關(guān)于基于Pytorch的神經(jīng)網(wǎng)絡(luò)之Regression的實現(xiàn)的文章就介紹到這了,更多相關(guān) Pytorch Regression內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析NumPy 切片和索引

    淺析NumPy 切片和索引

    這篇文章主要介紹了NumPy 切片和索引的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)NumPy的相關(guān)知識,感興趣的朋友可以了解下。
    2020-09-09
  • Python通過cron或schedule實現(xiàn)爬蟲的自動定時運行

    Python通過cron或schedule實現(xiàn)爬蟲的自動定時運行

    自動定時運行爬蟲是很多數(shù)據(jù)采集項目的基本需求,通過 Python 實現(xiàn)定時任務(wù),可以保證數(shù)據(jù)采集的高效和持續(xù)性,本文將帶大家了解如何在 Python 中使用 cron 和 schedule 來實現(xiàn)爬蟲的自動定時運行,需要的朋友可以參考下
    2024-12-12
  • Pandas提高數(shù)據(jù)分析效率的13個技巧匯總

    Pandas提高數(shù)據(jù)分析效率的13個技巧匯總

    這篇文章主要是為大家歸納整理了13個工作中常用到的pandas使用技巧,方便更高效地實現(xiàn)數(shù)據(jù)分析,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • Numpy實現(xiàn)矩陣運算及線性代數(shù)應(yīng)用

    Numpy實現(xiàn)矩陣運算及線性代數(shù)應(yīng)用

    這篇文章主要介紹了Numpy實現(xiàn)矩陣運算及線性代數(shù)應(yīng)用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 利用Python來控制終端打印字體的顏色和格式

    利用Python來控制終端打印字體的顏色和格式

    使用python編程時,改變控制臺或終端中輸出字體的顏色和格式,會顯著提升代碼質(zhì)量,快速幫助我們定位問題和鎖定重要輸出,但是一般情況下,python控制臺輸出的字體默認(rèn)為白色,所以這篇文章給大家介紹了如何利用Python控制終端打印字體的顏色和格式,需要的朋友可以參考下
    2024-06-06
  • python實現(xiàn)批量監(jiān)控網(wǎng)站

    python實現(xiàn)批量監(jiān)控網(wǎng)站

    本文給大家分享的是一個非常實用的,python實現(xiàn)多網(wǎng)站的可用性監(jiān)控的腳本,并附上核心點解釋,有相同需求的小伙伴可以參考下
    2016-09-09
  • Python操作word文檔的示例詳解

    Python操作word文檔的示例詳解

    本文為大家介紹了Python操作docx文檔相關(guān)知識點。主要涉及的內(nèi)容為python-docx?,一款可以操作Word文檔(僅支持docx)的第三方庫??旄S小編一起學(xué)習(xí)一下吧
    2022-01-01
  • Pycharm連接遠程服務(wù)器并實現(xiàn)遠程調(diào)試的實現(xiàn)

    Pycharm連接遠程服務(wù)器并實現(xiàn)遠程調(diào)試的實現(xiàn)

    這篇文章主要介紹了Pycharm連接遠程服務(wù)器并實現(xiàn)遠程調(diào)試的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 深入解析Python中的集合類型操作符

    深入解析Python中的集合類型操作符

    這篇文章主要介紹了深入解析Python中的集合類型操作符,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-08-08
  • python實現(xiàn)web方式logview的方法

    python實現(xiàn)web方式logview的方法

    這篇文章主要介紹了python實現(xiàn)web方式logview的方法,涉及Python基于web模塊操作Linux命令的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08

最新評論

雅安市| 新乡县| 阿拉善左旗| 绍兴市| 新蔡县| 保德县| 永州市| 晋宁县| 冀州市| 凌源市| 罗源县| 安福县| 公安县| 辉县市| 永善县| 星座| 汝南县| 高台县| 龙井市| 上林县| 黔江区| 安阳市| 枞阳县| 洮南市| 黔东| 个旧市| 景洪市| 怀化市| 仙游县| 新营市| 陇川县| 霞浦县| 佛教| 盐亭县| 鲁山县| 鸡西市| 宁陕县| 建湖县| 中宁县| 依兰县| 雷州市|