GoogleLeNet Inception V1

news2024/11/26 18:46:55

文章目录

  • Inception V1
    • Inception Module
      • native version
      • Inception module with dimensionality reduction
      • 1 * 1网络的降维说明
    • 多个Softmax的输出
    • 整体结构

GoogleLeNet主要是把深度扩充到了22层,能增加网络深度而不用担心训练精度和梯度消失问题。
总共是提出了4个版本,从V1 - V4.

Inception V1

Inception Module

V1的版本是在论文Going deeper with Convolutions中提出的,最主要的内容就是提出了一个称作Inception的结构,这个结构在整个网络中重复出现,组成了22层网络。
这个结构如图:
总共有两个版本。

native version

首先说说这个结构能干啥,或者说为什么要在网络中引入这个结构,对整个网络有什么帮助。

  • 论文上的原话是:The main idea of the Inception architecture is to consider how an optimal local sparse structure of a convolutional vision network can be approximated and covered by readily available dense components。也就是说要把稀疏的结构去重新设计一下,去模拟和近似稠密结构的性能。因为现在的计算硬件都是针对与稠密结构来设计的。我自己对这个稀疏和稠密的理解是:因为需要多尺度数据,所以有1 * 1的,3 * 3等不同的卷积核,挨个计算的话,就会浪费计算资源。这里的dense就是把这些卷积核全部卷积一遍之后放在一起,然后再进行计算。
  • 简单的来说,我理解这个结构起到了两个作用,第一是综合了多尺度或者说多视野下不同的特征图(通过不同的感受野卷积核)。第二是将sparse structure调整为dense components。增加计算的效率。
  • 那么这个结构做了什么事情呢:(a)图中的各个尺寸的卷积核对前一层的输出进行计算,再加上一个合并的操作(也就是把每个卷积核的操作全部叠在一起)。我这里懒得画图了,比如说1 * 1的卷积核有32个通道,那么1 * 1处理后的通道就是32个通道,3 * 3的有64个通道,5 * 5的有128个通道,直接叠加就行,所以需要调整stride和padding使得这些不同感受野的featrue map尺寸一样,可以直接叠加。然后把这个合并后的featrue map再进入这一层的新的卷积操作(Filter concalenation)

Inception module with dimensionality reduction

这个与native version相比,增加了1 * 1的卷积核做降维的操作,减少参数量和计算量,降低训练和推理的难度。
原文中的描述为:One big problem with the above modules, at least in this native form, is that even a modest number of 5×5 convolutions can be prohibitively expensive on top of a convolutional layer with a large number of filters. This problem becomes even more pronounced once pooling units are added to the mix: the number of output filters equals to the number of filters in the previous stage。
我理解就是说计算量大,所以升级版本的就是用了几个1 * 1来做降维。卷积是先降维再卷积,pooling是先池化再做降维。

1 * 1网络的降维说明

1 * 1的卷积层称作Network in Network,可以用于模型的降维,比如一个输出为100 * 100 * 128的featrue map,如果下一层的通道数为256的话,也就是尺寸就是 100 * 100 * 256的话,如果中间的卷积层使用 5 * 5感受野的卷积核,那么参数个数是 128 * 5 * 5 * 256个参数。
上面这个过程可以通过一个1 * 1来进行降维,比如先降低到32个通道数,也就是先通过一个 1 * 1 * 32的卷积核把100 * 100 * 128降低到 100 * 100 * 32,然后再通过一个100 * 100 * 256的卷积核计算上去,那么这里的大小是:32 * 100 * 100 * 256。总参数就是128 * 1 * 1 * 32 + 100 * 100 * 256,比上面的要少一些。
至于为什么不用一个3 * 3 * 32来降维,我理解是这里不需要再次提取特征,所以直接用1 * 1的是比较好的。

多个Softmax的输出

