国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PyTorch入門學(xué)習(xí)(九):神經(jīng)網(wǎng)絡(luò)-最大池化使用

這篇具有很好參考價值的文章主要介紹了PyTorch入門學(xué)習(xí)(九):神經(jīng)網(wǎng)絡(luò)-最大池化使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、數(shù)據(jù)準(zhǔn)備

二、創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型

三、可視化最大池化效果


一、數(shù)據(jù)準(zhǔn)備

首先,需要準(zhǔn)備一個數(shù)據(jù)集來演示最大池化層的應(yīng)用。在本例中,使用了CIFAR-10數(shù)據(jù)集,這是一個包含10個不同類別圖像的數(shù)據(jù)集,用于分類任務(wù)。我們使用PyTorch的torchvision庫來加載CIFAR-10數(shù)據(jù)集并進行必要的數(shù)據(jù)轉(zhuǎn)換。

import torch
import torchvision
from torch.utils.data import DataLoader

# 數(shù)據(jù)集準(zhǔn)備
dataset = torchvision.datasets.CIFAR10("D:\\Python_Project\\pytorch\\dataset2", train=False, transform=torchvision.transforms.ToTensor(), download=True)

# 使用DataLoader加載數(shù)據(jù)集,每批次包含64張圖像
dataLoader = DataLoader(dataset, batch_size=64)

二、創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型

接下來,創(chuàng)建一個簡單的神經(jīng)網(wǎng)絡(luò)模型,其中包含一個卷積層和一個最大池化層。這個模型將幫助演示最大池化層的效果。首先定義一個Tudui類,該類繼承了nn.Module,并在初始化方法中創(chuàng)建了一個卷積層和一個最大池化層。

import torch.nn as nn
from torch.nn import Conv2d
from torch.nn.functional import max_pool2d

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init()
        # 卷積層
        self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3, stride=1, padding=0)
        # 最大池化層
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2)

    def forward(self, x):
        x = self.conv1(x)
        x = self.pool(x)
        return x

tudui = Tudui()
print(tudui)

上述代碼中,定義了Tudui類,包括了一個卷積層和一個最大池化層。在forward方法中,數(shù)據(jù)首先經(jīng)過卷積層,然后通過最大池化層,以減小圖像的維度。

三、可視化最大池化效果

最大池化層有助于減小圖像的維度,提取圖像中的主要特征。接下來將使用TensorBoard來可視化最大池化的效果,以更好地理解它。首先,導(dǎo)入SummaryWriter類并創(chuàng)建一個SummaryWriter對象。

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

然后,遍歷數(shù)據(jù)集,對每個批次的圖像應(yīng)用卷積和最大池化操作,并將卷積前后的圖像寫入TensorBoard。

step = 0
for data in dataLoader:
    imgs, targets = data
    
    # 卷積和最大池化操作
    output = tudui(imgs)
    
    # 將輸入圖像寫入TensorBoard
    writer.add_images("input", imgs, step)
    
    # 由于TensorBoard不能直接顯示多通道圖像,我們需要重定義輸出圖像的大小
    output = torch.reshape(output, (-1, 6, 15, 15))
    
    # 將卷積和最大池化后的圖像寫入TensorBoard
    writer.add_images("output", output, step)
    
    step += 1

writer.close()

在上述代碼中,使用writer.add_images將輸入和輸出的圖像寫入TensorBoard,并使用torch.reshape來重定義輸出圖像的大小,以適應(yīng)TensorBoard的顯示要求。

運行上述代碼后,將在TensorBoard中看到卷積和最大池化的效果。最大池化層有助于提取圖像中的關(guān)鍵信息,減小圖像維度,并提高模型的計算效率。

完整代碼如下:

import torch
import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
#數(shù)據(jù)集準(zhǔn)備
dataset = torchvision.datasets.CIFAR10("D:\\Python_Project\\pytorch\\dataset2",train=False,transform=torchvision.transforms.ToTensor(),download=True)
#使用dataloader加載數(shù)據(jù)集,批次數(shù)為64
dataLoader = DataLoader(dataset,batch_size=64)

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        # 該神經(jīng)網(wǎng)絡(luò)調(diào)用conv2d進行一層卷積,輸入通道為3層(彩色圖像為3通道),卷積核大小為3*3,輸出通道為6,設(shè)置步長為1,padding為0,不進行填充。
        self.conv1 = Conv2d(in_channels=3,out_channels=6,kernel_size=3,stride=1,padding=0)

    def forward(self,x):
        x = self.conv1(x)
        return x

