池化(Pooling)操作在卷积神经网络中用于降低特征图的尺寸,减少计算量,并提供某种程度的平移不变性。我们以最常用的最大池化(Max Pooling)为例,来解释池化操作之后的特征图大小计算。
假设有以下参数:
- 输入特征图大小: ( H i n × W i n ) ( H{in} \times W{in} ) (Hin×Win)
- 池化窗口大小: ( K × K ) ( K \times K ) (K×K)
- 步幅:( S )
- 填充:( P )
池化之后的输出特征图大小可以用以下公式计算:
H o u t = ⌊ H i n − K + 2 P S ⌋ + 1 H{out} = \left\lfloor \frac{H{in} - K + 2P}{S} \right\rfloor + 1 Hout=⌊SHin−K+2P⌋+1
W o u t = ⌊ W i n − K + 2 P S ⌋ + 1 W{out} = \left\lfloor \frac{W{in} - K + 2P}{S} \right\rfloor + 1 Wout=⌊SWin−K+2P⌋+1
示例
假设输入特征图的大小是 ( 4 × 4 ) (4 \times 4) (4×4),池化窗口大小是$ (2 \times 2)$,步幅是 (2),无填充(即 (P = 0))。
参数:
- ( H i n = 4 ) ( H_{in} = 4 ) (Hin=4)
- ( W i n = 4 ) ( W_{in} = 4 ) (Win=4)
- ( K = 2 )
- ( S = 2 )
- ( P = 0 )
计算:
H o u t = ⌊ 4 − 2 + 0 2 ⌋ + 1 = ⌊ 2 2 ⌋ + 1 = 1 + 1 = 2 H{out} = \left\lfloor \frac{4 - 2 + 0}{2} \right\rfloor + 1 = \left\lfloor \frac{2}{2} \right\rfloor + 1 = 1 + 1 = 2 Hout=⌊24−2+0⌋+1=⌊22⌋+1=1+1=2
W o u t = ⌊ 4 − 2 + 0 2 ⌋ + 1 = ⌊ 2 2 ⌋ + 1 = 1 + 1 = 2 W{out} = \left\lfloor \frac{4 - 2 + 0}{2} \right\rfloor + 1 = \left\lfloor \frac{2}{2} \right\rfloor + 1 = 1 + 1 = 2 Wout=⌊24−2+0⌋+1=⌊22⌋+1=1+1=2
因此,池化之后的输出特征图大小是 ( 2 × 2 ) (2 \times 2) (2×2)。
具体示例
假设输入特征图如下:
[ 1 3 2 4 5 6 7 8 9 2 4 6 3 1 0 5 ] \begin{bmatrix} 1 & 3 & 2 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 2 & 4 & 6 \\ 3 & 1 & 0 & 5 \end{bmatrix} 1593362127404865
最大池化操作的结果将是:
[ [ 6 8 9 6 ] ] [ \begin{bmatrix} 6 & 8 \\ 9 & 6 \end{bmatrix} ] [[6986]]
步骤:
- 取左上角的 ( 2 × 2 ) (2 \times 2) (2×2) 区域 ( [ 1 3 5 6 ] ) (\begin {bmatrix} 1 & 3 \\ 5 & 6 \end{bmatrix}) ([1536]),最大值是6。
- 移动窗口至右上角 ( [ 2 4 7 8 ] ) (\begin{bmatrix} 2 &4 \\ 7 & 8 \end{bmatrix}) ([2748]),最大值是8。
- 移动窗口至左下角 ( [ 9 2 3 1 ] ) (\begin{bmatrix} 9 &2 \\ 3 & 1 \end{bmatrix}) ([9321]),最大值是9。
- 移动窗口至右下角 ( [ 4 6 0 5 ] ) (\begin{bmatrix} 4 & 6 \\ 0 & 5 \end{bmatrix}) ([4065]),最大值是6。
最终得到输出特征图:
[ 6 8 9 6 ] \begin{bmatrix} 6 &8 \\ 9 & 6 \end{bmatrix} [6986]
通过以上计算和示例,明确了池化操作之后的特征图大小计算方法和具体操作过程。