GoogleLeNet Inception V1

文章目录

  • 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组成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Cilium系列-4-Cilium本地路由

系列文章 Cilium 系列文章 前言 在前文中我们提到, cilium install 默认安装后, Cilium 功能启用和禁用情况如下: datapath mode: tunnel: 因为兼容性原因,Cilium 会默认启用 tunnel(基于 vxlan) 的 datapatch 模式,也就是 overlay 网络结…

Python数据分析实战-datafram按某(些)列按值进行排序(附源码和实现效果)

实现功能 Python对datafram按某(些)列进行排序(附源码和实现效果) 实现代码 import pandas as pd# 读取数据 datapd.read_csv(E:\数据杂坛\\UCI Heart Disease Dataset.csv) dfpd.DataFrame(data) print(df.head())# # 按某列的…

【干货分享】如何恢复SOLIDWORKS 零件、装配体和工程图模板?

当我们卸载了SOLIDWORKS或者是购买了一台新笔记本电脑或是丢失了一直在使用的模板时,我们可以通过打开过去的零件、装配体和工程图文件来恢复 SOLIDWORKS 模板。 ▷ 零件模板 打开包含所需自定义属性的上一个部件。 保存零件的副本以避免对原始文件进行意外更改。…

React:从 npx开始

使用 npm 来创建第一个 recat 文件( react-demo 是文件名,可以自定义) npx create-react-app react-demo npx是 npm v5.2 版本新添加的命令,用来简化 npm 中工具包的使用 原始: 全局安装npm i -g create-react-app 2 …

​《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(16)-Charles其他骚操作之大结局​

1.简介 今天就说一些Charles的其他操作、以及抓包跨域的问题和常见的问题如何解决。到此Charles这一系列的文章也要和大家说再见了,其他什么小程序、Android7.0等等的问题可以查看宏哥的Fiddler系列文章,只不过是将Fiddler换成Charles而已。 2.模拟403…

Qt - macOS 安装配置

文章目录 一、关于 QT1.2 Qt的发展史1.3支持的平台1.4 Qt版本1.5 Qt 的优点1.6 成功案例 二、软件安装1、保证已 Xcode 和 Command Line Tools2、下载 QT3、下载 [qtcreator](http://download.qt.io/official_releases/qtcreator/)查看qt版本 三、创建工程Qt 常见用法 四、基础…

83%的企业曾遭受固件攻击,仅29%分配了固件防护预算

近日,微软发布了名为[《Security Signals》的研究报告](https://www.microsoft.com/secured- corepc/assets/downloads/SecuritySignals_ThoughtPaper.pdf)。报告显示, 过去两年中,83%的组织至少遭受了一次固件攻击,而…

第五讲:MySQL中DDL表的修改与删除

1、alter:改变 2、table:表 3、truncate:截断,删节 学习渠道:黑马程序员

excel中的vlookup如何实现根据多个条件查找?

目录 简述问题公式思路通用公式三条件查找公式实例 简述 Excel 中根据一个条件查找非常方便,Excel 提供了内置函数 VLOOKUP。但是实际中往往有多种情形,需要根据多个条件进行查找操作,目前没有现成的内置函数。 本篇介绍 VLOOKPCHOOSE 组合…

利用RLHF优化大模型:提升性能与应用能力

在数据科学不断发展的过程中,大模型在自然语言处理、图像识别、金融预测等各个领域的应用越来越广泛。然而,大模型的训练和优化也面临着越来越多的挑战,例如数据量过大、计算资源不足、超参数调整困难等。传统的机器学习算法往往难以处理这些…

基于whisper和whisperx的语音视频和字幕对齐

环境的安装 创建py310虚拟环境,需要安装Anaconda的Python环境。 Python初学者在不同系统上安装Python的保姆级指引 Win10+Python3.9+GPU版pytorch环境搭建最简流程 Python虚拟环境的安装和使用 还需要提前安装FFmpeg用于音频操作,并添加到环境变量中。 创建一个名称为w…

Kotlin~Proxy代理模式

概念 又称委托模式,充当中介代理的类。 特点:让一个对象控制另一个对象的访问,让代理充当其他事物的接口。 角色介绍 抽象目标类具体目标类代理类 UML 代码实现 按实现分为静态和动态代理 interface PhoneSell {fun sell() }class Main…

4K/8K AI巡检详解:风电巡检领域主动出击的监控厂商

最近,“北方高温”、“厄尔尼诺大烤”等词条频上热搜的背后,为应对气候变化挑战,全球正迎来一场波澜壮阔的绿色低碳转型浪潮。 而在“碳达峰、碳中和”政策背景下,风电行业肩负着重要的责任与使命。根据《中国可再生能源发展报告…

【JavaEE】基于Servlet与MySQL实现一个简易网站

目录 前言 一、实现表白墙的前期准备工作 1、约定前后端交互的接口 1.1、接口一:页面获取当前所有的留言消息 1.2、接口二:提交新消息给服务器 二、前端和后端代码的实现 1、数据的永久化保存 2、小结 前言 之前小编在写前端页面的时候&#x…

SkyWalking链路追踪中span全解

基本概念 在SkyWalking链路追踪中,Span(跨度)是Trace(追踪)的组成部分之一。Span代表一次调用或操作的单个组件,可以是一个方法调用、一个HTTP请求或者其他类型的操作。 每个Span都包含了一些关键的信息&am…

1.前端入门

文章目录 一、基础认知1.1 认识网页:1.2 五大浏览器1.3 Web标准 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、基础认知 1.1 认识网页: 1.网页由哪些部分组成? 文字、图片、音频、视频、超链接。 2.我们…

(五)FLUX中的数据类型

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 5 章 FLUX中的数据类型 5.1 10 个基本数据类型 5.1.1 Boolean (布尔型) 5.1.1.1 …

sql进阶 之case表达式

case表达式 CASE表达式是SQL里非常重要而且使用起来非常便利的技术,我们应该学会用它来描述条件分支。本节将通过行列转换、已有数据重分组(分类)、与约束的结合使用、针对聚合结果的条件分支等例题,来介绍CASE表达式的用法。标红…

JAVA设计模式——23种设计模式详解

一、什么是设计模式🍉 设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目…

MATLAB与ROS联合仿真——ROS环境搭建及相关准备工作(上)

本篇文章主要介绍在安装完ROS后,在进行MATLAB与ROS联合仿真之前,需要进行的一些环境搭建以及准备工作,主要分为 创建ROS工作空间及功能包、必备功能包安装、安装Gazebo11、导入实验功能包至工作空间、安装Visual_Studio_Code(选做)、常用便捷…