DataLearner logoDataLearnerAI
Latest AI Insights
Model Evaluations
Model Directory
Model Comparison
Resource Center
Tool Directory

加载中...

DataLearner logoDataLearner AI

A knowledge platform focused on LLM benchmarking, datasets, and practical instruction with continuously updated capability maps.

产品

  • Leaderboards
  • 模型对比
  • Datasets

资源

  • Tutorials
  • Editorial
  • Tool directory

关于

  • 关于我们
  • 隐私政策
  • 数据收集方法
  • 联系我们

© 2026 DataLearner AI. DataLearner curates industry data and case studies so researchers, enterprises, and developers can rely on trustworthy intelligence.

隐私政策服务条款
  1. Home/
  2. Blog List/
  3. Blog Detail

深度学习卷积操作的维度计算(PyTorch/Tensorflow等框架中Conv1d、Conv2d和Conv3d介绍)

2019/05/31 20:27:07
20,066 views
PyTorch卷积神经网络深度学习

一、卷积操作的维度计算

卷积操作的维度计算是定义神经网络结构的重要问题,在使用如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

其中,w是宽度,h是高度,c是通道数(对于RGB图像输入来说,这个值一般是3,在文本处理中,通常是不同embedding模型的个数,如采用腾讯训练的、谷歌训练的等)。

这个时候的卷积核通常也是带通道的三维卷积核:

f \times f \times c

注意,一般来说,卷积核的通道数c和输入数据的通道数是一致的。因此,这个时候卷积之后的输出依然是一个二维数据,其大小为:

\lfloor \frac{w + 2p - f}{s} +1 \rfloor \times \lfloor \frac{h +2p - f}{s} + 1 \rfloor

这里的维度做了向下取整,防止结果不是整数的情况。假如希望输出的也是带通道的结果,那么这时候就要使用多个卷积核来操作了,最终输出的数据维度是:

\lfloor \frac{w + 2p - f }{s} +1 \rfloor \times \lfloor \frac{h +2p - f}{p} + 1 \rfloor \times c'

其中$c`$是卷积核的个数。

二、深度学习框架中Conv1d、Conv2d

在像PyTorch、Tensorflow中,都有类似Conv1d、Conv2d和Conv3d的操作。这也都和卷积操作的维度有关,里面的参数都要定义好。例如如下的卷积操作:

self.convs = nn.Sequential(
            nn.Conv1d(in_channels=32,
                      out_channels=16,
                      kernel_size=5,
					  stride=1,
					  padding=0),
            nn.BatchNorm1d(16),
            nn.ReLU(inplace=True)
        )

这里面的参数要定义好,否则容易出错。我们将分别介绍。

Conv1d是一维卷积操作,它要求输入的数据是三维的,即:

\text{min batch size} \times \text{in channels number} \times L_{in}

最终输出的参数也是三维的:

\text{min batch size} \times \text{out channels number} \times L_{out}

这里的out_channels定义了将由几个卷积核来扫描,kernel_size则定义了每一个卷积核大小,都可以自有定义。最终,输出的min_batch_size不变,out_channels数量根据定义的参数来,而输出的width计算如下:

\lfloor \frac{L_{in} + 2p - f}{s} +1 \rfloor 

类似的,如果使用Conv2D做卷积操作,那么输入就是四维的:

N \times C_{in} \times H_{in} \times W_{in}

这里的$N$是min batch size,$C_{in}$是输入数据的通道数,$H_{in}$是输入数据的高度,$W_{in}$是输入数据的宽度。其输出也是四维的,根据定义的卷积核大小和数量得到的输出维度如下:

N \times C_{out} \times H_{out} \times W_{out}

其中,$C_{out}$是根据卷积核的数量定义的输出数据的通道数,因为一个卷积核只能扫描得到一个二维图。其中$H_{out}$和$W_{out}$的计算如下:

 H_{out} = \lfloor \frac{H_{in} + 2p - f}{s} +1 \rfloor
W_{out} = \lfloor \frac{W_{in} + 2p - f}{s} +1 \rfloor

DataLearner WeChat

Follow DataLearner WeChat for the latest AI updates

DataLearner 官方微信二维码
Back to Blog List

Related Blogs

  • 华为大模型生态重要一步!PyTorch最新2.1版本宣布支持华为昇腾芯片(HUAWEI Ascend)
  • 重磅!PyTorch官宣2.0版本即将发布,最新torch.compile特性说明!
  • 12倍推理速度提升!Meta AI开源全新的AI推理引擎AITemplate
  • 卷到家了!发布2天后MetaAI的Text-to-Video模型MAKE-A-VIDEO的开源PyTorch实现就要来了!
  • 重磅!Meta将PyTorch移交给Linux基金会!
  • TorchVision最新0.13版本发布!
  • PyTorch终于支持苹果的M1芯片了!
  • TensorFlow与PyTorch近几年发展对比

Hot Blogs

  • 1Dirichlet Distribution(狄利克雷分布)与Dirichlet Process(狄利克雷过程)
  • 2回归模型中的交互项简介(Interactions in Regression)
  • 3贝塔分布(Beta Distribution)简介及其应用
  • 4矩母函数简介(Moment-generating function)
  • 5普通最小二乘法(Ordinary Least Squares,OLS)的详细推导过程
  • 6使用R语言进行K-means聚类并分析结果
  • 7深度学习技巧之Early Stopping(早停法)
  • 8手把手教你本地部署清华大学的ChatGLM-6B模型——Windows+6GB显卡本地部署