1*1卷积
1*1卷积的作用
参考https://zhuanlan.zhihu.com/p/89423971
1.升/降维
1*1的卷积可以在不改变卷积层的H和W的前提下,改变其维度(channels),从而实现维度的升降,通常是先降维后升维恢复,此方法可以有效地减少网络中的参数运算量(Resnet)
2.增加网络的复杂度
如上图,增加了一个Relu,而Relu是一个非线性函数,即增加了复杂度。
1*1卷积的应用
1.Googlenet
在googlenet中引入了inception结构,分别通过1*1conv,3*3conv,5*5conv和3*3 max pool,实现了多尺度的特征融合,但是,以左图结构为例,带来了一个对应的问题:计算量过大。
因此,在右图中,引入了多个1*1卷积,不仅降低了计算量,而且增加了网络深度,增强了网络的表征能力。
e.g. 输入一个256通道的图像,直接使用64个5*5conv,运算量为256*64*5*5=409600
但如果使用32个1*1conv,然后在使用64个5*5conv,运算量为256*32*1*1+32*64*5*5=59392
明显可见,使用1*1conv,运算量从乘法变成了加法,运算量有了大幅的下降。
2.Resnet
参考Resnet网络结构,与Googlenet相同,1*1conv也起到了减少参数的作用。
3*3卷积
3*3卷积的作用
使用两个3*3即一个5*5,3个3*3即一个7*7,使用多个3*3,不仅可以降低参数量,同时可以提高网络深度,增强网络的表征能力。
3*3卷积的应用
VGGnet:
从左至右:D为2个3*3,即5*5,E为3个3*3,即7*7
总结
使用1*1和3*3的网络,其目的都是为了1.降低参数量;2.增加网络深度,增强网络的表征能力。
但是,区别在于,1*1的conv会直接增加在网络中,作为单独的一层工作;而3*3的conv则是在网络中使用多个conv取代原有的较大的conv。