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

人工智能學(xué)習(xí)PyTorch教程之層和塊

 更新時間:2021年11月25日 17:20:10   作者:LolitaAnn  
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch教程中的層和塊的相關(guān)知識點,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

對于多層感知機(jī)而言,整個模型做的事情就是接收輸入生成輸出。但是并不是所有的多層神經(jīng)網(wǎng)絡(luò)都一樣,所以為了實現(xiàn)復(fù)雜的神經(jīng)網(wǎng)絡(luò)就需要神經(jīng)網(wǎng)絡(luò)塊,塊可以描述單個層、由多個層組成的組件或整個模型本身。使用塊進(jìn)行抽象的一個好處是可以將一些塊組合成更大的組件。

從編程的角度來看,塊由類(class)表示。它的任何子類都必須定義一個將其輸入轉(zhuǎn)換為輸出的正向傳播函數(shù),并且必須存儲任何必需的參數(shù)。注意,有些塊不需要任何參數(shù)。最后,為了計算梯度,塊必須具有反向傳播函數(shù)。幸運的是,在定義我們自己的塊時,由于autograd 中引入)提供了一些后端實現(xiàn),我們只需要考慮正向傳播函數(shù)和必需的參數(shù)。

這一部分我們就要自定義自己的層和塊。

先用實現(xiàn)一個簡單的多層感知機(jī):

import torch
from torch import nn
from torch.nn import functional as F

net = nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))

X = torch.rand(2, 20)
net(X)

這個多層感知機(jī)包含一個具有256個單元和ReLU激活函數(shù)的全連接的隱藏層,然后是一個具有10個隱藏單元且不帶激活函數(shù)的全連接的輸出層。

通過實例化nn.Sequential來構(gòu)建我們的模型,層的執(zhí)行順序就是傳入?yún)?shù)的順序。

  • nn.Sequential定義了一種特殊的Module,即在PyTorch中表示一個塊的類。它維護(hù)了一個由Module組成的有序列表(Linear類是Module的子類)。
  • 正向傳播(forward)函數(shù):將列表中的每個塊連接在一起,將每個塊的輸出作為下一個塊的輸入。
  • 通過net(X)調(diào)用我們的模型來獲得模型的輸出。是net.__call__(X)的簡寫。(這一句先不管他有什么,繼續(xù)往下看。)

我們也可以自己手寫一個多層感知機(jī):

class MLP(nn.Module):
    def __init__(self):
        # 調(diào)用`MLP`的父類的構(gòu)造函數(shù)來執(zhí)行必要的初始化。
        # 這樣,在類實例化時也可以指定其他函數(shù)參數(shù),例如模型參數(shù)`params`(稍后將介紹)
        super().__init__()
        
        self.hidden = nn.Linear(20, 256)  # 隱藏層
        self.out = nn.Linear(256, 10)  # 輸出層

    # 定義模型的正向傳播,即如何根據(jù)輸入`X`返回所需的模型輸出
    def forward(self, X):
        # 注意,這里我們使用ReLU的函數(shù)版本,其在nn.functional模塊中定義。
        return self.out(F.relu(self.hidden(X)))

net = MLP()
net(X)

通過super().__init__()調(diào)用父類的__init__函數(shù),省去了重復(fù)編寫適用于大多數(shù)塊的模版代碼的痛苦。

實例化兩個全連接層,分別為self.hidden和self.out。

除非我們實現(xiàn)一個新的運算符,否則我們不用擔(dān)心反向傳播函數(shù)或參數(shù)初始化,系統(tǒng)將自動生成這些。

前邊說調(diào)用net() 就相當(dāng)于調(diào)用net.__call__(X),因為我們在自己的MLP中寫了forward,但是我們沒有調(diào)用,只使用net() 他就自動執(zhí)行forward了。就是因為會自動調(diào)用.__call__函數(shù)使forward執(zhí)行。

說完后兩條說第一條:

