深度学习论文随记(三)GoogLeNet-2014年

2024-03-23 06:38

本文主要是介绍深度学习论文随记(三)GoogLeNet-2014年,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深度学习论文随记(三)GoogLeNet

Going Deeper with Convolutions

Author: Christian Szegedy, Wei Liu,  Yangqing Jia, etl.

Year 2014

1、导引

2014年google参加ILSVRC竞赛,以此网络模型获得第一名的成绩。此模型名为GoogLeNet,而不是GoogleNet.是为了向CNN的开山鼻祖LeNet致敬。

该模型共有22层,利用multi-scaletraining。层数虽然变多,但是参数总量却只有7M,比AlexNet少多了,可是准确率却提高了:Top-5的错误率只有6.66%。

GoogLeNet模型成功证明了用更多的卷积,更深的网络层数可以得到更好的预测效果。

 

2、模型解读

 

Inception结构:

Why?

如果单纯的加深或者拓宽网络模型,会产生两个较为突出的问题:

①网络规模变大会产生更多参数,从而容易导致过拟合的发生。

②网络规模变大会使得计算量变大,消耗更多的计算资源。

解决这两个问题的方法是将全连接甚至是一般的卷积转化为稀疏矩阵。但是由于计算机计算时,对于非均匀稀疏数据这种东西的计算效率很差(这个其实很容易理解,你留意一下就会发现计算机在很多时候,都对矩形、矩阵有着难以置信的执着。),所以AlexNet模型启用了全连接层(全连接层说白了就是进行了矩阵乘法,)其目的是为了更好地优化并行运算。

 

所以,针对:”既要使得网络具有稀疏性,又想利用密集矩阵的高计算性能”这一个问题,人们提出了一种思路:将稀疏矩阵聚类为较为密集的子矩阵来提高计算性能,Google团队就顺着这一个思路,提出来了Inception结构。

 

Inception 结构的主要思路是怎样用密集成分来近似最优的局部稀疏结构

首先提出下图这样的基本结构:



本模型的分析: 
1 . 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合; 
2 . 之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了; 
3 . 文章说很多地方都表明pooling挺有效,所以Inception里面也嵌入了。 
4 . 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加。但是5x5的卷积核会带来巨大的计算量,所以采用1x1的卷积核进行降维处理。


所以他们又做了如下的改进:




GoogLeNet:





共有22层,原始输入的数据大小为224x224x3.

3、特点

·采用了模块化的结构,方便增添和修改

·网络最后用的是averagepooling层替代全连接层,将Top-1成功率提高了一点

·网络移除了全连接层,但是保留了Dropout层

·网络增加了两个辅助的softmax用于向前传导梯度,避免梯度消失。



这篇关于深度学习论文随记(三)GoogLeNet-2014年的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

深度解析Python中递归下降解析器的原理与实现

《深度解析Python中递归下降解析器的原理与实现》在编译器设计、配置文件处理和数据转换领域,递归下降解析器是最常用且最直观的解析技术,本文将详细介绍递归下降解析器的原理与实现,感兴趣的小伙伴可以跟随... 目录引言:解析器的核心价值一、递归下降解析器基础1.1 核心概念解析1.2 基本架构二、简单算术表达

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java MCP 的鉴权深度解析

《JavaMCP的鉴权深度解析》文章介绍JavaMCP鉴权的实现方式,指出客户端可通过queryString、header或env传递鉴权信息,服务器端支持工具单独鉴权、过滤器集中鉴权及启动时鉴权... 目录一、MCP Client 侧(负责传递,比较简单)(1)常见的 mcpServers json 配置

Maven中生命周期深度解析与实战指南

《Maven中生命周期深度解析与实战指南》这篇文章主要为大家详细介绍了Maven生命周期实战指南,包含核心概念、阶段详解、SpringBoot特化场景及企业级实践建议,希望对大家有一定的帮助... 目录一、Maven 生命周期哲学二、default生命周期核心阶段详解(高频使用)三、clean生命周期核心阶

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程