GoogleNet中的Inception、ResNet中的残差模块。
Inception举例
在Inception网络(论文Going Deeper with Convolutions)中图像输入进来后,通常可以选择直接使用像素信息(1x1卷积)传递到下一层,可以选择3x3卷积,可以选择5x5卷积,还可以选择max pooling的方式downsample刚被卷积后的feature maps。 但在实际的网络设计中,究竟该如何选择需要大量的实验和经验的。 Inception就不用我们来选择,而是将4个选项给神经网络,让网络自己去选择最合适的解决方案。但是这些卷积滤波器的设计也会在计算上造成很大的消耗,由于3*3卷积或者5*5卷积在几百个filter的卷积层上做卷积操作时相当耗时,所以1*1卷积在3*3卷积或者5*5卷积计算之前先降低维度。
普通的Inception模块:
从下往上看,本层输入的feature map 是28*28*192 。
注:卷积核的通道数与输入的feature map一致,而卷积核的个数与输出channel一致。
输入feature map | 卷积核大小 \ 卷积核参数 | 通道数 | 个数 | 卷积操作所生成的通道数 | 输出feature map |
28*28*192 | 1*1 | 192 | 64 | 64 | (28*28)*64 |
28*28*192 | 3*3 | 192 | 128 | 128 | (26*26)*128 |
28*28*192 | 5*5 | 192 | 32 | 32 | (24*24)*32 |
注: 卷积核通道数默认与所作用的feature map通道数相同,使用时也不写通道数,只写filter个数(即卷积核数量)