有序是怎么實現(xiàn)的,構(gòu)建構(gòu)一個簡化的MySequential:

class MySequential(nn.Module):
    def __init__(self, *args):
        super().__init__()
        for block in args:
            # 這里,`block`是`Module`子類的一個實例。我們把它保存在'Module'類的成員變量
            # `_modules` 中。`block`的類型是OrderedDict。
            self._modules[block] = block

    def forward(self, X):
        # OrderedDict保證了按照成員添加的順序遍歷它們
        for block in self._modules.values():
            X = block(X)
        return X

MySequential類提供了與默認(rèn)Sequential類相同的功能。

net = MySequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))
net(X)

用MySequential類實現(xiàn)的多層感知機(jī)和Sequential類實現(xiàn)的一樣。

注意這里只是寫出了其執(zhí)行順序,是簡化版的Sequential類!

到此這篇關(guān)于人工智能學(xué)習(xí)PyTorch教程之層和塊的文章就介紹到這了,更多相關(guān)PyTorch 層和塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyQt5 多窗口連接實例

    PyQt5 多窗口連接實例

    今天小編就為大家分享一篇PyQt5 多窗口連接實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • VSCode中自動為Python文件添加頭部注釋

    VSCode中自動為Python文件添加頭部注釋

    這篇文章主要介紹了VSCode中自動為Python文件添加頭部注釋,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 最新pycharm安裝教程

    最新pycharm安裝教程

    這篇文章主要介紹了最新pycharm安裝教程,需要的朋友可以參考下
    2020-11-11
  • Python ftp上傳文件

    Python ftp上傳文件

    這篇文章主要介紹了Python ftp上傳文件的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 使用Numpy打亂數(shù)組或打亂矩陣行

    使用Numpy打亂數(shù)組或打亂矩陣行

    這篇文章主要介紹了使用Numpy打亂數(shù)組或打亂矩陣行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 使用Python項目生成所有依賴包的清單方式

    使用Python項目生成所有依賴包的清單方式

    這篇文章主要介紹了使用Python項目生成所有依賴包的清單方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Pygame代碼?制作一個貪吃蛇小游戲

    Pygame代碼?制作一個貪吃蛇小游戲

    這篇文章主要介紹了100行Pygame代碼?制作一個貪吃蛇小游戲,相信我們大家都玩過貪吃蛇游戲,今天我們就從頭一起來寫一個貪吃蛇小游戲,只需要100多行的代碼就完成了,需要的朋友可以參考一下
    2021-12-12
  • python 線程的暫停, 恢復(fù), 退出詳解及實例

    python 線程的暫停, 恢復(fù), 退出詳解及實例

    這篇文章主要介紹了python 線程的暫停, 恢復(fù), 退出詳解及實例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 利用Python實現(xiàn)快捷操作文件和文件夾

    利用Python實現(xiàn)快捷操作文件和文件夾

    shutil是Python標(biāo)準(zhǔn)庫中的一個模塊,提供了許多用于文件和文件夾操作的高級接口,本文主要詳細(xì)介紹了Python如何使用shutil實現(xiàn)快捷操作文件和文件夾,需要的可以參考下
    2024-02-02
  • Pandas中describe()函數(shù)的具體使用

    Pandas中describe()函數(shù)的具體使用

    本文主要介紹了Pandas中describe()函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評論

资溪县| 百色市| 闸北区| 梨树县| 通化市| 南召县| 嘉善县| 惠来县| 临安市| 惠东县| 仁布县| 瓦房店市| 蒲江县| 新和县| 莱州市| 利辛县| 龙游县| 原阳县| 库尔勒市| 大田县| 黄山市| 同江市| 伊春市| 建宁县| 东乌珠穆沁旗| 金昌市| 巴塘县| 漳州市| 任丘市| 两当县| 大港区| 赤水市| 安陆市| 顺义区| 来安县| 洛川县| 沅陵县| 松桃| 外汇| 冷水江市| 新宁县|