zoukankan      html  css  js  c++  java
  • cs231n spring 2017 lecture9 CNN Architectures

    参考《deeplearning.ai 卷积神经网络 Week 2 听课笔记》。

    1. AlexNet(Krizhevsky et al. 2012),8层网络。

      学会计算每一层的输出的shape:对于卷积层,输出的边长 =(输入的边长 - filter的边长)/ 步长 + 1,输出的通道数等于filter的数量。每个filter的通道数等于输入的通道数。卷积层的参数 = filter的长 * filter的宽 * 输入的通道数 * filter的数量。池化层没有需要学习的参数。

      图中分成两个通道是为了在不同GPU上处理。

      2013年的ZFNet延续了AlexNet的架构(也是8层网络),优化了参数,取得了更好的效果(错误率从16.4%降到11.7%)。

    2. VGGNet(Simonyan and Zisserman, 2014),16~19层网络。

      三个3*3的filter串联等价于一个7*7的filter,用更小的filter的好处是增加了网络的深度,增加了非线性程度,更少的参数。

    3. GoogLeNet(Szegedy et al., 2014)

      Inception module是同时用不同的filter(1*1,3*3,5*5,Pooling),并把结果堆叠起来。这样做的缺点是计算量变大。解决的办法是先用1*1的卷积压缩通道数量(参考《deeplearning.ai 卷积神经网络 Week 2 听课笔记》)。

    4. ResNet(He et al., 2015),152层网络。

      解决了很深的网络难优化的问题。

      对于深度的网络(ResNet-50+),类似GoogLeNet用1*1的卷积层去压缩通道数以提高效率。

    5. 复杂度的比较

    6. 其他一些网络

      Network in Network (NiN)(Lin et al., 2014):启发了GoogLeNet和ResNet的“bottleneck”层(1*1卷积层)。

      Identity Mappings in Deep Residual Networks (He et al., 2016):ResNet的改进。

      Wide Residual Networks (Zagoruyko et al., 2016):认为residuals是很重要的,而不是深度。增加宽度而不是深度,会计算更有效。50层的宽的ResNet比152层的原始的ResNet更好。

      ResNeXt (Xie et al., 2016):也是增加宽度,和Inception module很类似的想法。

      Deep Networks with Stochastic Depth (Huang et al., 2016):为了解决梯度消失的问题,随机地drop掉一些层。在测试阶段使用全部的网络,不drop任何层。

      FractalNet (Larsson et al., 2017):认为residual不是必须的,重要的是浅层到深层的有效传递(transitioning),训练阶段也是随机drop掉一些层,测试阶段不drop任何层。

      Densely Connected Convolutional Networks (Huang et al., 2017):为了解决梯度消失的问题,每一层与其他层更稠密的连接。

      SqueezeNet (Landola et al., 2017):更少的参数,更好的准确度。

    7. 总结

      VGG、GoogLeNet、ResNet被广泛应用,现在已经是集成到各个现成框架。

      ResNet是当今最佳,默认选项。

      趋势是越来越深的网络。

      很多研究集中在设计层与层之间的连接方式,为了改善梯度的传播。

      最新的研究在争论深度和宽度,以及residual的必要性。

  • 相关阅读:
    二叉搜索树和双向链表 --剑指offer
    复杂链表的复制 --剑指offer
    二叉树中和为某一值的路径 --剑指offer
    二叉搜索树的后序遍历序列 --剑指offer
    从上往下打印二叉树 --剑指offer
    栈的压入、弹出序列 --剑指offer
    顺时针打印矩阵 --剑指offer
    树的子结构 --剑指offer
    JSON.toJSONString(joinPoint.getArgs())报错getOutputStream() has already been called for this response
    常用linux命令
  • 原文地址:https://www.cnblogs.com/zonghaochen/p/7979281.html
Copyright © 2011-2022 走看看