池化(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]
通过以上计算和示例,明确了池化操作之后的特征图大小计算方法和具体操作过程。