使用更小的卷积核是当前在保证网络精度的情况下,减少参数的趋势之一,在VGG16中,使用了3个3*3卷积核来代替7*7卷积核,使用了2个3*3卷积核来代替5*5卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。
以下简单地说明一下小卷积(3*3)对于5×5网络感知野相同的替代性。
关于3个3×3卷积核对于7× 7 卷积的替代性思考方式同上。
接下来说明以下减少参数的作用。
对于两个3*3卷积核,所用的参数总量为2*(3*3)*channels, 对于5*5卷积核为5*5*channels, 因此可以显著地减少参数的数量。
下面是7*7的用三个3*3卷积核替代的情况
问题:7*7的卷积核,不是只需要一次加权求和就成了1*1的输出了么。3*3的卷积核,先过滤成5*5,再用3*3卷积核就成了3*3,再一次,就成了1*1。
3*3的卷积核只有9个参数,卷积3次,也就27个参数。而7*7的卷积核是49个参数,我承认参数变少了。但在加权求和的过程中,显然后者运算步骤更多。
参数少了,运算步骤却多了,我的疑问就在这。
假设输入的图片大小为100*100*3,卷积操作不改变大小(padding=same)。先看用128个7*7*3的核进行卷积操作,需要100*100*7*7*3*128次乘法操作然后我们用3层3*3卷积代替上面的7*7卷积,每层仍取128个核,需要100*100*3*3*3*128*3次乘法操作,约掉相同部分,分别剩下7*7=49和3*3*3=27.显然,用三层3*3代替一层7*7可以减少近一半的计算量。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用更小卷积核的作用——参数量和计算量的分析 - Python技术站