引言
GoogleNet学习的理论部分笔记
1.Inception原型
构建卷积网络的时候,卷积核你该如何选择呢?1x1? or 3x3? or 5x5? 或者是否需要添加池化层呢??⑧知道
所以,Inception网络就可以替你决定!
那么接下来,我们来看一下它的网络结构!!!
我们可以看到我们的输入是[28 28 192], Inception代替人工选择卷积核或者是否创建池化
首先1 x 1的卷积核 64个 那么我们输出的就是[28 28 64], 同理3 x 3的128个 输出就是[28 28 128]…以此类推
注意这里,我们要用SAME操作 保证维度不变
最后,我们把它堆叠起来,输出就是[28 28 416]
但是呢!上面这个模型的计算量似乎有点大!
以5x5的卷积核为例子
28 x 28 x 192的输入 做5 x 5的卷积(32个),每个卷积核是5 x 5 x 192
输出为 28 x 28 x 32
我们看一下它的计算量 对于输出中的每个数字,5 x 5 x 192次乘法运算,我们一共有28 x 28 x 32个数字
那我们算一下
5 x 5 x 192 x 28 x 28 x 32=1.2亿
成本太高了⑧
那怎么办呢???????
加入瓶颈层!!!!!!!!
就是我们接下来要说的 Inception 1
2.Inception 1
一样的先看结构!
Iception v1在3 x 3、5 x 5、最大池化层前分别加上了不同数量的1*1的卷积核,达到降低维度的作用
我们还是看 5 x 5 的
输入:28 28 192 采用16个 1 x 1的卷积核卷积 那么 通道减少===》变成16个通道 [28 28 16]
对这个 我们用 5 x 5 的卷积核卷积 ,用32个 。那么可以看出,我们的输出是[28 28 32]
简单来,就是 先缩小 再扩大!!!!!
那么,我们来看看它的计算量:
1x1的卷积输出是28 28 16 ,所以 一共有这么多个数字,每个数字都进行了 1 1 192次运算
所以计算量为 1 x 1 x 192 x 28 x 28 x 32 =240w
同理:
5x5的计算量就是 5 x 5 x 16 x 28 x 28 x 32=1000W
加起来才不过1204W 远远小于上面那个
注意卷积核的个数决定了通道的降维或者是升维!
但是!!!
这个还是有问题!!!
存在不足:
1.深度网络训练和学习困难,问题在于网络训练过程中,每一层的输入在经过前面的训练,在数据分布上都产生了变化,导致网络结构需要不断适应输入数据分布变化。
2.如果前一层的特征图数量很多,有经过5x5这种大尺寸的卷积,带来的计算量也是非常大。从而产生了Inception v2模型
3.Inception 2
Iception v2是在v1的基础上做出改进,主要是:
1.在卷积之后加入==BN(批量标准化)==操作,使每一层的输出都归一化处理,每一层的输出都规范化到一个N(0, 1)的高斯分布,从而增加了模型的鲁棒性,可以以更大的学习速率训练,收敛更快,初始化操作更加随意。
2.为进一步降低参数数量,提升计算速度,该模型使用2个3*3的卷积代替了原本模型中5*5的卷积。