在整个GoogleLeNet中,网络结构设计了3个输出项,这是为了在训练过程中可以在不同的网络深度的时候计算损失值和做反向权重计算。因为如果太深了,很有可能就会出现梯度消失的现象。
辅助分类器:为了避免梯度消失,网络额外增加2个辅助的softmax用于向前传导梯度(辅助分类器)。辅助分类器是将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中,这样就相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化,对于整个网络的训练很有裨益,实际测试时会去掉这两个额外的softmax
论文原文:The strong performance of shallower networks on this task suggests that the features produced by the layers in the middle of the network should be very discriminative. By adding auxiliary classifiers connected to these intermediate layers, discrimination in the lower stages in the classifier was expected.This was thought to combat the vanishing gradient problem while providing regularization。These classifiers take the form of smaller convolutional networks put on top of the output of the Inception (4a) and (4d) modules. During training, their loss gets added to the total loss of the network with a discount weight (the losses of the auxiliary classifiers were weighted by 0.3),在4(a)和4(d)的两个位置增加了两个输出,在训练的时候计算了0.3的权重(反向传播的过程中的权重计算),在推理的时候就不用,起到了0.5个百分点的作用。
我的理解是担心如果网络太深,在训练的时候反向传播会出现梯度弥散,也就是梯度变成0的情况,参数无法收敛,在低层次的网络就计算损失和开始梯度计算和传播,就会减少这种情况的发生。

整体结构

除了前面和后面加了一些必要的层进行预处理,基本上就是由Inception module组成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/784757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【stm32L152】段码屏驱动注解、MX_LCD_Init()初始化失败的解决方法

文章目录 断码屏驱动补充MX_LCD_Init()驱动初始化失败 断码屏驱动补充 已经有大神写过较详细的教程:https://blog.csdn.net/CSDN_Gao_16/article/details/115463499,但这篇博文仍然比较抽象,我看了好多遍才看明白-_-||,为了节省和…

金融中的数学:贝叶斯公式

1.贝叶斯定理 贝叶斯定理是概率论中的一项重要定理,用于在已知某一事件的条件下,求另一事件发生的概率。它是根据条件概率推导出来的,得名于英国数学家托马斯贝叶斯。 贝叶斯定理可以表示为: 这个式子就是贝叶斯公式&#xff0c…

LabVIEW使用自定义模板和示例项目来开发LabVIEW项目

LabVIEW使用自定义模板和示例项目来开发LabVIEW项目 创建项目时,LabVIEW将显示“创建项目”对话框,以帮助您选择模板或示例项目来作为开发起点。如果要使用您创建的项目作为自定义模板和示例项目,您必须将每个项目的源文件和元数据添加到相应…

算法与数据结构(四)--队列

一.队列的基本概念 队列是另一种特殊的表,这种表只在表首(也称为队首)进行删除操作,只在表尾进行插入操作。队列的修改是按先进先出的规则进行的,所以队列又称为先进先出表,First In First Out&#xff0c…

高温介电参数测试

高温介电参数测试 在新材料科研领域,高温介电参数的测量是众多高校和研究所经常会面临的问题。精科声学所事业部电子和专业的高温介电系统集成商合作,使用 JKZC-YDZK03A型高温压电阻抗综合分析仪进行配套系统集成,满足客户高温介电测量和曲线…

什么是 web3?

在百度搜索引擎输入 “Web3”、“大厂”。跳出来基本都是这样的标题. 以及如今的互联网行业 “哀鸿遍野”,不仅内卷,还裁员。然后掀起一阵风,猛吹 Web3 的好,数据回归用户……最后再 “威逼利诱” 一下,Web3 就是 20 年…

【业务功能篇50】ObjectMapper-将java对象转为json字符串

ObjectMapper可以实现Java对象和json字符串间互相转换,我们经常用到的是它的Java对象转json字符串功能。 这里目的是 Java对象 json字符串相互转换 api 【json字符串转为Java对象:readValue(json字符串,类.class)】【Java对象转为json字符串&#xff1a…

读kafka生产端源码,窥kafka设计之道(下)

