inception 如何降低计算成本?

数据挖掘 卷积神经网络 成立之初
2021-10-10 19:56:51

从论文Rethinking the inception architecture for computer vision中的 3.1 Factorization into small convolution的第二段

这种设置通过在相邻瓦片之间共享权重,明显减少了参数数量。为了分析预期的计算成本节省,

...

通过这种方式,我们最终减少了 9+9 × 的计算,通过这种分解,得到 25 的相对增益 28%

显然,这种设计减少了参数的数量。但我不明白为什么它会降低计算成本?

对于使用 2 个 3*3 的 convnet 代替 5*5 的情况,我认为增加了 (3*3*9+3*3)/5*5 = 3.6 倍的计算成本。

我在这里想念什么?

2个回答

然而,在整体方案中,滑动该网络可以由两个 3 x 3 卷积层表示,它们重用相邻瓦片之间的激活。

由于替换(两个 3x3 而不是一个 5x5)共享权重,我们不必计算两次。这就是收益的来源。

编辑:

增益来自于滑动:使用以下公式 (n-filtersize+1) x (n-filtersize+1) 计算一个滤波器在 nxn 输入上的输出

可以在这里找到更详细的答案: Reducing Filter Size in Convolutional Neural Network 谢谢@Thomas W。

只是补充一点。我不确定你从哪里得到“(3 * 3 * 9 + 3 * 3)/ 5 * 5”。一个 3x3 过滤器有 9 个参数,一个 5x5 有 25 个参数。因此,即使您堆叠两个 3x3 过滤器,与 25 个相比,您仍然只有 18 个。这实际上是需要计算的参数减少了 28%。这种遍布整个网络的简单缩减可以显着提高速度。事实上,您甚至可以采用这个原则并应用一个仅在水平面上移动的 nx1 过滤器,然后是一个垂直移动的 1xn 过滤器,以查看类似的增益。(尽管这可能会引入瓶颈。)

我认为理解计算成本的一个好方法是手动计算一个简单的过滤器。跟踪您正在执行的所有操作并找出可重用的操作。

最后,我还要提到堆叠两个 3x3 内核为您提供了一个 5x5 内核的感受野。堆叠三个 3x3 内核为您提供 7x7 的感受野,依此类推。了解感受野对于任何计算机视觉任务都至关重要。这是更多信息DCNN 感受野信息