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

Pytorch實(shí)現(xiàn)簡(jiǎn)單自定義網(wǎng)絡(luò)層的方法

 更新時(shí)間:2022年05月20日 10:07:15   作者:ting_qifengl  
這篇文章主要給大家介紹了關(guān)于Pytorch實(shí)現(xiàn)簡(jiǎn)單自定義網(wǎng)絡(luò)層的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

前言

Pytorch、Tensoflow等許多深度學(xué)習(xí)框架集成了大量常見的網(wǎng)絡(luò)層,為我們搭建神經(jīng)網(wǎng)絡(luò)提供了諸多便利。但在實(shí)際工作中,因?yàn)轫?xiàng)目要求、研究需要或者發(fā)論文需要等等,大家一般都會(huì)需要自己發(fā)明一個(gè)現(xiàn)在在深度學(xué)習(xí)框架中還不存在的層。 在這些情況下,就必須構(gòu)建自定義層。

博主在學(xué)習(xí)了沐神的動(dòng)手學(xué)深度學(xué)習(xí)這本書之后,學(xué)到了許多東西。這里記錄一下書中基于Pytorch實(shí)現(xiàn)簡(jiǎn)單自定義網(wǎng)絡(luò)層的方法,僅供參考。

一、不帶參數(shù)的層

首先,我們構(gòu)造一個(gè)沒有任何參數(shù)的自定義層,要構(gòu)建它,只需繼承基礎(chǔ)層類并實(shí)現(xiàn)前向傳播功能。

import torch
import torch.nn.functional as F
from torch import nn
class CenteredLayer(nn.Module):
    def __init__(self):
        super().__init__()
 
    def forward(self, X):
        return X - X.mean()

輸入一些數(shù)據(jù),驗(yàn)證一下網(wǎng)絡(luò)是否能正常工作:

layer = CenteredLayer()
print(layer(torch.FloatTensor([1, 2, 3, 4, 5])))

輸出結(jié)果如下:

tensor([-2., -1.,  0.,  1.,  2.])

運(yùn)行正常,表明網(wǎng)絡(luò)沒有問題。

現(xiàn)在將我們自建的網(wǎng)絡(luò)層作為組件合并到更復(fù)雜的模型中,并輸入數(shù)據(jù)進(jìn)行驗(yàn)證:

net = nn.Sequential(nn.Linear(8, 128), CenteredLayer())
Y = net(torch.rand(4, 8))
print(Y.mean())  # 因?yàn)槟P蛥?shù)較多,輸出也較多,所以這里輸出Y的均值,驗(yàn)證模型可運(yùn)行即可

結(jié)果如下:

tensor(-5.5879e-09, grad_fn=<MeanBackward0>)

二、帶參數(shù)的層

這里使用內(nèi)置函數(shù)來創(chuàng)建參數(shù),這些函數(shù)可以提供一些基本的管理功能,使用更加方便。

這里實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的自定義的全連接層,大家可根據(jù)需要自行修改即可。

class MyLinear(nn.Module):
    def __init__(self, in_units, units):
        super().__init__()
        self.weight = nn.Parameter(torch.randn(in_units, units))
        self.bias = nn.Parameter(torch.randn(units,))
    def forward(self, X):
        linear = torch.matmul(X, self.weight.data) + self.bias.data
        return F.relu(linear)

接下來實(shí)例化類并訪問其模型參數(shù):

linear = MyLinear(5, 3)
print(linear.weight)

結(jié)果如下:

Parameter containing:
tensor([[-0.3708,  1.2196,  1.3658],
        [ 0.4914, -0.2487, -0.9602],
        [ 1.8458,  0.3016, -0.3956],
        [ 0.0616, -0.3942,  1.6172],
        [ 0.7839,  0.6693, -0.8890]], requires_grad=True)

而后輸入一些數(shù)據(jù),查看模型輸出結(jié)果:

print(linear(torch.rand(2, 5)))
# 結(jié)果如下
tensor([[1.2394, 0.0000, 0.0000],
        [1.3514, 0.0968, 0.6667]])

我們還可以使用自定義層構(gòu)建模型,使用方法與使用內(nèi)置的全連接層相同。

net = nn.Sequential(MyLinear(64, 8), MyLinear(8, 1))
print(net(torch.rand(2, 64)))
# 結(jié)果如下
tensor([[4.1416],
        [0.2567]])

三、總結(jié)

我們可以通過基本層類設(shè)計(jì)自定義層。這允許我們定義靈活的新層,其行為與深度學(xué)習(xí)框架中的任何現(xiàn)有層不同。

在自定義層定義完成后,我們就可以在任意環(huán)境和網(wǎng)絡(luò)架構(gòu)中調(diào)用該自定義層。

層可以有局部參數(shù),這些參數(shù)可以通過內(nèi)置函數(shù)創(chuàng)建。

四、參考

《動(dòng)手學(xué)深度學(xué)習(xí)》 — 動(dòng)手學(xué)深度學(xué)習(xí) 2.0.0-beta0 documentation

https://zh-v2.d2l.ai/

附:pytorch獲取網(wǎng)絡(luò)的層數(shù)和每層的名字

#創(chuàng)建自己的網(wǎng)絡(luò)
import models
model = models.__dict__["resnet50"](pretrained=True)

for index ,(name, param) in enumerate(model.named_parameters()):
? ? print( str(index) + " " +name)

