热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

浅述经典的4种卷积网络之(3)GoogleInceptionNet

这里不对GoogleInceptionNet网络进行详细的原理阐述,只是卷积网络的由来以及网络结构和网络参数进行叙述,然后通过tensorflow进行代码实现,参看《tensorf

这里不对Google Inception Net网络进行详细的原理阐述,只是卷积网络的由来以及网络结构和网络参数进行叙述,然后通过tensorflow进行代码实现,参看《tensorflow实战》。
1.Google Inception Net网络叙述
(1)Inception V1
获得2014年ILSVRC比赛分类项目的冠军,top-5错误率6.7%,22层神经网络。与VGGNet同年出现,以较大优势赢得第一名,Inception V1有22层,比alexnet的8层或者vggnet的19层深,但是计算量只有15亿次浮点运算,同时只有500万参数量,仅为alexnet(6000万)的1/12,却可以达到远剩余alexnet的准确率,非常优秀且实用的。Inception V1降低参数量的目的有两点:
①参数越多,模型越庞大,需要提供的数据就越多
②参数越多,耗费的计算资源就越大
Inception V1参数少但是效果好的原因除了模型层数更深、表达能力更强外,还有两点原因:
①去除了最后的全连接层,用全局平均池化层(即将图片尺寸变为1*1)来取代它。全连接层几乎是占据了alexnet和vggnet的90%的参数量,而且会引起过拟合,去除全连接层可以使模型训练加快,并且减轻了过拟合。用全局平均池化来取代全连接的做法借鉴了network in network论文。
②Inception V1精心设计的Inception model提高了参数利用率,这一部分也借鉴了network in network的思想,Inception model类似一个大网络中的小网络,其结构可以反复堆叠在一起形成大网络。不过Inception V1比NIN更增加了分支网络,NIN主要是级联的卷积层和MLPConv层。一般来说,卷积层要提升表达能力的方法就是增加输出通道数,副作用就是计算量增大和过拟合现象。每一个输出通道对应一个滤波器,共享参数,只能提取一类特征,而NIN的MLPConv则允许输出通道之间组合信息,MLPConv等同于普通卷积再连接一个1*1的卷积和ReLU**函数。
(2)Inception model
浅述经典的4种卷积网络之(3)Google Inception Net
图1 inception moudle结构图
如图1所示,inception moudle共四个分支,四个分支都用到了1*1,来进行低成本跨通道组织信息:
①第一个分支采用了1*1的卷积,这也是NIN提出的一个重要结构。1*1的卷积是一个非常好的结构,它可以跨通道组织信息,提高网络的表达能力,同时可以对输出通道升维和降维。
②第二个分支先使用了1*1卷积,然后连接3*3卷积,相当于进行了两次特征变换。
③第三个分支类似,先是1*1卷积,然后连接5*5卷积。
④第四个分支先是一个3*3最大池化,1*1卷积。
inception moudle的4个分支在最后通过聚合操作合并(在输出通道数这个维度上聚合),包含了3种不同尺寸的卷积和1个最大池化,增加网络对不同尺度的适应性,这一部分和multi-scale的思想类似。
人的神经元的连接是稀疏的,稀疏结构是非常适合神经网络的结构,尤其是对非常大型、非常深的神经网络,可以减轻过拟合并降低计算量,例如卷积神经网络就是稀疏的连接。inception net的主要目标就是找到最优的稀疏结构单元(inception module),论文中提到其稀疏结构基于hebbian原理。
hebbian原理:神经反射活动的池化与重复会导致神经元连接稳定性的持久性,当两个A和B距离很近,并且A参与了对B重复、持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。总结一下即‘一起发射的神经元会在一起’,学习过程中的刺激会使神经元间的突触强度强度增加。
在整个网络中,会有多个堆叠的inception module,我们希望靠后的inception module可以捕捉到更高阶的抽象特征,因此靠后的inception module的卷积的空间集中度应该逐渐降低,这样可以捕捉到更大面积的特征。因此,越靠后的inception module中,3*3和5*5这两个大面积的卷积核的占比(输出通道)应该更多。
(3)Google Inception Net家族
①2014.9的论文 going deeper with convolutions提出了Inception V1,top-5错误率6.67%。
②2015.2的论文 batch normalization:accelerating deep network training by reducing internal covariate提出了Inception V2,top-5错误率4.8%。
③2015.12的论文 rethinking the inception architecture for computer vision提出的Inception V3,top-5错误率3.5%。
④2016.2的论文 inception-v4,inception-resnet and the impact of residual connections on learning 提出的Inception V4,top-5错误率3.08%。
(4)Inception V2
Inception V2
学习了VGGNet,用两个3*3的卷积代替5*5的大卷积,用来降低参数量和减轻过拟合,还提出了batch normalization(BN)。BN是一个有效的正则化方法,可以让大型卷积网络的训练速度加快多倍,同时收敛后的分类正确率也可以提高很多。BN用于神经网络的某层时,会对每一个mini-batch数据的内部进行(normalization)标准化处理,使输出规范到N(0,1)的正态分布,减少了internal covariate shift(内部神经元分布的改变)。BN的论文指出,传统的深度网络在训练时,每一层的输入的分布都在变化,导致训练变得困难,我们只能使用一个很小的学习率解决这个问题。而对于每一层使用BN之后,可有效解决这个问题,学习速率可以增加很多倍,达到之前的准确率的迭代次数只有1/14.训练时间缩短,然后继续训练,达到更高准确率。因为BN某种意义上起到了正则化作用,故可减少或者取消dropout,简化网络结构。同时可去除LRN,彻底对训练样本进行shuffle,减少数据增强过程中对数据的光学畸变。

(5)Inception V3

Inception V3的改进主要有两方面:
①引入了factorization into small convolutions的思想,将一个较大的二维卷积拆分成两个较小的以为卷积,比如将7*7拆分成1*7和7*1卷积,一方面节约参数,加速运算,减少过拟合,同时增加了一层非线性扩展模型表达能力,这种非对称拆分比拆分成几个相同的卷积效果更明显,可以获得更多更丰富的空间特征,增加特征多样性。
浅述经典的4种卷积网络之(3)Google Inception Net
图2 将3*3拆分为1*3和3*1卷积
②Inception V3又花了inception module结构,现在inception module有35*35、17*17和8*8三种不同结构,这些只在网络的后部分出现,前部还是普通的卷积层。Inception V3不仅在inception module中使用分支,还在分支中使用分支(8*8结构中),可以说是network in network in network。
浅述经典的4种卷积网络之(3)Google Inception Net
浅述经典的4种卷积网络之(3)Google Inception Net](https://img-blog.csdn.net/20170929215931271?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHVhbl96aXppemk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
图3 inception V3中的三种结构的inception moudle
下面对于inception V3的网络结构参数进行分析:

layer type conv size/strides input size filter number output size filter type
conv1 3*3*3/2 299*299*3 32 149*149*32 valid
conv2 3*3*32/1 149*149*32 32 147*147*32 valid
conv3 3*3*32/1 147*147*32 64 147*147*64 same
max pooling1 3*3*32/2 147*147*64 64 73*73*64 valid
conv4 3*3*64/1 73*73*64 64 71*71*64 valid
conv5 3*3*80/2 80 71*71*80 192
conv6 3*3*192/1 35*35*192 288 35*35*288 same
inception modules1 3个inception module 35*35*288
inception modules2 5个inception module 17*17*768
inception modules3 3个inception module 8*8*1280
max pooling2 8*8*2048 8*8*2048 2048 1*1*2048
线性 logits 1*1*2048
softmax 分类输出 1*1*1000

(4)inception V4
相比V3结合了为微软的ResNet,在下一篇文章将主要讲解ResNet。
2.Google Inception Net网络tensorflow实现
啦啦啦~后续待进啦啦啦~


推荐阅读
  • 自然语言处理(NLP)——LDA模型:对电商购物评论进行情感分析
    目录一、2020数学建模美赛C题简介需求评价内容提供数据二、解题思路三、LDA简介四、代码实现1.数据预处理1.1剔除无用信息1.1.1剔除掉不需要的列1.1.2找出无效评论并剔除 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • C#实现文件的压缩与解压
    2019独角兽企业重金招聘Python工程师标准一、准备工作1、下载ICSharpCode.SharpZipLib.dll文件2、项目中引用这个dll二、文件压缩与解压共用类 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
author-avatar
1234
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有