1*1卷积浅析

Posted zdm-code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的卷积核可以在增加网络结构复杂性的同时实现特征降维。

 

以上是关于1*1卷积浅析的主要内容,如果未能解决你的问题,请参考以下文章

flinkFlink 1.12.2 源码浅析 : StreamTask 浅析

flinkFlink 1.12.2 源码浅析 : Task 浅析

GCD 浅析

busybox浅析

FlinkFlink 1.12.2 源码浅析 : TaskExecutor

浅析知识图谱构建