1、 1x1卷积
也称为网中网
如下,输入一个 6x6 的 矩阵,过滤器是 1x1 的,则相当于每个元素简单的乘以了 2。

作用
池化层可以改变矩阵的大小,1x1 卷积则可以改变矩阵的深度。

有些人虽然使用了 1x1 卷积核,但是却不改变输出矩阵的深度,他们的目的不是为了减少计算量,而是为了增加网络的复杂度,因为增加了一层 1x1 卷积,就相当于多了一层激活函数。
2、Inception网络
在设计卷积层的时候,经常会犯选择困难症,到底是用 1x1 的卷积核?还是用 3x3 的卷积核?或者应该用 5x5 的卷积核?需不需要加上池化层?
Google 提出了Inception网络,他将上面提到的都用上,将输入矩阵与上述的卷积核和池化层计算得到的结果连接起来。如下图所示:
输入矩阵为 28x28x192,输出矩阵为 28x28x256(256=64+128+32+32)

从上图可以看出,
-
1x1 的卷积核使用了64个
-
3x3 的卷积核使用了128个
-
5 x5的卷积核使用了32个
-
MaxPooling:
-
注意:上述计算后的矩阵大小都不变,使用的是same方式,保证了输出后的矩阵大小一致。
优点
Inception层通过把多个选项聚合在一层中,增加了网络的灵活性和复杂度,从某种意义上来讲,把选择困难症的问题交给了网络自己去解决,由网络自己取选择使用哪个过滤器,因为,在训练中,如果网络不喜欢哪个过滤器,则会相应的调整该过滤器相关的参数来削弱或者去掉那个过滤器的影响力。
缺点
计算量太大
3、Inception网络和1x1卷积
Inception网络很强大,但是计算量太大,使用 1x1 网络可以减少计算量
例如

卷积是由加法和乘法组成的,这里只考虑乘法,上面的卷积中大概需要(28x28x32)x(5x5x192)个乘法运算。也就是1.2亿个乘法。
如果在里面插入了 1x1 卷积,将会大大减少计算量,如下图所示:

前面 1x1 卷积的计算量是 (28x28x16)x(1x1x192)=240万
后面的 5x5 卷积的计算量是 (28x28x32)x(5x5x16)= 1000万
总共的计算量是1240万个,相当于比1.2亿减少了10倍的计算量。
1x1卷积如果使用得当不会影响网络的性能,即使有影响,相对于减少的计算量(计算量可以看做花费的钱)来说,也是值得的。
4、完整的Inception网络

-
左边绿色的为输入矩阵
-
3x3卷积和5x5卷积前面都添加了 1x1 卷积模式为了减少计算量。
-
红色的是最大池化,而且是same最大池化(即计算后矩阵大小不变),后面的1x1卷积是为了减少矩阵的深度。
-
最后的绿色为输出矩阵,他是将前面的所有计算结果拼接起来形成的。如下图所示:

注意:除了上述提到的 1x1卷积,3x3卷积,5x5卷积之外,也可以添加其他大小的卷积,如 7x7卷积,11x11卷积。
通过将上面的多个Inception模块拼接起来就构成了一个完整的Inception网络,如:

29万+

被折叠的 条评论
为什么被折叠?



