GooleNet神经网络介绍

一、简介

GoogleNet,也称为GoogLeNet,是谷歌工程师设计的一种深度神经网络结构,它在2014年的ImageNet图像识别挑战赛中取得了冠军。该神经网络的设计特点主要体现在其深度和宽度上,通过引入名为Inception的核心子网络结构,使得网络能够在多个尺度上提取特征,从而增强了其预测能力。

AlexNet与VGG都只有一个输出层

GoogleNet有三个输出层(其中两个为辅助分类器)

二、inception结构

初始结构

之前的网络,比如AlexNet和VGG都是串行结构:将卷积层、最大池化下采样和全连接层连接起来。

inception结构所使用的是并行结构:在上一层输出之后,将得到的特征矩阵同时输入到4个分支中进行处理,处理之后,将我们所得到的四个分支的特征矩阵按深度进行拼接得到输出特征矩阵 。

第一个分支是 1x1 大小的卷积核

第二个分支是 3x3 大小的卷积核

第三个分支是 5x5 大小的卷积核

第四个分支是 3x3 大小的池化核的最大池化下采样 

通过这四个分支,得到不同尺度的特征矩阵。

ps:每个分支所得的特征矩阵高和宽必须相同,否则无法沿深度方向进行拼接。

降维的inception结构

图中三个黄色方框的 1x1 卷积核起到降维的作用。

具体的降维原理 

1、初始通道为512,使用64个 5x5 的卷积核进行卷积。

所需要参数计算公式:卷积核尺寸 x 输入特征矩阵的深度 x 卷积核的个数

第一种情况所需要的参数是 819200,非常大的一个数值。

2、初始通道为512,使用24个 1x1 的卷积核进行卷积,再使用64个 5x5 的卷积核进行卷积。

先使用24个 1x1 的卷积核进行卷积对输入特征矩阵进行降维,因为特征矩阵的深度是由卷积核的个数决定的, 所以会将512深度变为24深度,再进行计算所需要的参数个数。

将两部分使用卷积核的需要参数相加,即为全部所需要的参数,一共50688。

很明显,通过使用 1x1 的卷积核进行降维之后,所需要的参数大大减少。

降维的目的就是为了减少输入特征矩阵的深度,从而减少卷积参数,减少计算量。

 三、辅助分类器

具体实现

1、池化层

第一层是一个平均池化下采样:池化核 5x5, 步距为3,

第一个辅助分类器来自于 inception(4a) 的输出 14 x 14 x 512,第二个辅助分类器来自于 inception(4e) 的输出 14 x 14 x 528。

根据矩阵尺寸大小计算公式 out = (14 - 5 + 0) / 3 + 1,

所以第一个辅助分类器的输出为 4 x 4 x 512

第二个辅助分类器的输出为 4 x 4 x 528。(池化不改变特征矩阵的深度)

2、卷积降维

采用128个卷积核大小为 1x1 的卷积层进行卷积处理,目的是为了降低维度,并且使用了relu激活函数。

3、全连接层

采用节点为1024的全连接层,使用relu激活函数。

全连接层与全连接层之间使用dropout函数,以 70% 的比例随机失活神经元。

4、输出

输出层的节点个数对应数据集的类别个数, 再通过softmax激活函数得到概率分布。

图示说明

第一个辅助分类器来自于 inception(4a)

第二个辅助分类器来自于 inception(4e)

 

四、参数表格

第一列:一系列层的名称

第二列:卷积核或者是池化核的参数大小       

第三列:经过计算后的输出的特征矩阵的大小

辅助分类器中的参数

 # 1 x 1 :辅助分类器中1 x 1 卷积核的个数

#  3 x 3 reduce :在 3 x 3卷积前 1x1 卷积降维处理的个数

#  3 x 3 :辅助分类器中3 x 3 卷积核的个数

#  5 x 5 reduce :在 5 x 5卷积前 1x1 卷积降维处理的个数

#  5 x 5 : 辅助分类器中5 x 5 卷积核的个数

#  pool proj :在最大池化后进行的 1x1 卷积降维处理的个数

