Tensorflow实现经典神经网络:AlexNet,VGGNet,GoogleInceptionNet,ResNet(tf实战观后感)

1.AlexNet主要用到新技术点如下:

(1)成功使用ReLU作为RNN激活函数,成果解决了Sigmoid的梯度弥散问题。

(2)训练时使用了Dropout,避免了过拟合。

(3)在CNN中使用重叠的最大池化。提过了补偿比池化核尺寸小,这样池化层输出之间有重叠和覆盖,提高了特征的丰富性。

(4)提出了LRN层,增强了模型的泛化能立。

(5)使用CUDA加速深度卷积网络的训练。

(5)数据增强,随机从256x256图像中截取224x224大小的区域,以及水平翻转,得到(256-224)平方x2=2048倍的数据量,大大减轻了过拟合,提升泛化能力。

2.VGGNet主要用到新技术点如下:

(1)卷积层堆叠,通过2至3个3x3卷积层堆叠来形成5x5和7x7大小的感受野。其中2个3x3的卷积层可以形成5x5大小的感受野,第一参数量更少,比1个7x7的卷积层拥有更少的参数量,只有后者的(3x3x3)/(7x7)=55%的参数量,拥有更多的非线性变化,但是3个卷积层可以进行3此非线性变换,而1个卷积层只能有1次。

(2)训练和预测时的技巧,训练时先训练级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样训练收敛的速度更快.预测时采用Multi-Scale的方法(详情见书P110),同时还再训练时VGGNet也使用了Multi-Scale的方法做数据增强。

(3)得出LRN层作用不大。越深的网络效果越好。1x1的卷积也是很有效的,但是没有3x3的好,大一些的卷积核可以学习更大的空间特征。

3.Google Inception Net:参数量少效果更好,除了因为模型层数更深,表达能立更强,还有两点:去除了最后的全连接层,用全局平均池化层(即将图片尺寸变为1X1)来取代它。全连接层几乎占据了AlexNet和VGGNet百分之90的参数两,所以去了后不仅减少了参数,而且减轻了过拟合。而是Inception Module提高了参数的利用效率。

主要用到的新技术点如下:

(1)Factorization into small convolution的思想,很有效,可以降低参数量,减轻过拟合,增加网络非线性的表达能力。如:将7x7卷积拆成1x7卷积和7x1卷积,比拆成3个3x3卷积更节约参数,同时比7x7卷积多了一层非线性扩展模型表达能力。

(2)InceptionModule的结构,用多个分支提取不同抽象成都的高阶特征的思路很有效,可以丰富网络的表达能力。这些Inception Module的结构只在网络的后部出现,前面还是普通的卷积层。

(3)卷积网络从输入到输出,应该让图片尺寸逐渐减小,输出通道数逐渐增加,即让空间结构简化,将空间信息转化为高阶抽象的特征信息。

(4)去除了最后的全连接层,用1x1卷积来取代,这样大大减少了参数两,并且减轻了过拟合。

你可能感兴趣的:(tensorflow)