CNN Model小记录

参考链接:深度学习常用的Data Set数据集和CNN Model总结

一.LeNet-5   

时间:1986年,参数大约6万

网络结构图:

 LeNet-5网络模型(数字识别,2个卷积层,2个池化层,2个全连接层)

其中:C表示卷积层,S表示池化层,F表示全连接层,下标意为图像大小

卷积层:卷积核大小为5*5,步长stride=1

池化层:max pooling,采样2*2,步长stride=2

第一个卷积层6个filter,第二个卷积层16个filter

第一个全连接FC中有120个神经节点,每个结点有400个输入特征,即W=(120,400),b=(120,1),所以最后得到(120,1)。Z=WX+b,X=(400,1)

扫描二维码关注公众号,回复: 4060067 查看本文章

二.AlexNet

时间:2012年,大约6000万参数

网络结构图:

引入GPU,增加特殊层(LRN层,全称:Local Response Normalization,局部响应归一化层),比LeNet-5更深,用多层小卷积层叠加替换单大卷积层,使用Relu激活函数。

三.ZF

时间:2013年

网络结构图:

四.GoogleNet

时间:2014年,22层

用更多的卷积,更深的层次可以得到更好的结构

一般的卷积层只是一味增加卷积层的深度,但是在单层上卷积核却只有一种,比如对于VGG,单层卷积核只有3x3大小的,这样特征提取的功能可能就比较弱。GoogLenet想的就是能不能增加单层卷积层的宽度,即在单层卷积层上使用不同尺度的卷积核,这样尺寸不同的卷积核就可以提取不同尺寸的特征,单层的特征提取能力增强了

网络结构图:

关联知识:

inception v1

在昂贵的3×3和5×5卷积之前,1×1卷积用来计算降维。除了用来降维之外,它们也包括使用线性修正单元使其两用。

使用1×1卷积降低计算成本,而输入输出不变

eg:

对于原本输入(28,28,192),经过32个(5,5)filter,进行same卷积,得到(28,28,32)

根据卷积计算过程,最终的结果(28,28,32)中每一个数都需要由一个(5,5,192)fileter与对应的输入中数字相乘,则需要28×28×32*5×5×192≈1.2亿次乘法。

而当在中间加一步,变为:

输入(28,28,192),经过16个(1,1)filter,得(28,28,16)。再由32个(5,5)filter,进行same卷积,最终结果还为(28,28,32)。此时需要的乘法次数为:

28×28×16*1×1×192≈240万

28×28×32*5×5×16≈1000万,合计约1240万。

该思路主要通过1×1卷积来降低瓶颈层(bottleneck layer),可大大降低计算成本。

inception v2:

Inception v2的网络在v1的基础上,进行了改进,一方面了加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯,另外一方面学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算;

 

inception v3:

使用3×3的已经很小了,那么更小的2×2呢?2×2虽然能使得参数进一步降低,但是不如另一种方式更加有效,那就是Asymmetric(不对称)方式,即使用1×3和3×1两种来代替3×3的卷积核。这种结构在前几层效果不太好,但对特征图大小为12~20的中间层效果明显。

v3一个最重要的改进是分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算(多余的计算能力可以用来加深网络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,还有值得注意的地方是网络输入从224x224变为了299x299,更加精细设计了35x35/17x17/8x8的模块。

inception v4:

 v4研究了Inception模块结合Residual Connection能不能有改进?发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inception v4模型,能达到与Inception-ResNet v2相媲美的性能。

即结合残差网络ResNet思想。

五.VGG

时间:2014年,版本多,连续conv层多,计算量巨大,VGG-16大约1.38亿参数

VGG-16网络结构图:

六.Deep Residual Learning(Residual Networks,ResNets)

时间:2015年

随着网络结构的加深,带来了两个问题:

一是vanishing/exploding gradient,导致了训练十分难收敛,这类问题能够通过normalized initialization 和intermediate normalization layers解决;

另一个是被称为degradation的退化现象。对合适的深度模型继续增加层数,模型准确率会下滑(不是overfit造成),training error和test error都会很高。

残差块(Residual block)结构图:

也就是从某一层中获取激活,然后迅速反馈给另外一层,甚至是网络的更深层。该过程称为:shotcut或者skip connection

残差网络就是在网络结构中加入残差块。

猜你喜欢

转载自blog.csdn.net/m0_37857151/article/details/83380854
CNN