結(jié)果如下:

0 conv1.weight
1 bn1.weight
2 bn1.bias
3 layer1.0.conv1.weight
4 layer1.0.bn1.weight
5 layer1.0.bn1.bias
6 layer1.0.conv2.weight
7 layer1.0.bn2.weight
8 layer1.0.bn2.bias
9 layer1.0.conv3.weight

到此這篇關(guān)于Pytorch實(shí)現(xiàn)簡(jiǎn)單自定義網(wǎng)絡(luò)層的文章就介紹到這了,更多相關(guān)Pytorch自定義網(wǎng)絡(luò)層內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?3行代碼提取音樂高潮部分

    Python?3行代碼提取音樂高潮部分

    這篇文章主要介紹了利用Python代碼提取音樂高潮部分,文章圍繞Python代碼的相關(guān)詳情展開提取音樂的內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • python實(shí)現(xiàn)的DES加密算法和3DES加密算法實(shí)例

    python實(shí)現(xiàn)的DES加密算法和3DES加密算法實(shí)例

    這篇文章主要介紹了python實(shí)現(xiàn)的DES加密算法和3DES加密算法,以實(shí)例形式較為詳細(xì)的分析了DES加密算法和3DES加密算法的原理與實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • python requests 庫請(qǐng)求帶有文件參數(shù)的接口實(shí)例

    python requests 庫請(qǐng)求帶有文件參數(shù)的接口實(shí)例

    今天小編就為大家分享一篇python requests 庫請(qǐng)求帶有文件參數(shù)的接口實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python將Excel轉(zhuǎn)換為多種圖片格式的方法(PNG, JPG, BMP, SVG)

    Python將Excel轉(zhuǎn)換為多種圖片格式的方法(PNG, JPG, BMP, SVG)

    有時(shí),你可能希望以圖片形式分享Excel數(shù)據(jù),以防止他人對(duì)數(shù)據(jù)進(jìn)行修改或編輯,將Excel轉(zhuǎn)換為圖片可以將數(shù)據(jù)鎖定為靜態(tài)圖片,確保數(shù)據(jù)的完整性和準(zhǔn)確性,這篇文章將探討如何使用Python實(shí)現(xiàn)將Excel工作表轉(zhuǎn)換為多種圖片格式,如PNG,JPG,BMP和SVG,需要的朋友可以參考下
    2025-03-03
  • Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離問題詳解

    Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離問題詳解

    這篇文章主要介紹了Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離問題,簡(jiǎn)單描述了Dijkstra算法的原理并結(jié)合具體實(shí)例形式分析了Python使用Dijkstra算法實(shí)現(xiàn)求解圖中最短路徑距離的相關(guān)步驟與操作技巧,需要的朋友可以參考下
    2018-05-05
  • Python使用三種方法實(shí)現(xiàn)PCA算法

    Python使用三種方法實(shí)現(xiàn)PCA算法

    這篇文章主要介紹了Python使用三種方法實(shí)現(xiàn)PCA算法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Python中的變量賦值

    Python中的變量賦值

    這篇文章主要介紹了Python中的變量賦值,Python中的變量在使用中很流暢,可以不關(guān)注類型,任意賦值,對(duì)于開發(fā)來說效率得到了提升,但不了解其中的機(jī)理,往往也會(huì)犯一些小錯(cuò),讓開發(fā)進(jìn)行的不那么流暢,本文就從語言設(shè)計(jì)和底層原理的角度,帶大家理解Python中的變量。
    2021-10-10
  • python實(shí)現(xiàn)解數(shù)獨(dú)程序代碼

    python實(shí)現(xiàn)解數(shù)獨(dú)程序代碼

    最近在帶孩子學(xué)習(xí)數(shù)獨(dú),職業(yè)使然,就上網(wǎng)搜了下相關(guān)程序的解法,這里分享給大家,希望對(duì)大家學(xué)習(xí)python有所幫助
    2017-04-04
  • Python?Flask?上傳文件測(cè)試示例

    Python?Flask?上傳文件測(cè)試示例

    這篇文章主要為大家介紹了Python?Flask?上傳文件測(cè)試的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Python實(shí)現(xiàn)樹莓派WiFi斷線自動(dòng)重連的實(shí)例代碼

    Python實(shí)現(xiàn)樹莓派WiFi斷線自動(dòng)重連的實(shí)例代碼

    實(shí)現(xiàn) WiFi 斷線自動(dòng)重連,原理是用 Python 監(jiān)測(cè)網(wǎng)絡(luò)是否斷線,如果斷線則重啟網(wǎng)絡(luò)服務(wù)。接下來給大家分享實(shí)現(xiàn)代碼,需要的朋友參考下
    2017-03-03

最新評(píng)論

庐江县| 阳江市| 青神县| 合阳县| 烟台市| 杂多县| 平安县| 廉江市| 遂川县| 昆明市| 万源市| 维西| 辛集市| 凤山市| 武定县| 扬中市| 静乐县| 渝北区| 含山县| 杨浦区| 全州县| 秦安县| 永吉县| 会昌县| 廉江市| 平潭县| 博白县| 武强县| 呼伦贝尔市| 桐城市| 仁怀市| 安顺市| 望江县| 紫阳县| 视频| 泰宁县| 扎赉特旗| 连云港市| 亚东县| 青岛市| 哈尔滨市|