神经网络之多维卷积的那些事(一维、二维、三维)

前言

一般来说,一维卷积用于文本数据,二维卷积用于图像数据,对宽度和高度都进行卷积,三维卷积用于视频及3D图像处理领域(检测动作及人物行为),对立方体的三个面进行卷积 。二维卷积的用处范围最广,在计算机视觉中广泛应用。

一维卷积Conv1d

一维卷积最简单,实质是对一个词向量做卷积,如下所示:
img

  • 图中的输入的数据维度为8,过滤器的维度为5。卷积后输出的数据维度为8−5+1=4
  • 如果过滤器数量仍为1,输入数据的channel数量变为16,则输入数据维度为8×16
  • 一维卷积常用于序列模型,自然语言处理领域。

Pytorch中nn.Conv1d卷积运算要求输入源是3维,输入源的三个维度分别是:第一个维度代表每个序列的个数即样本数,第二个维度代表每一个序列的通道数,第三个维度代表这个词向量序列,如下所示:

import torch
import torch.nn as nn
# 输入源:1个样本,16个通道,8个数据
a = torch.randn(1,16,8)
# 卷积:输入通道为16,输出通道为1,卷积核大小 5*5
conv = nn.Conv1d(16, 1, 5)
c = conv(a)
print('a:', a.size())
print('c:', c.size())

output

a: torch.Size([1, 16, 8])
c: torch.Size([1, 1, 4])

二维卷积Conv2d

二维卷积是最常见、用途最广泛的卷积。先假定卷积核(过滤器)数量为1,图片通道数为1,卷积操作如下:
img

  • 图中的输入的数据维度为14×14,卷积核数量为1,图片通道数为1
  • 二维卷积输出的数据尺寸为8−5+1=4,即4×4

这是最简单的二维卷积的场景,现在重点来了,假定图片通道数为3,卷积核的数量为1,则卷积操作如下:
在这里插入图片描述

  • 如上图所示,输入源是6*6*3(图片大小6*6,三个通道),卷积核大小3*3,filters(卷积核数量)=1,即权重矩阵是3*3*3*1,得到的结果4*4*1(图片大小4*4,一个通道)
  • 其实就是三个3*3的卷积核分别对图片的三个通道做卷积,然后把结果相加得到一个4*4的图片。所以,这里卷积核w的参数个数是(3*3*3+1)*1,(输入通道3,卷积核大小3*3,一个偏置,输出通道1)
  • 上图卷积 Pytorch中表示为:nn.Conv2d(3,1,kernel_size=(3,3),stride=1)

到这里可能有人会问,卷积核大小为3*3,为什么变成3*3*3了?
可以细想一下,图片的大小是6*6*3(图片大小6*6,三个通道),也就是三维的图片,二维的卷积是肯定不能对其操作的,所以卷积核的维度会随着图片的输入通道改变,如果图片的输入通道是3,那么卷积核的维度也是3,如果图片的输入通道是1,那么卷积核的维度也是1,这也就是为什么Pytorch中nn.Conv2d的输入通道要与图片的输入通道保持一致的原因,否则无法进行卷积操作。

现在,假定图片通道数为3,卷积核的数量为2,则卷积操作如下

在这里插入图片描述

  • 如上图所示,输入源是6*6*3(图片大小6*6,三个通道),卷积核大小3*3,filters=2,即权重矩阵是3*3*3*2,得到的结果4*4*2
  • 上图每一个卷积核卷积参数的个数是(3*3*3+1)*2
  • 上图卷积 Pytorch中表示为:nn.Conv2d(3,2,kernel_size=(3,3),stride=2)

计算图如下所示:

在这里插入图片描述

二维卷积常用于计算机视觉、图像处理领域。

Pytorch中nn.Conv2d卷积运算要求输入源是4维,输入源的四个维度分别是:第一个维度代表图片的个数即样本数,第二个维度代表每一张图片的通道数,后面二个维度代表图片的像素矩阵,如下所示:

import torch
import torch.nn as nn
a = torch.Tensor([[[[1,2,3,
  • 65
    点赞
  • 279
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷恩Layne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值