Pytorch基础(四)—— 卷积层

一、概念

卷积从数学的角度讲是一种矩阵的运算方法。我们可以用一个卷积核对一个矩阵进行卷积运算,具体运算过程图示可以见pytorch官网。
Pytorch基础(四)—— 卷积层_第1张图片
Pytorch基础(四)—— 卷积层_第2张图片

卷积运算按输入数据的通道数可分为单通道和多通道两种。
单通道是指卷积核只有一个的情况。
多通道包括两种。
分别是单个卷积核对应多通道输入;多卷积核对应多通道输入,这种最常见。
具体内容可见文章。
深度学习笔记(一):卷积层+池化层+激活函数+全连接层

二、Pytorch示例

在torch.nn下,卷积层按输入数据维度可分为1维,2维,3维。最常用的就是2维Conv2d,参数解释可以见官网。
下面用CIFAR10数据集做测试。

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

dataset = torchvision.datasets.CIFAR10("../dataset", train=False, transform=torchvision.transforms.ToTensor(), download=False)

dataloader = DataLoader(dataset, batch_size=64)

class Wzh(nn.Module):
    def __init__(self):
        super(Wzh, self).__init__()
        self.conv1 = Conv2d(in_channels=3, out_channels=6, kernel_size=3)

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

wzh = Wzh()

w = SummaryWriter("Conv2D")
i = 0
for data in dataloader:
    imgs, targets = data
    output = wzh(imgs)    
    output = torch.reshape(output, (-1, 3, 30, 30))
    
    w.add_images("input", imgs, i)
    w.add_images("output", output, i)
    i = i + 1

卷积结果如下:
Pytorch基础(四)—— 卷积层_第3张图片原图
Pytorch基础(四)—— 卷积层_第4张图片卷积后
从图的变化来看,卷积后的图片保留了原始图片的边缘特征。

你可能感兴趣的:(pytorch,pytorch,深度学习,python)