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

PyTorch入門學習(八):神經網絡-卷積層

這篇具有很好參考價值的文章主要介紹了PyTorch入門學習(八):神經網絡-卷積層。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、數(shù)據(jù)準備

二、創(chuàng)建卷積神經網絡模型

三、可視化卷積前后的圖像


一、數(shù)據(jù)準備

首先,需要準備一個數(shù)據(jù)集來演示卷積層的應用。在這個示例中,使用了CIFAR-10數(shù)據(jù)集,該數(shù)據(jù)集包含了10個不同類別的圖像數(shù)據(jù),用于分類任務。使用PyTorch的torchvision庫來加載CIFAR-10數(shù)據(jù)集,并進行必要的數(shù)據(jù)轉換。

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

# 數(shù)據(jù)集準備
dataset = torchvision.datasets.CIFAR10(root="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)建卷積神經網絡模型

接下來,創(chuàng)建一個簡單的卷積神經網絡模型,以演示卷積層的使用。這個模型包含一個卷積層,其中設置了輸入通道數(shù)為3(因為CIFAR-10中的圖像是彩色的,有3個通道),卷積核大小為3x3,輸出通道數(shù)為6,步長為1,填充為0。

import torch.nn as nn
from torch.nn import Conv2d

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)

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

tudui = Tudui()
print(tudui)

上述代碼定義了一個Tudui類,該類繼承了nn.Module,并在初始化方法中創(chuàng)建了一個卷積層。forward方法定義了數(shù)據(jù)在模型中的前向傳播過程。

三、可視化卷積前后的圖像

卷積層通常會改變圖像的維度和特征。使用TensorBoard來可視化卷積前后的圖像以更好地理解卷積操作。首先,導入SummaryWriter類,并創(chuàng)建一個SummaryWriter對象用于記錄日志。

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter("logs")

然后,使用DataLoader遍歷數(shù)據(jù)集,對每個批次的圖像應用卷積操作,并將卷積前后的圖像以及輸入的圖像寫入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, 3, 30, 30))
    
    # 將卷積后的圖像寫入TensorBoard
    writer.add_images("output", output, step)
    
    step += 1

writer.close()

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

運行上述代碼后,將在TensorBoard中看到卷積前后的圖像,有助于理解卷積操作對圖像的影響。

完整代碼如下:

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ù)集準備
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__()
        # 該神經網絡調用conv2d進行一層卷積,輸入通道為3層(彩色圖像為3通道),卷積核大小為3*3,輸出通道為6,設置步長為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
     對于經過卷積后輸出的圖片集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深度學習快速入門教程(絕對通俗易懂!)【小土堆】文章來源地址http://www.zghlxwxcb.cn/news/detail-732866.html

到了這里,關于PyTorch入門學習(八):神經網絡-卷積層的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包