CNN网络中第二层卷积层输出形状的数学原理咨询
第二层卷积层输出形状的数学原理解析
核心概念澄清
首先明确卷积核形状(3,3,64,64)的含义:这是**(滤波器高度, 滤波器宽度, 输入通道数, 输出通道数)**的标准格式。也就是说,这一层有64个独立的三维滤波器,每个滤波器的尺寸是3×3×64——它会覆盖输入的所有64个通道,而非仅对应单个输入通道。
单滤波器输出11×11×1的计算逻辑
输入形状是(11,11,64),单个3×3×64滤波器的计算过程如下:
- 对于输出特征图的每个空间位置
(i,j),从输入中取出对应的3×3×64局部区域(步长为1、padding为same的设置,保证输入每个空间位置都能对应输出的一个位置)。 - 将该局部区域的每个元素,与滤波器对应位置的权重做逐元素相乘,再把所有乘积求和,得到一个标量值。
- 由于
padding='same'且步长为1,输出空间尺寸计算公式为:输出高度 = ceil(输入高度 / 步长) = ceil(11/1) = 11 输出宽度 = ceil(输入宽度 / 步长) = ceil(11/1) = 11 - 每个滤波器仅对应一个输出通道,因此单个滤波器的输出形状是
(11,11,1)。
为什么不会得到(11,11,64,64)
你之前的误解混淆了标准卷积和逐通道分组卷积的逻辑:
- 如果是逐通道分组卷积(分组数等于输入通道数),每个输入通道对应一个独立的
3×3二维滤波器,确实会得到(11,11,64,64)的中间结果,但这不是当前场景的标准卷积。 - 标准卷积中,每个输出通道的滤波器是跨所有输入通道的,最终每个输出通道是所有输入通道卷积结果的加权求和,因此不会保留输入通道维度,而是合并为单个标量输出。
整体输出形状(11,11,64)的由来
这一层有64个独立的3×3×64滤波器,每个滤波器输出(11,11,1)的特征图。把这64个单通道特征图在通道维度上拼接,就得到了最终的(11,11,64)输出。
硬件实现的关键提示
对于输出特征图的每个点(i,j,k)(k为输出通道索引),硬件需要执行以下操作:
- 从输入特征图中提取对应位置的
3×3×64窗口数据。 - 取出第
k个滤波器的3×3×64权重参数。 - 执行逐元素相乘后累加(MAC操作),得到该点的原始值。
- 若有偏置参数,加上对应输出通道的偏置值,得到最终输出。
内容的提问来源于stack exchange,提问作者Utkarsh Kathuria
相关产品推荐
相关产品推荐

