两个3*3的卷积核替代5*5(三个3*3卷积核替代7*7)分析

文章目录

为什么一个5×5的卷积核可以用两个3×3的卷积核来替代

知道了一个理论,两个3×3的卷积核替代5×5的卷积核,可以减少计算量,且最终的计算结果是一样的,但是为什么呢?

我们假设图片是32*32的

一个5*5卷积

我们使用5*5的卷积核对其卷积,步长为1,不填充

根据计算公式(n+2*p-f)/s + 1

得到的结果是:(32-5)/1+1=28

两个3*3卷积核

  1. 然后我们使用2个卷积核为33的,这里的两个是指进行2层33的卷积:

第一层3*3:

得到的结果是(32-3)/1+1=30

第二层3*3:

得到的结果是(30-3)/1+1=28

所以我们的最终结果和5×5的卷积核是一样的,都是28。
一个55的计算量为 5x5xchannels = 25xchannels;
两个3
3的计算量为 3x3xchannels*2 = 18xchannels
明显,两个3×3的卷积的计算量小于一个5×5卷积的计算量

为什么一个7×7的卷积核可以用三个个3×3的卷积核来替代

同理,一个7×7的卷积核可以用三个个3×3的卷积核来替代。

我们假设图片是32*32的

一个7*7卷积

我们使用5*5的卷积核对其卷积,步长为1,不填充

根据计算公式(n+2*p-f)/s + 1

得到的结果是:(32-7)/1+1=26

三个3*3卷积核

然后我们使用2个卷积核为33的,这里的两个是指进行2层33的卷积:

第一层3*3:

得到的结果是(32-3)/1+1=30

第二层3*3:

得到的结果是(30-3)/1+1=28

第三层3*3:

得到的结果是(28-3)/1+1=26

所以我们的最终结果和7×7的卷积核是一样的,都是26。可以互相替换。
一个7×7的计算量为7x7xchannels = 49xchannels;
两个3*3的计算量为 3x3xchannelsx3 = 27xchannels
所以,三个3×3的卷积的计算量小于一个7×7卷积的计算量

以上是我的理解,如有其它更通俗的理解,欢迎指教。

优点总结

堆叠含有小尺寸卷积核的卷积层来代替具有大尺寸的卷积核的卷积层,并且能够使得感受野大小不变,而且多个3×3的卷积核比一个大尺寸卷积核有更多的非线性(每个堆叠的卷积层中都包含激活函数),使得decision function更加具有判别性。

    原文作者:Nani_xiao
    原文地址: https://blog.csdn.net/xiao_lxl/article/details/101067897
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