【45】谷歌 Inception 网络简介Inception(1) - 刘通1997

lau1997 2021-08-05 原文


【45】谷歌 Inception 网络简介Inception(1)


谷歌 Inception 网络简介(Inception network motivation)

构建卷积层时,你要决定过滤器的大小究竟是1×1,3×3还是5×5,或者要不要添加池化层。而Inception网络的作用就是代替你来决定,虽然网络架构因此变得更加复杂,但网络表现却非常好,我们来了解一下其中的原理。

例如,这是你28×28×192维度的输入层,Inception网络或Inception层的作用就是代替人工来确定卷积层中的过滤器类型,或者确定是否需要创建卷积层或池化层,我们演示一下。

如果使用1×1卷积,输出结果会是28×28×#(某个值),假设输出为28×28×64,并且这里只有一个层。

如果使用3×3的过滤器,那么输出是28×28×128。然后我们把第二个值堆积到第一个值上,为了匹配维度,我们应用same卷积,输出维度依然是28×28,和输入维度相同,即高度和宽度相同。

或许你会说,我希望提升网络的表现,用5×5过滤器或许会更好,我们不妨试一下,输出变成28×28×32,我们再次使用same卷积,保持维度不变。


或许你不想要卷积层,那就用池化操作,得到一些不同的输出结果,我们把它也堆积起来,这里的池化输出是28×28×32。为了匹配所有维度,我们需要对最大池化使用padding,它是一种特殊的池化形式,因为如果输入的高度和宽度为28×28,则输出的相应维度也是28×28。然后再进行池化,padding不变,步幅为1。

这个操作非常有意思,但我们要继续学习后面的内容,一会再实现这个池化过程。

有了这样的Inception模块,你就可以输入某个量,因为它累加了所有数字,这里的最终输出为32+32+128+64=256。

Inception模块的输入为28×28×192,输出为28×28×256。这就是Inception网络的核心内容,提出者包括Christian Szegedy、刘伟、贾扬清、Pierre Sermanet、Scott Reed、Dragomir Anguelov、Dumitru Erhan、Vincent Vanhoucke和Andrew Rabinovich。

基本思想是Inception网络不需要人为决定使用哪个过滤器或者是否需要池化,而是由网络自行确定这些参数,你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合。

不难发现,我所描述的Inception层有一个问题,就是计算成本,下一张幻灯片,我们就来计算这个5×5过滤器在该模块中的计算成本。

我们把重点集中在前一张幻灯片中的5×5的过滤器,这是一个28×28×192的输入块,执行一个5×5卷积,它有32个过滤器,输出为28×28×32。

前一张幻灯片中,我用一个紫色的细长块表示,这里我用一个看起来更普通的蓝色块表示。我们来计算这个28×28×32输出的计算成本,它有32个过滤器,因为输出有32个通道,每个过滤器大小为5×5×192,输出大小为28×28×32,所以你要计算28×28×32个数字。

对于输出中的每个数字来说,你都需要执行5×5×192次乘法运算,所以乘法运算的总次数为每个输出值所需要执行的乘法运算次数(5×5×192)乘以输出值个数(28×28×32),把这些数相乘结果等于1.2亿(120422400)。即使在现在,用计算机执行1.2亿次乘法运算,成本也是相当高的。下一图会介绍1×1卷积的应用,也就是我们上节课所学的。为了降低计算成本,我们用计算成本除以因子10,结果它从1.2亿减小到原来的十分之一。请记住120这个数字,一会还要和下一页看到的数字做对比。

这里还有另外一种架构,其输入为28×28×192,输出为28×28×32。

其结果是这样的,对于输入层,使用1×1卷积把输入值从192个通道减少到16个通道。然后对这个较小层运行5×5卷积,得到最终输出。请注意,输入和输出的维度依然相同,输入是28×28×192,输出是28×28×32,和上一页的相同。但我们要做的就是把左边这个大的输入层压缩成这个较小的的中间层,它只有16个通道,而不是192个。

有时候这被称为瓶颈层(bottleneck),瓶颈通常是某个对象最小的部分,假如你有这样一个玻璃瓶,这是瓶塞位置,瓶颈就是这个瓶子最小的部分。

同理,瓶颈层也是网络中最小的部分,我们先缩小网络表示,然后再扩大它。

接下来我们看看这个计算成本,应用1×1卷积,过滤器个数为16,每个过滤器大小为1×1×192,这两个维度相匹配(输入通道数与过滤器通道数),28×28×16这个层的计算成本是,输出28×28×192中每个元素都做192次乘法,用1×1×192来表示,相乘结果约等于240万。

