计算卷积神经网络 Kernel 大小的技巧

3 分钟读完

今天我来说说一个很有用的公式,参考 Stanford CS231n 课程笔记。[Link]

公式参数($W,F,P,S$):

  • $W$ :输入的每个二维 feature map 大小是 $W\times W$,也就是整个 input 体积是 $W\times W\times N$, 这里 $N$ 代表 input feature map 的数量。
  • $F$ :Kernel 或 Filter 大小为 $F\times F$
  • $P$ :Padding 四周各往外延伸 $P$
  • $S$ :Kernel 或 Filter 移动的步长(stride)为 $S$

那么每个输出的二维 feature map 大小是:

$$ (W - F + 2P)/S + 1 $$

这个值必须为整数,若为小数则说明这个 Kernel 或 Filter 不适合这个 spatial size 的 input。

大小不变

举个常见的例子,ConvNet 中用来保持 output spatial size 不变的 Kernel 或 Filter 组合:

$$ F=3, P=1, S=1 $$

为什么说它能让输出大小和原来保持不变呢?让我们一起代入公式计算一下:
$Output =(W - 3 + 2\cdot 1)/1 + 1 = (W - 1)/1 + 1 = W$

所以输出的 spatial size 仍然保持 $W$ 不变。

大小减半

$$ F=4, P=1, S=2 $$

所以 $Output =(W - 4 + 2\cdot 1)/2 + 1 = (W - 2)/2 + 1 = W/2$

返回顶部 ↑

留下评论