tudui = Tudui()
print(tudui)

# 生成日志
writer = SummaryWriter("logs")

step = 0
# 輸出卷積前的圖片大小和卷積后的圖片大小
for data in dataLoader:
    imgs,targets = data
    # 卷積操作
    output = tudui(imgs)
    print(imgs.shape)
    print(output.shape)
    writer.add_images("input",imgs,step)
    """
     注意:使用tensorboard輸出時需要重新定義圖片大小
     對于輸入的圖片集imgs來說,tensor.size([64,3,32,32]),即一批次為64張,一張圖片為三個通道,大小為32*32
     對于經(jīng)過卷積后輸出的圖片集output來說,tensor.size([64,6,30,30]),通道數(shù)變成了6,tensorboard不知道怎么顯示通道數(shù)為6的圖片,所以如果直接輸出會報錯
     解決方案:
     使用reshape方法對outputs進行重定義,把通道數(shù)改成3,如果不知道批次數(shù)大小,可以使用-1代替,程序會自動匹配批次大小。
    """
    #重定義輸出圖片的大小
    output = torch.reshape(output,(-1,3,30,30))
    # 顯示輸出的圖片
    writer.add_images("output",output,step)
    step = step + 1
writer.close()

參考資料:

視頻教程:PyTorch深度學(xué)習(xí)快速入門教程(絕對通俗易懂?。拘⊥炼选?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-732861.html

到了這里,關(guān)于PyTorch入門學(xué)習(xí)(九):神經(jīng)網(wǎng)絡(luò)-最大池化使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Pytorch入門學(xué)習(xí)——快速搭建神經(jīng)網(wǎng)絡(luò)、優(yōu)化器、梯度計算

    Pytorch入門學(xué)習(xí)——快速搭建神經(jīng)網(wǎng)絡(luò)、優(yōu)化器、梯度計算

    我的代碼可以在我的Github找到 GIthub地址 https://github.com/QinghongShao-sqh/Pytorch_Study 因為最近有同學(xué)問我如何Nerf入門,這里就簡單給出一些我的建議: (1)基本的pytorch,機器學(xué)習(xí),深度學(xué)習(xí)知識,本文介紹的pytorch知識掌握也差不多. 機器學(xué)習(xí)、深度學(xué)習(xí)零基礎(chǔ)的話B站?吳恩達、

    2024年02月14日
    瀏覽(20)
  • PyTorch入門學(xué)習(xí)(十一):神經(jīng)網(wǎng)絡(luò)-線性層及其他層介紹

    目錄 一、簡介 二、PyTorch 中的線性層 三、示例:使用線性層構(gòu)建神經(jīng)網(wǎng)絡(luò) 四、常見的其他層 一、簡介 神經(jīng)網(wǎng)絡(luò)是由多個層組成的,每一層都包含了一組權(quán)重和一個激活函數(shù)。每層的作用是將輸入數(shù)據(jù)進行變換,從而最終生成輸出。線性層是神經(jīng)網(wǎng)絡(luò)中的基本層之一,它執(zhí)

    2024年02月05日
    瀏覽(25)
  • 【深度學(xué)習(xí)】神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)--卷積和池化的作用

    【深度學(xué)習(xí)】神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)--卷積和池化的作用

    深度學(xué)習(xí)通常指訓(xùn)練大型深度的神經(jīng)網(wǎng)絡(luò)的過程。 與傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型相比,深度學(xué)習(xí)模型在結(jié)構(gòu)上與之非常相似; 不同的是,深度學(xué)習(xí)模型的“深度”更大,“深度”的體現(xiàn)就是神經(jīng)網(wǎng)絡(luò)層數(shù)多,神經(jīng)網(wǎng)絡(luò)每一層的結(jié)點數(shù)多。 本章介紹兩種深度神經(jīng)網(wǎng)絡(luò)——卷積神經(jīng)網(wǎng)

    2024年02月16日
    瀏覽(25)
  • PyTorch入門學(xué)習(xí)(十二):神經(jīng)網(wǎng)絡(luò)-搭建小實戰(zhàn)和Sequential的使用

    目錄 一、介紹 二、先決條件 三、代碼解釋 一、介紹 在深度學(xué)習(xí)領(lǐng)域,構(gòu)建復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型可能是一項艱巨的任務(wù),尤其是當(dāng)您有許多層和操作需要組織時。幸運的是,PyTorch提供了一個方便的工具,稱為Sequential API,它簡化了神經(jīng)網(wǎng)絡(luò)架構(gòu)的構(gòu)建過程。在本文中,將探

    2024年02月05日
    瀏覽(18)
  • 【AI】《動手學(xué)-深度學(xué)習(xí)-PyTorch版》筆記(十七):卷積神經(jīng)網(wǎng)絡(luò)入門

    我們在前面學(xué)習(xí)的多層感知機中,已經(jīng)認識了全鏈接層,缺點很明顯,在稍微大點的網(wǎng)絡(luò)模型中,參數(shù)成指數(shù)級別增長。參數(shù)量很快就達到數(shù)十億,這樣的量級幾乎無法計算。為此科學(xué)家們想出一個減少參數(shù)的方法:卷積。 從全鏈接層到卷積的推論,使用如下兩個原則: 平

    2024年02月13日
    瀏覽(58)
  • 【Python機器學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)卷積層、池化層、Flatten層、批標(biāo)準(zhǔn)化層的講解(圖文解釋)

    【Python機器學(xué)習(xí)】卷積神經(jīng)網(wǎng)絡(luò)卷積層、池化層、Flatten層、批標(biāo)準(zhǔn)化層的講解(圖文解釋)

    卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)在提出之初被成功應(yīng)用于手寫字符圖像識別,2012年的AlexNet網(wǎng)絡(luò)在圖像分類任務(wù)中取得成功,此后,卷積神經(jīng)網(wǎng)絡(luò)發(fā)展迅速,現(xiàn)在已經(jīng)被廣泛應(yīng)用于圖形、圖像、語音識別等領(lǐng)域。 圖片的像素數(shù)往往非常大,如果用多層全連接網(wǎng)絡(luò)來

    2024年02月08日
    瀏覽(25)
  • pytorch神經(jīng)網(wǎng)絡(luò)入門代碼

    以下代碼測試正確率為:99.37%

    2024年02月20日
    瀏覽(21)
  • [pytorch入門] 6. 神經(jīng)網(wǎng)絡(luò)

    [pytorch入門] 6. 神經(jīng)網(wǎng)絡(luò)

    torch.nn: Containers:基本骨架 Convolution Layers: 卷積層 Pooling layers:池化層 Non-linear Activations (weighted sum, nonlinearity):非線性激活 Normalization Layers:正則化層 containers相對重要的一個類,主要給神經(jīng)網(wǎng)絡(luò)定義了一些骨架、一些結(jié)構(gòu),后面那些類都是要向骨架中填充的東西 里面有

    2024年01月25日
    瀏覽(52)
  • 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)-神經(jīng)網(wǎng)絡(luò)補充概念-62-池化層

    池化層(Pooling Layer)是深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)中常用的一種層級結(jié)構(gòu),用于減小輸入數(shù)據(jù)的空間尺寸,從而降低模型的計算復(fù)雜度,減少過擬合,并且在一定程度上提取輸入數(shù)據(jù)的重要特征。池化層通常緊跟在卷積層之后,用于縮小卷積層輸出的尺寸。 常見的池化操作包括最大

    2024年02月12日
    瀏覽(29)
  • 神經(jīng)網(wǎng)絡(luò):池化操作

    在計算機視覺中,池化操作是一種常用的特征降維技術(shù),它在卷積神經(jīng)網(wǎng)絡(luò)(CNN)中起著重要的作用。池化操作主要有以下作用和意義: 1. 特征降維: 池化操作可以減小特征圖的尺寸,從而降低了模型的計算復(fù)雜度和內(nèi)存消耗。 通過將特征圖的空間維度縮小,可以保留重要

    2024年02月10日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包