Bootstrap

如何计算卷积层输出图像的大小&以及池化大小输出

如何计算卷积层输出图像的大小&以及池化大小输出

卷积

在卷积神经网络(CNN)中,计算卷积层输出图像的大小是一个常见的操作。以下是卷积计算的基本公式和步骤:

  1. 卷积层输出尺寸计算公式
    Output_size = ⌊ Input_size − Filter_size + 2 × Padding Stride ⌋ + 1 \text{Output\_size} = \left\lfloor \frac{\text{Input\_size} - \text{Filter\_size} + 2 \times \text{Padding}}{\text{Stride}} \right\rfloor + 1 Output_size=StrideInput_sizeFilter_size+2×Padding+1

    其中:

    • Input_size \text{Input\_size} Input_size 是输入图像的尺寸(高度或宽度)。
    • Filter_size \text{Filter\_size} Filter_size 是卷积核的尺寸(通常是正方形,如 3 × 3 3 \times 3 3×3)。
    • Padding \text{Padding} Padding 是填充的像素数。
    • Stride \text{Stride} Stride 是卷积核移动的步长。
    • ⌊ ⋅ ⌋ \left\lfloor \cdot \right\rfloor 表示向下取整。
  2. 实例
    假设输入图像尺寸为 32 × 32 32 \times 32 32×32,卷积核尺寸为 5 × 5 5 \times 5 5×5,填充为 0 0 0(即没有填充),步长为 1 1 1
    Output_size = ⌊ 32 − 5 + 2 × 0 1 ⌋ + 1 = ⌊ 27 ⌋ + 1 = 28 \text{Output\_size} = \left\lfloor \frac{32 - 5 + 2 \times 0}{1} \right\rfloor + 1 = \left\lfloor 27 \right\rfloor + 1 = 28 Output_size=1325+2×0+1=27+1=28
    因此,输出图像的尺寸为 28 × 28 28 \times 28 28×28

  3. 带填充和步长的实例
    如果输入图像尺寸为 32 × 32 32 \times 32 32×32,卷积核尺寸为 3 × 3 3 \times 3 3×3,填充为 1 1 1(即每边填充一圈像素),步长为 2 2 2
    Output_size = ⌊ 32 − 3 + 2 × 1 2 ⌋ + 1 = ⌊ 32 2 ⌋ + 1 = 16 + 1 = 17 \text{Output\_size} = \left\lfloor \frac{32 - 3 + 2 \times 1}{2} \right\rfloor + 1 = \left\lfloor \frac{32}{2} \right\rfloor + 1 = 16 + 1 = 17 Output_size=2323+2×1+1=232+1=16+1=17
    因此,输出图像的尺寸为 17 × 17 17 \times 17 17×17

  4. 卷积层的参数个数
    计算卷积层的参数个数的公式为:
    Params = ( Filter_height × Filter_width × Input_channels + 1 ) × Number_of_filters \text{Params} = (\text{Filter\_height} \times \text{Filter\_width} \times \text{Input\_channels} + 1) \times \text{Number\_of\_filters} Params=(Filter_height×Filter_width×Input_channels+1)×Number_of_filters

    例如,对于一个具有 3 个输入通道、32 个过滤器和 5 × 5 5 \times 5 5×5 卷积核的卷积层:
    Params = ( 5 × 5 × 3 + 1 ) × 32 = ( 75 + 1 ) × 32 = 2432 \text{Params} = (5 \times 5 \times 3 + 1) \times 32 = (75 + 1) \times 32 = 2432 Params=(5×5×3+1)×32=(75+1)×32=2432

通过这些公式和实例,你可以计算任何卷积层的输出尺寸和参数个数。

池化

池化(Pooling)操作通常用于减小特征图的尺寸,同时保留重要的特征。计算池化层输出图像的大小的方法类似于卷积层,但公式略有不同。

池化层输出尺寸计算公式

Output_size = ⌊ Input_size − Pool_size Stride ⌋ + 1 \text{Output\_size} = \left\lfloor \frac{\text{Input\_size} - \text{Pool\_size}}{\text{Stride}} \right\rfloor + 1 Output_size=StrideInput_sizePool_size+1

其中:

  • Input_size \text{Input\_size} Input_size 是输入图像的尺寸(高度或宽度)。
  • Pool_size \text{Pool\_size} Pool_size 是池化窗口的尺寸(通常是正方形,如 2 × 2 2 \times 2 2×2)。
  • Stride \text{Stride} Stride 是池化窗口移动的步长。
  • ⌊ ⋅ ⌋ \left\lfloor \cdot \right\rfloor 表示向下取整。

实例计算

假设我们有一个池化层,输入图像的尺寸为 54 × 54 × 96 54 \times 54 \times 96 54×54×96,池化窗口的尺寸为 2 × 2 2 \times 2 2×2,步长为 2(即常见的最大池化操作)。

  1. 计算高度和宽度
    Output_height = ⌊ 54 − 2 2 ⌋ + 1 = ⌊ 26 ⌋ + 1 = 27 \text{Output\_height} = \left\lfloor \frac{54 - 2}{2} \right\rfloor + 1 = \left\lfloor 26 \right\rfloor + 1 = 27 Output_height=2542+1=26+1=27

    Output_width = ⌊ 54 − 2 2 ⌋ + 1 = ⌊ 26 ⌋ + 1 = 27 \text{Output\_width} = \left\lfloor \frac{54 - 2}{2} \right\rfloor + 1 = \left\lfloor 26 \right\rfloor + 1 = 27 Output_width=2542+1=26+1=27

因此,输出图像的高度和宽度均为 27。

  1. 输出通道数
    池化操作不改变通道数。因此,输出图像的通道数仍然是 96。

最终输出尺寸

结合上面的计算,池化后的输出图像的尺寸为 27 × 27 × 96 27 \times 27 \times 96 27×27×96

解释

  • 输入图像尺寸 54 × 54 × 96 54 \times 54 \times 96 54×54×96
  • 池化窗口尺寸 2 × 2 2 \times 2 2×2
  • 步长: 2

池化操作通过应用 2 × 2 2 \times 2 2×2 的池化窗口,以步长 2 在 54 × 54 54 \times 54 54×54 的输入图像上滑动,从而得到一个高度和宽度均为 27,通道数为 96 的输出特征图。

总结

通过上述步骤,我们解释了如何计算池化层输出图像的尺寸。池化后的输出尺寸为 27 × 27 × 96 27 \times 27 \times 96 27×27×96

;