赞
踩
Resnet的基本原理
Resnet(残差网络),是基于CNN的一种模型,示意图如下:
如上图所示,传统的CNN网络模型,只有输入x–>F(x)–>relu(F(x)),也就是图中的left部分,而传统的CNN模型在训练的时候,随着网络层数的增加,会出现很难训练的情况(主要是由于梯度爆炸或者梯度消失的问题),由此,华人科学家 何凯明 大神提出了Resnet结构,简单来讲Resnet的结构由上图的left部分 + right部分,最后的输出为relu(F(x)+x),其中right往往可以进行一些例如indentity mapping,或者卷积或者池化等操作,本质上是left与right两个路径之间获取的特征图的融合,而且right部分采取indentity mapping方式的时候,这样能够更好的保留输入的梯度,从而解决(确切的说是大大减缓了)梯度问题,使得训练更深的模型变为了可能。
Resnet优点
相比传统的卷积神经网络如VGG复杂度降低,需要的参数下降
可以做到更深,不会出现梯度弥散的问题
优化简单,分类准确度加深由于使用更深的网络
解决深层次网络的退化问题
实现了不同路径特征图的融合
如上图,假设输入的图片为input为64 * 32 * 32,其中64是特征图的个数,32 * 32是图片的大小,那么经过左图中的left路径,先进行64个卷积核大小为3 * 3 ,stride=1,padding=1的卷积操作,获取的特征图为64 * 32 * 32*,然后经过relu,在经过64个卷积核大小为3 * 3 ,strde=1,padding=1的卷积操作,获取的特征图不变,64 * 32 * 32,所以left=64 * 32 * 32,左图右边支路是个恒等映射,输出的特征图right=64 * 32 * 32,然后进行summation操作,将获得的left与right在维度上进行相加,即所谓的left+right=F(x)+(x)(注意Resnet中left与right必须维度相等才能相加,设计网络时要注意),之后通过relu(left+right),获得融合后的输出。
右图,同理,只是使用了1 * 1的卷积核,可以再次减少参数。
4. pytorch实现
impor
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。