那第二个卷积层呢?240万只是第一个卷积层的计算成本,第二个卷积层的计算成本又是多少呢?这是它的输出,28×28×32,对每个输出值应用一个5×5×16维度的过滤器,计算结果为1000万。

所以所需要乘法运算的总次数是这两层的计算成本之和,也就是1204万,与上一图中的值做比较,计算成本从1.2亿下降到了原来的十分之一,即1204万。所需要的加法运算与乘法运算的次数近似相等,所以我只统计了乘法运算的次数。

总结一下,如果你在构建神经网络层的时候,不想决定池化层是使用1×1,3×3还是5×5的过滤器,那么Inception模块就是最好的选择。我们可以应用各种类型的过滤器,只需要把输出连接起来。之后我们讲到计算成本问题,我们学习了如何通过使用1×1卷积来构建瓶颈层,从而大大降低计算成本。

你可能会问,仅仅大幅缩小表示层规模会不会影响神经网络的性能?

事实证明,只要合理构建瓶颈层,你既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算。

这就是Inception模块的主要思想,我们在这总结一下。下个笔记,我们将演示一个完整的Inception网络。

posted on
2020-02-27 21:05 
刘通1997 
阅读(279
评论(0
编辑 
收藏 
举报

 

版权声明:本文为lau1997原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lau1997/p/12374392.html

【45】谷歌 Inception 网络简介Inception(1) - 刘通1997的更多相关文章

  1. busybox下mdev的使用以及mdev.conf的规则配置 – 海王

    busybox下mdev的使用以及mdev.conf的规则配置 http://www.phpfans.net/ […]...

  2. [置顶] 中国象棋程序的设计与实现–楚汉棋兵(高级版)(源码) – you Richer

    [置顶] 中国象棋程序的设计与实现–楚汉棋兵(高级版)(源码) 本篇将正式公布 中国象棋程序–高级版–楚汉棋兵 […]...

  3. Route-map 路径控制 – 侯志清

    Route-map 路径控制 R2配置 interface FastEthernet0/0  ip addre […]...

  4. Maven下载、安装和配置(二) – 王守昌

    Maven下载、安装和配置(二) 前言 在上篇博文【项目管理和构建】——Maven简介(一)中我们了解到mav […]...

  5. jquery 延迟执行方法 – dawn888

    jquery 延迟执行方法 setTimeout方法使用时需注意:  //以下两种方式都行: setTimeo […]...

  6. 企业级系统架构的理解 – HackerVirus

    企业级系统架构的理解 在我们刚开始学习架构的时候,首先会想到分层的概念,分层架构比较经典的是三层架构,那么,什 […]...

  7. Jmeter系列(40)- 详解 Jmeter CLI 模式

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/pol […]...

  8. 左右脑 – 冰碟

    看看你是使用左脑还是右脑… 转载: 这个图片很有意思,花点时间看一看,能看到这个女的一会顺时针转一 […]...

随机推荐

  1. 【Zabbix】在CentOS 7上搭建Zabbix服务,收集Windows客户端计数器性能数据(含过程中遇到的问题解决方法)

    1、环境 1.1、关闭防火墙 命令:systemctl stop firewalld 或者 systemctl […]...

  2. 编程入门先学什么?零基础学什么好

    最近老是有同学问我,编程入门先学什么好呢?零基础学什么才能做出一个属于我自己的网站呢?估计困扰编程新手最多的一 […]...

  3. 微服务网关GateWay

     Zuul网关存在的问题:   性能问题    Zuul1x 版本本质上就是一个同步Servlet,采用多线程 […]...

  4. 霍尔效应电流传感器

    I=P/U当负载变化大时,输出的电流也变化较大,若不加控制超过设计载荷就可能过热损害设备,所以必须要有能检测电 […]...

  5. tensorflow加载embedding模型进行可视化

    1.功能 采用python的gensim模块训练的word2vec模型,然后采用tensorflow读取模型可 […]...

  6. 腾讯工程师带你深入解析 MySQL binlog

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云数据库内核团队  原文标题:【腾讯云CDB […]...

  7. Redis之面试连环炮

    目录 1.简单介绍一下Redis 2.分布式缓存常见的技术选型方案有哪些? 3.Redis和Memcached […]...

  8. Spring Cloud入门教程-Hystrix断路器实现容错和降级

    简介 Spring cloud提供了Hystrix容错库用以在服务不可用时,对配置了断路器的方法实行降级策略, […]...

展开目录

目录导航