深度学习之 11 残差网络的实现

本文是接着上一篇

目录

残差网络

1 堆叠多层卷积

 2 残差网络结构:用来解决深层网络训练难度过大的问题

 ◼  残差网络的实现

  ◼  残差模型实验结果

 ◼  残差模型与同等深度卷积的对比


残差网络

堆叠多层卷积

理论上 ,深层的网络效果不会比浅层网络差, 因为深层网络的前几层理论可以学习到一个
入等于输出的映射 ,然后后几层 等于浅层网络 , 则效果至少相同。
层数越深,性能反而越差。 反向传播路径太长, 训练难度 增加。
右侧的实验结果表明实际上 深层的网络效果反而更差 ,且训练集的效果也很差, 说明不是过拟合。 

深度学习之 11 残差网络的实现_第1张图片

 

 2 残差网络结构:用来解决深层网络训练难度过大的问题

加入残差之后,我们只需要将第二次卷积的结果和原始的输入两者加起来,然后带入一个激活函数,这样的话,我们的残差网络结构就可以实现了

深度学习之 11 残差网络的实现_第2张图片

 ◼  残差网络的实现

  • 若卷积后的结果与输入X的shape不同, 则不能直接相加;
  • 当步长不为1,图片大小发生变化 (padding不随步长改变的情况);
  • 当通道数与输入通道不同,图片通道数发生变化;
  • 使用一个1x1的卷积核来改变X的shape形状,使得能与卷积后的结果shape相匹配;

深度学习之 11 残差网络的实现_第3张图片

  ◼  残差模型实验结果

  • 在训练集上Loss持续下降,准确率持续上升,说明模型有一定的学习能力;
  • 在测试集上的效果较差,且波动明显,可能是lr过大,或者模型泛化能力差;
  • 由于当前卷积只有三层,只是残差操作的一个演示,所以效果并不理想,实际上在浅层网络上一般也不直接使用残差网络;

深度学习之 11 残差网络的实现_第4张图片

在设计网络进行实验的过程中,如果发现网络比较深,那么可以考虑加入残差网络试试效果会不会好一点。

  • 模型在训练集上持续训练损失最终降到接近0,准确率也达到了100%,说明模型的容量是足够的;
  • 在测试集上,Loss在第50轮附近持续上升,而此时训练集的Loss还在持续下降,说明发生了过拟合现象;
  • 最终在此参数下ResNet-18在测试集上能达到的平均准确率为86.85%;

深度学习之 11 残差网络的实现_第5张图片 

 ◼  残差模型与同等深度卷积的对比

  • 卷积为红色绿色曲线,残差为黄色蓝色曲线
  • 可以看到在深层模型下,无论是Loss还是准确率,普通卷积的曲线(红色)比残差的曲
线(黄色)在训练后期的波动更大,说明残差网络的加入确实可以帮助模型更好的训练

深度学习之 11 残差网络的实现_第6张图片

 

你可能感兴趣的:(#,深度学习,python,深度学习,cnn,人工智能,神经网络)