深度学习卷积操作的维度计算(PyTorch/Tensorflow等框架中Conv1d、Conv2d和Conv3d介绍)
一、卷积操作的维度计算
卷积操作的维度计算是定义神经网络结构的重要问题,在使用如PyTorch、Tensorflow等深度学习框架搭建神经网络的时候,对每一层输入的维度和输出的维度都必须计算准确,否则容易出错,这里将详细说明相关的维度计算。
首先,我们看一下卷积操作涉及的东西,一个卷积操作需要定义卷积核的大小、输入图像的padding长度以及卷积操作的步长。以一个二维输入为例,一个多卷积核操作的示意图如下:

这个例子的输入数据是一个三维数据,带有通道数,输入数据第三个维度是通道数,使用了两个卷积核(滤波器)扫描得到两个二维图像(一个卷积核对一个三维数据,即带多个通道的二维数据扫描可以得到一个图像,要求卷积核也是三维,且通道数和输入数据通道数一样),组成输出数据的两个通道。下面我们来描述具体计算。
假设输入数据大小是:
w \times h
其中,w是宽度,h是高度。卷积核大小是:
f \times f
padding的长度是p(padding),步长是s(stride): 那么经过卷积操作之后,输出的数据大小:
\lfloor\frac{w + 2p - f}{s} +1 \rfloor \times \lfloor \frac{h +2p - f }{p} + 1\rfloor
如果输入的数据是三维数据,即:
w \times h \times c
