zoukankan      html  css  js  c++  java
  • 动手学深度学习 | 含并行连结的网络GoogLeNet/Inception V3 | 25

    GoogLeNet

    虽然现在NiN基本没有被使用,但是GoogLeNet还是被比较多的使用。

    这个网路出来的时候也是吓了大家一跳,就是做到了一个几乎快到100层的卷积层,基本可以认为是第一个超过百层的卷积神经网。虽然不是直接有100层深,但确实卷积个数超过了100。

    NiN严重影响了GoogLeNet的设计,所以我们是先讲的NiN。

    Inception块将input复制了四份,然后进行四路输入。

    每路输入的都只改变通道数量,而不该feature_map的高宽,最后将这四路输出进行合并(就是通道的堆叠)

    上面标注的数字表示通道数。

    但是一个很诡异的事情就是这些数字是怎么来的?作者从来都没有说过这些数字是怎么来的,可能是试出来的吧。

    Inception块的参数数量比直接使用(3*3)(5*5)的参数数量少了很多,原因就是使用了大量的(1*1)卷积来降低通道数量。

    计算量也会下降,因为计算量和参数量是成正比的。

    这里所谓stage就是高宽减半一次。

    这里GoogLeNet和NiN的不同就是没有强求最后GAP后通道数一定要等于类别数,而是通过一个FC,来进行类别分类。

    这里832,1024这些玄学数字... Google有钱,可以去暴力枚举参数,他们机器多,算力多。

    真的是看了Inception后才是真的相信什么叫做炼丹。

    我们前面介绍的V1,但是现在基本不会使用。

    V2是在V1的基础上加入了BN层。

    V3是在V2的基础上,进行了卷积层内部的修改。

    V4在V3的基础上,使用了残差连接。

    Inception V3真的是... 无法解释,大概这就是有钱人的游戏,google应该是每个都尝试了,选出来了效果最好的那种设计。

    虽然Inception V3非常的诡异,但是表现的效果还是不错!基本完胜VGG。

    但是可以看到和其他模型相比,还是没有什么优势。(Inception V3是一个耗费内存较多,运算比较慢,但是精度还算不错的一个网络)

    GoogLeNetV3,V4现在还是经常被使用,因为精度上来了。

    但是一个很大的问题就是GoogLeNet太复杂了,基本上不像是人能够设计出来的感觉,而且完全不知道是怎么来的,这也是GoogLeNet那么不受欢迎的原因。

    代码实现

    GoogLeNet的实现相对来说是比较复杂的...

    QA

    1. Inception中池化层在卷积层前面是不是不太常见?

    其实不是的,可以认为(1*1)卷积是一个全连接层,这个(3*3)的maxpooling还是作用在之前卷积的输出。

    1. (3*3)(5*5)的卷积核也可以降低通道数,为什么要使用(1*1)呢?

    (1*1)卷积核先给降低通道数,比如将256通道降低为96,然后在交给(3*3)(5*5),后面它们要降低或者增加通道数都是可以的,如果不先使用(1*1)进行通道数的降低的话,直接输入这个通道数会让计算量非常大。

    1. 很多超参数都是2的次方,有什么讲究吗?

    只是2的次方在计算机中算的会快一些。如果是100,200这种,在GPU上并行起来可能不会那么方便。

    1. dl中需要修改经典网络的结构吗?

    正常做深度学习的时候先不要去改经典的网络,就直接用,除非你的数据真的和别人不一样。

    像我们课程中,将VGG的通道数除以4,或者像图片你的输入宽高resize一下,这些简单的变化都是可以的。但是这里建议别的还是不要去调整了。

    1. 在CNN中目前最强是哪个网络?

    就是沐神参与的ResNest,在ImageNet上效果可能不是最好的,但是在迁移学习上效果非常非常的好。

    然后这个网络主要的是attention,但是还有使用了很多工作时候积累的trick,这是很多方面作用它的效果才能得到那么好。

    1. (3*3)改成(1*3)(3*1)的好处是什么?

    好处是可以降低你的计算量,会减少1/3的计算量,这是它的好处;坏处就是可能说他的效果不会有那么好。

    1. linear,dense,flatten有什么区别?感觉全是卷积。

    linear和dense都是全连接,你可以使用linear也可以使用dense,就都是一个东西。

    但是flatten不是全连接,flatten就是把一个4-d的tensor变成一个2-d的(batch,tensor),因为全连接的输入必须是一个向量。

    1. 什么调参?

    一般都会先在一个小的数据集上进行...

    没有人会直接上大数据集,同时你可以尝试减少图片的尺寸,或者适当减少模型的通道数之类的,先快速得到一个结果,再慢慢进行调整。

    1. 为什么感觉现在讲的网络通道数越来越多?

    因为现在网路设计和很精巧,相比于AlexNet几个大的卷积层和全连接层叠加。

    但是对于ImageNet这样大的数据集,其实通道数大概在1024左右也是差不多了,再多的话其实容易overfitting。

    但是不是说100w就一定对应1024个通道,这都是实验出来的。

  • 相关阅读:
    001 数电 (1) : 数制和码制
    js页面滚动浮动层智能定位(MooTools)实例页面
    Value  of type java.lang.String cannot be converted to JSONObject 错误解决
    关于线程池的shutdown()方法
    Can't create handler inside thread that has not called Looper.prepare()
    配置 Win7 和 IIS7 以支持WCF
    复制JSON对象
    js页面滚动浮动层智能定位(jQuery)实例页面
    Enum和string的相互转换
    TBCompressor 2.4.2修改版,可对目录中的JS/CSS文件进行压缩
  • 原文地址:https://www.cnblogs.com/Rowry/p/15358065.html
Copyright © 2011-2022 走看看