一、概念
卷積從數學的角度講是一種矩陣的運算方法。我們可以用一個卷積核對一個矩陣進行卷積運算,具體運算過程圖示可以見pytorch官網。
卷積運算按輸入數據的通道數可分為單通道和多通道兩種。
單通道是指卷積核只有一個的情況。
多通道包括兩種。
分別是單個卷積核對應多通道輸入;多卷積核對應多通道輸入,這種最常見。
具體內容可見文章。
深度學習筆記(一):卷積層+池化層+激活函數+全連接層
二、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 SummaryWriterdataset = 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 awzh = Wzh()w = SummaryWriter("Conv2D")
i = 0
for data in dataloader:imgs, targets = dataoutput = 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
卷積結果如下:
原圖
卷積后
從圖的變化來看,卷積后的圖片保留了原始圖片的邊緣特征。