1*1卷积浅析
1*1shape的卷积在很多神经网络中都有应用(如Google InceptionNet,Resnet等),比起我们常见的2*2,3*3,5*5的卷积,这样的卷积核有什么作用呢?
首先,1*1的卷积可以增加网络层的非线性,它的卷积过程其实相当于全连接层的计算过程,并且还加入了非线性的激活函数(relu等),从而使网络结构变得更加的复杂。
其次,1*1的卷积加入可以通过控制卷积核的数量达到放缩通道数大小的目的,从而实现特征降维,以实现参数和计算量的减少。
下面举一个引入1*1和不引入1*1卷积的例子:
1.不引入1*1卷积:
input(28*28*192)→(conv(5*5*32,same))→output(28*28*32)
计算参数量:(28*28*32)*(5*5*192)≈120M
2.引入1*1卷积:
input(28*28*192)→(conv*(1*1*16))→hidden(28*28*16)→(conv(5*5*32,same))→output(28*28*32)
计算参数量:(28*28*16)*192+(28*28*32)*(5*5*6)≈12.4M
约减少了十倍计算量
又如Google InceptionNet:
最初始版本的inceptionNet结构如下:
改进后的结构如下:
假设previous layer层的大小为28*28*192,非1*1卷积层核数按顺序分别为(64,128,32),黄色1*1卷积层核数分别为(96,16,32)则有:
图一:weight:1*1*192*64+3*3*192*128+5*5*192*32=387072
featuremap:28*28*64+28*28*128+28*28*32+28*28*192=28*28*416
图二:weight:1*1*192*64+(1*1*192*96+3*3*96*128)+(1*1*192*16+5*5*16*32)+1*1*192*32=163328
featuremap:28*28*64+28*28*128+28*28*32+28*28*32=28*28*256
由此可证明,1*1的卷积核可以在增加网络结构复杂性的同时实现特征降维。