学更好的别人,
做更好的自己。
——《微卡智享》
本文长度为2748字,预计阅读8分钟
前言
这是Minist训练的第三篇了,本篇主要是把GoogleNet和ResNet的模型写出来做一个测试,再就是train.py里面代码加入了图例显示。
GoogleNet
微卡智享
GoogLeNet是google推出的基于Inception模块的深度神经网络模型,Inception就是把多个卷积或池化操作,放在一起组装成一个网络模块,设计神经网络时以模块为单位去组装整个网络结构,如图:
通过Inception的模块化,针对图像的不同尺寸,使用不同的卷积核进行操作,让网络自己去选择,在网络在训练的过程中通过调节参数自己去选择使用。
根据上面的Inceptiion,直接设置网络结构
直接上源码
在GoogleNet层里面是做了两遍5X5的卷积,池化,ReLU激活,然后调用Inception,最后再做一个全连接完成,接下来我们直接训练看看效果。
上图中可以看到,用GoogleNet的训练,预测率达到了98%了,由于模型的网络结构比较复杂,相应的训练时间也花了29分41秒。
在train.py中加入了训练的图像显示,左边是loss的曲线,右边是预测率的曲线。
ResNet
微卡智享
ResNet是一种残差网络,一般来说,网络越深,特征就会越在学,但随着网络的加深,可能会造成梯度爆炸和梯度消失,从而使得优化效果反而越差,测试数据和训练数据的准确率反而降低了。
ResNet的核心结构图如下:
(ResNet block有两种,一种两层结构,一种三层结构)
接下来我们就实现第一种ResNet block。
从上面两张图可以看出来,ResNet的训练时间要比GoogleNet的训练时间少了一半多,只用了10分零5秒,并且预测率达到了99%多,效果也要比GoogleNet的效果好。
上图中都是train.py中修改过的部分,完整的代码如下:
完