GoogleNet神经网络介绍

2024-04-02 15:44

本文主要是介绍GoogleNet神经网络介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

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(4d) 的输出 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(4d)

四、参数表格

第一列:一系列层的名称

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

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

辅助分类器中的参数

 # 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神经网络。 

这篇关于GoogleNet神经网络介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870386

相关文章

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP