卷积神经网络的一些经典网络2(Inception)
在架构内容设计方面,其中一个比较有帮助的想法是使用1x1卷积。1x1卷积能做什么?
对于6x6x1的通道的图片来说,1x1卷积效果不佳,如果是一张6x6x32的图片,那么使用1x1卷积核进行卷积效果更好。
1x1卷积所实现的功能是,遍历36(6x6)个单元,计算左图中32个数字和卷积核中32个数字的乘积(element wise),然后应用于ReLU非线性函数。
这种方法称为1x1卷积,有时候也被称为Network in Network
我们可以用池化层压缩输入的高度与宽度,而1x1卷积可以改变输入的通道数。
每个卷积核的大小是1x1x192(卷积核的通道数与输入层的通道数一致),总共32个卷积核
1x1卷积作用:
1) 改变输入的通道数
2) 为网络添加非线性函数(卷积之后会经过ReLU等非线性激活函数),使得网络可以学习更复杂的函数
3) 若减少输入通道数,可以减少参数数量
Inception网络
构建卷积层时,你要决定过滤器的大小究竟是1x3,3x3或者5x5,或者要不要添加池化层。而Inception网络的作用就是代替你做决定,虽然网络变得更大更复杂,但是网络的表现却非常好。
Inception的作用是,代替人工来确定卷积层中过滤器的类型,或者确定是否需要创建卷积层或池化层。
下图中,如果使用1x1卷积,那么输出为28x28x64;如果使用3x3的卷积核,那么输出是28x28x128,然后把第二个堆积到第一个值上,为了匹配维度,我们在做3x3卷积时使用的padding应该使用same;然后再使用5x5卷积核,仍然将结果堆叠到前面两个值中;也有可能你不想要卷积层,那就用池化层,得到一些不同的输出结果,我们也把它堆叠起来,这里的池化输出是28x28x32,为了匹配维度,我们需要对最大池化使用padding=same,stride=1。叠加之后的结果是32+32+128+64=256通道。即Inception模块的输入数28x28x192,输出是28x28x256,这就是Inception网络的核心内容。
基本思想是Inception网络不需要人为决定使用哪个fliter,或者是否需要池化,而是由网络自行确定(学习)这些参数,自行学习是否使用这些fliter或者池化。
我们把重点集中在5x5卷积核中。我们现在计算一下5x5的计算成本。由于输出大小是28x28x32,所以要计算28x28x32个数字,对于每个数字来说,都要执行5x5x192次乘法运算,所以乘法运算的总次数为28x28x32 x 5x5x192 ≈1.2亿,这个计算成本是非常高的。
先使用1x1卷积把输入值从192通道减少到16个通道,然后对这个较小层,运行5x5卷积,得到最终输出。这种方法,输入输出的维度与上面的只用5x5卷积相同。但我们要做的就是把左边的这个大的输入层压缩成这个较小的中间层,它只有16个通道,而不是192个通道,这个有时候被称为瓶颈层(bottleneck layer),瓶颈通常是某个对象最小的部分。
我们现在来看看这个计算成本。应用1x1卷积,卷积核个数为16个,每个卷积核的大小为1x1x192,在28x28x16这个层的计算成本是,输出28x28x16中的每个元素都做192(1x1x192)次乘法,即28x28x16x192≈240万;对于第二个卷积层,它的输出是28x28x32,对于每个输出值,都应用一个5x5x16维度的卷积核,即28x28x32x5x5x16=1000万;两次卷积运算总共所需的次数是240万+1000万=1240万,与上面只用5x5卷积运算的相比,计算成本从1.2亿降到了约原来的十分之一,即1240万;由于所需的加法运算与乘法次数近似相等,故只统计了乘法运算的次数。
总结来说,如果你在构建神经网络层的时候,不想决定使用1x1或3x3或5x5卷积核或池化层时,那么Inception模块就是最好的选择,我们可以应用各种类型的卷积核或者池化层,只需把它们的输出连接起来就行。而使用1x1卷积来构建bottleneck layer,可以大大降低计算成本。事实证明,只要合理构建bottleneck layer,我们既可以显著缩小表示层的规模,又不会降低网络性能。
Inception模块如下图所示:
需要说明的有:
1)在使用3x3和5x5卷积时,先进行1x1卷积,来缩小输入的通道数,使得可以减少计算量。
2)在使用Max Pool时,设置的参数是3x3,padding=same,stride=1,此时输出大小与输入大小相同,都是28x28x192,为了减少通道数,我们在其后面再加一个1x1卷积,使得缩小到28x28x32,这样避免了最后输出时池化层占据了过多的通道。
3)最后将每个模块(1x1卷积、3x3卷积、5x5卷积和最大池化)的结果连接到一起
下图是Inception网络(称为GoogLeNet)的结果,可以看出,网络其实就是Inception模块的组合,其中有些Inception模块中间的最大池化模块的作用是改变输入的宽度和高度。另外论文中,网络还有一些分支,这些分支所做的就是通过隐藏层来做出预测,它确保了即使是隐藏单元和中间层,也参与了特征计算,它们也能预测出图片的分类,它们在Inception网络中起到起到一种调整的效果,并能防止网络发生过拟合
内容主要来自与:
Andrew Ng的卷积神经网络课程
卷积神经网络的一些经典网络2(Inception)的更多相关文章
- 卷积神经网络的一些经典网络(Lenet,AlexNet,VGG16,ResNet)
LeNet – 5网络 网络结构为: 输入图像是:32x32x1的灰度图像 卷积核:5x5,stride=1 得到Conv1:28x28x6 池化层:2x2,stride=2 (池化之后再经过激活函数 ...
- [DeeplearningAI笔记]卷积神经网络2.2经典网络
4.2深度卷积网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 [LeNet]--Lécun Y, Bottou L, Bengio Y, et al. Gradient-bas ...
- CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题,Highway NetWork 则允许保留一定比例的原始输入 x。(这种思想在inception模型也有,例如卷积是concat并行,而不是串行)这样前面一层的信息,有一定比例可以不经过矩阵乘法和非线性变换,直接传输到下一层,仿佛一条信息高速公路,因此得名Highway Network
from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anac ...
- 经典卷积神经网络的学习(三)—— Inception Net
Google Inception Net 首次出现在 ILSVRC 2014 的比赛中(和 VGGNet 同年),就以较大优势拔得头筹.那届比赛中的 Inception Net 一般被称为 Incep ...
- 经典卷积神经网络的学习(二)—— VGGNet
1. 简介 VGGNet 是牛津大学计算机视觉组(Visual Geometry Group)和 Google DeepMind 公司的研究员一起研发的深度卷积神经网络,其主要探索了卷积神经网络的深度 ...
- 经典卷积神经网络算法(1):LeNet-5
.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...
- CS231n课程笔记翻译9:卷积神经网络笔记
译者注:本文翻译自斯坦福CS231n课程笔记ConvNet notes,由课程教师Andrej Karpathy授权进行翻译.本篇教程由杜客和猴子翻译完成,堃堃和李艺颖进行校对修改. 原文如下 内容列 ...
- 【cs231n】卷积神经网络
较好的讲解博客: 卷积神经网络基础 深度卷积模型 目标检测 人脸识别与神经风格迁移 译者注:本文翻译自斯坦福CS231n课程笔记ConvNet notes,由课程教师Andrej Karpathy授权 ...
- 深度学习:Keras入门(二)之卷积神经网络(CNN)
说明:这篇文章需要有一些相关的基础知识,否则看起来可能比较吃力. 1.卷积与神经元 1.1 什么是卷积? 简单来说,卷积(或内积)就是一种先把对应位置相乘然后再把结果相加的运算.(具体含义或者数学公式 ...
随机推荐
- Java生成图片验证码
在日常我们在登录或者注册的时候,网页上会出现验证码让我们填写,其实利用jdk提供给我们的工具类完全可以模拟出来一个生成验证码图片的功能. package util; import javax.imag ...
- json字符串对象内嵌json对象
有时候需要在json的key:value字符串对象中再嵌入一个json对象,如果需要把如下的json对象作为字符串嵌入到json字符串对象中: { "type": 2, " ...
- Axis1.4之定制发布服务
将axis1.4_home\webapps目录下的axis文件夹拷贝到tomcat_home\webapps目录下.然后在tomcat_home\webapps\axis\WEB-INF\lib下添加 ...
- Konckout第三个实例:循环绑定 -- table列表数据的填充
传统js:拼接字符串,再写入指定标签中 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...
- Vue探索历程(一)
使用vue.js原文介绍:Vue.js是一个构建数据驱动的web界面库.Vue.js的目标是通过尽可能简单的API实现响应式数据绑定和组合的视图组件.vue.js上手非常简单,先看看几个例子: 例一: ...
- 第1次作业:我与我的IT梦
第一部分:结缘计算机 1.1最美的风景,一直在路上 说实话以前没有想过自己将学习计算机这个专业,在大二之前,我还是教师教育学院的一名师范生,机缘巧合,赶上了学校允许师范专业的同学转到非师范专业,于是, ...
- Bate敏捷冲刺每日报告--day2
1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285) Git链接:https://github.com/WHUSE2017/C-team 2 ...
- iOS开发-OC分支结构
BOOL类型 返回值:真:YES 假:NO BOOL数据类型占一个字节的内存空间,占位符为%d. 计算机在识别时,YES就替换成1,NO就替换成0. bool是C语言中的布尔类型,返回值为true ...
- 《高级软件测试》11.16.Jira使用说明的撰写和操作视频的录制
今日任务完成情况如下: 小王:完成了测试管理工具jira的使用手册中,基本情况介绍.下载安装部分的撰写工作:小高:参考官方手册,结合自己的实际使用体会,对jira的基本组成及其工作流程进行了介绍:小陈 ...
- js:防抖动与节流
http://blog.csdn.net/crystal6918/article/details/62236730