背景 在上一篇文章《读kafka生产端源码,窥kafka设计之道(上)》 留下了kafka设计上比较优秀的一个点;内存的循环使用。本篇文章准备盘盘它。 好奇 为什么 kafka减少发送消息时向JVM频繁申请内存,就可以降低JVM GC的执…

idea 设置了 vm options后无法启动

今天想扩展ideaj的JVM 设置了 vm options后无法启动 找了很久,重新卸载后安装也没有用 后面直接打开idea的bat文件 找到自己idea使用的.vmoptions文件,我是因为之前idea有缓存,一直用的我修改的文件,后面删了就可以启动了

看了我项目中的商品功能设计,同事也开始悄悄模仿了...

商品功能作为电商系统的核心功能,它的设计可谓是非常重要的。就算不是电商系统中,只要是涉及到需要交易物品的项目,商品功能都具有很好的参考价值。今天就以mall项目中的商品功能为例,来聊聊商品功能的设计与实现。 mall项目简介 …

前端实习第一周周记

第一天 第一天来的时候,十点左右就开始跑代码了,公司发了电脑,但由于自己的电脑环境比较齐全,所以就先用自己的电脑跑的代码。 一共是两个项目,一个pc类似于管理系统,还有一个是微信小程序。 拉代码的过…

3DVR全景旅游,最新数字化智慧文旅

导语: 随着科技的飞速发展,3DVR全景旅游正以其独特的特点和无限的优势,成为当今智慧文旅的领航者。穿戴上VR设备,只需一个轻轻的点击,你将被带入一个全新的数字世界,领略美景、探索奇迹。让我们一起深入了…

el-Cascader 中div上绑定keyDown事件

keydown,keyup,keypress 事件默认是给页面上可以聚焦的元素绑定键盘事件,例如input输入框,点击输入框即代表聚焦在该元素上。那么想要给div或者其他不能聚焦的元素上使用键盘事件怎么处理呢?这里用到tabindex属性。 …

Idea maven窗口 展示不分级 maven层级混乱

1. 正在写分布式im 开源项目:nami-im: 分布式im, 集群 zookeeper netty kafka nacos rpc主要为gate(长连接服务) logic (业务) lsb (负载均衡)store(存储) - Gitee.com …

redis - 学习笔记

一、NOSQL 1、概述 泛指非关系型数据库 关系型数据库:表格、行、列 2、特点 方便拓展大数据量,高性能(1s写8w次,读取11w,NOSQL的缓存记录级,是一种细粒度的缓存,性能比较高)数据…

网安第二天笔记

ssh 22端口 账号密码登陆、证书登录 smtp 25端口 邮件协议 DNS 53 DHCP 67 68端口 四个包 1.DHCP服务器:服务器管理IP地址池和配置参数 2.客户端请求:发送DHCP广播请求,discover消息 3.DHCP服务器回应:收到discover会回复offer…

Vue2.x和Vue3.x面试常问知识点-面试题

SPA单页面的理解,它的优缺点分别是什么? 是什么 SPA( single page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和 CSS。 一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转 而…

数据结构与算法——链栈及基本操作(包含入栈和出栈)详解

链栈,即用链表实现栈存储结构。 链栈的实现思路同顺序栈类似,顺序栈是将数顺序表(数组)的一端作为栈底,另一端为栈顶;链栈也如此,通常我们将链表的头部作为栈顶,尾部作为栈底&#…

C语言程序设计——文件操作

一、文件的打开和关闭 1. 文件指针 每个被使用的文件,都会在内存中开辟一个相应的文件信息区,用来存储文件的相关信息(文件名、文件状态、文件位置……)。 这些信息是保存在一个结构体变量中,该结构体类似是由系统声明…

选择优秀的敏捷项目管理工具:指南与考虑因素!

如何选择优秀的敏捷项目管理工具?敏捷项目管理工具是用于管理和执行敏捷项目的任何工具。在最基本的形式中,白板和便签可以被认为是敏捷管理工具。敏捷工具和其他项目管理工具之间的主要区别在于它们处理敏捷框架的能力,例如看板和Scrum。 换句话说&…