GoogleNet的基本单元
Inception单元结构
主要思想是利用不同大小的卷积核实现不同尺度的感知,网络结构如下图所示
对上图进行说明:
1 . 采用不同大小的卷积核可以提取不同尺度的特征
2 . 卷积核采用1/3/5,主要是为了方便组合。设定步长为1后,只要设定padding=0/1/2,后续卷积就可以得到相同宽高的特征图片
问题
这个模块的结构的参数太多,导致特征图厚度太大,所以改进的模块加入1*1的卷积模块,有效减少了卷积层的参数。等一下,为什么1*1的卷积可以减少卷积层的参数?
好了,回答一下,假如输入是100*100*64,经过卷积Filter:5*5 s=1 padding=2 Filter_num=128后,输出当然是(100-5+2*2)/1+1=100,100*100*128啦,卷积的参数就是64*5*5*128;但是先经过32个1*1的卷积,再通过5*5的卷积,输出依旧是100*100*128,但是卷积的参数为64*1*1*32+32*5*5*128, 64*5*5*128要比64*1*1*32+32*5*5*128的参数多很多呀!!!,所以后序改进的模块如下图所示
GoogleNet完整结构
介绍完基本的模块后,我们看看GoogleNet的完整结构吧(真的好长,看都不想看,但是接着往下看呗),图片用的是知乎博主任乾的图片(用了别人的东西就要标记,这是尊重别人的劳动成果)。
其实按照模块去看,不那么复杂。
1.用了9个Inception单元结构
2.为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度
3.采用了平均池化来代替全连接层
我的理解就是,googlenet增加了网络的宽度,不同的尺寸的卷积核提取不同的特征图。