为什么一个5x5的卷积核可以用两个3x3的卷积核来替代
知道了一个理论,两个3x3的卷积核替代5x5的卷积核,可以减少计算量,且最终的计算结果是一样的,但是为什么呢?
我们假设图片是32*32的
一个5*5卷积
我们使用5*5的卷积核对其卷积,步长为1,不填充
根据计算公式(n+2*p-f)/s + 1
得到的结果是:(32-5)/1+1=28
两个3*3卷积核
- 然后我们使用2个卷积核为33的,这里的两个是指进行2层33的卷积:
第一层3*3:
得到的结果是(32-3)/1+1=30
第二层3*3:
得到的结果是(30-3)/1+1=28
所以我们的最终结果和5x5的卷积核是一样的,都是28。
一个55的计算量为 5x5xchannels = 25xchannels;
两个33的计算量为 3x3xchannels*2 = 18xchannels
明显,两个3x3的卷积的计算量小于一个5x5卷积的计算量
为什么一个7x7的卷积核可以用三个个3x3的卷积核来替代
同理,一个7x7的卷积核可以用三个个3x3的卷积核来替代。
我们假设图片是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
所以我们的最终结果和7x7的卷积核是一样的,都是26。可以互相替换。
一个7x7的计算量为7x7xchannels = 49xchannels;
两个3*3的计算量为 3x3xchannelsx3 = 27xchannels
所以,三个3x3的卷积的计算量小于一个7x7卷积的计算量
以上是我的理解,如有其它更通俗的理解,欢迎指教。
优点总结
堆叠含有小尺寸卷积核的卷积层来代替具有大尺寸的卷积核的卷积层,并且能够使得感受野大小不变,而且多个3x3的卷积核比一个大尺寸卷积核有更多的非线性(每个堆叠的卷积层中都包含激活函数),使得decision function更加具有判别性。