大家可以在网上找GoogleNet整个神经网络的图片,再结合那一整张参数列表帮助自己更好的理解整个GoogleNet神经网络。 

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Machine Learning机器学习之数据可视化

目录 前言 一、 数据预处理与清洗 二、常见可视化技术 三、可视化工具和平台 博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者…

electron+VUE Browserwindow与webview通信

仅做记录 前言: electronVUEVITE框架,用的是VUE3.0 主进程定义:用于接收webview发送的消息 ipcMain.on(MyWebviewMessage, (event, message) > {logger.info(收到webmsg message)//转发给渲染进程}) porelaod/webPreload.js定义 cons…

深圳区块链交易所app系统开发,撮合交易系统开发

随着区块链技术的迅速发展和数字资产市场的蓬勃发展,区块链交易所成为了数字资产交易的核心场所之一。在这个快速发展的领域中,区块链交易所App系统的开发和撮合交易系统的建设至关重要。本文将探讨区块链交易所App系统开发及撮合交易系统的重要性&#…

【Spring源码】WebSocket做推送动作的底层实例

一、前瞻 Ok,开始我们今天的对Spring的【模块阅读】。 那就挑Web里的WebSocket模块,先思考下本次阅读的阅读线索: WebSocket在Spring里起到什么作用这个模块采用了什么设计模式我们都知道WebSocket可以主动推送消息给用户,那做推…

大家快来听,分享一个寄快递省钱赚钱的方法哦!

大家再寄快递的时候,会有很多种方法来供我们选择,可以直接去驿站寄快递,但是这样是不是想的略微麻烦了,可以在官网上下单,快递员上门取件,但是价格也是不便宜的吧,如果是公司一下子大批量的寄件…

Linux系统常用命令

Linux系统常用命令 文章目录 Linux系统常用命令一、系统管理类二、文件与目录管理类|三、文件与目录管理类||四、网络管理类五、磁盘管理类六、Oracle常用命令七、QData常用命令 一、系统管理类 二、文件与目录管理类| 三、文件与目录管理类|| 四、网络管理类 五、磁盘管理类 六…

量化交易入门(二十八)什么是布林带,量化中怎么使用

什么叫布林带 布林带(Bollinger Bands)是一种常用的技术分析指标,由约翰布林(John Bollinger)于20世纪80年代开发。它由三条线组成:中轨(通常为20日移动平均线)、上轨(中…

类的成员之三:构造器(Constructor)

类的成员之一:成员变量 (field) 类的成员之二:方法 (method) 我们 new 完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻 烦了。我们能不能在new 对象时,直接…

二维随机变量的条件分布-已知X概率密度,X条件下的Y概率密度求解y的概率密度

问题&#xff1a;设数X在区间(0,1)上随机地取值,当观察到Xx(0<x<1)时,数Y在区间(x,1)上随机地取值.求Y的概率密度f(y)&#xff1f; 求解&#xff1a; 首先&#xff0c;数X在区间(0,1)上均匀分布&#xff0c;因此其概率密度函数fX​(x)为&#xff1a; fX​(x)1 0<…

【探索Linux】—— 强大的命令行工具 P.31(守护进程)

阅读导航 引言一、守护进程简介1. 概念2. 特点 二、用C创建守护进程⭕代码✅主要步骤 温馨提示 引言 当谈到计算机系统中运行的特殊进程时&#xff0c;守护进程&#xff08;daemon&#xff09;无疑是一个备受关注的话题。作为在后台默默运行并提供各种服务的进程&#xff0c;守…

【产品经理】华为IPD需求管理全思路分享!

作为一名产品经理&#xff0c;会在日常工作中接收到各种需求&#xff0c;而解决需求要提供对应的解决方案。本篇文章以华为的IPD需求管理流程为例&#xff0c;探讨其需求管理思路&#xff0c;帮助产品岗位的你快速做好需求管理并解决方案。 一、理清什么是产品需求 说到这个话…

Matlab|电动汽车充放电V2G模型

目录 1 主要内容 1.1 模型背景 1.2 目标函数 1.3 约束条件 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消…