1.9.2 用于分类任务的卷积神经网络的最后几层一般是什么层?在最近几年有什么变化

news/2024/9/23 11:20:49/

1. 用于分类任务的卷积神经网络的最后几层一般是什么层?

摘要:

前面几层一般是卷积层、池化层。最后基层一般是全连接层。

原因:因为卷积层的特征提取过程是局部的,对于位置不敏感。无法提取同一张图片中不同元素位置之间的关联关系,所以需要一个全局的、位置敏感的特征提取器:全连接层。

全连接层好处:全连接层每个输出分量与所有的输入分量都相连,并且连接权重都是不同的

  • 用于分类任务的卷积神经网络,其前面若干层一般是卷积层、池化层等,但是网络末端一般是几层全连接层。这是因为一方面卷积层具有局部连接、权值共享的特性,其在不同位置采用相同的卷积核进行特征提取的。

  • 问题:也就是说,卷积层的特征提取过程局部的卷积核尺寸一般远小于图片尺寸),且是位置不敏感的。而且,参考文献[22]中的实验表明,即使强迫卷积层学习如何对位置信息进行编码,其效果也不理想。

    因此,如果整个网络全部采用卷积层(包括池化层等),网络也许能知道图片中不同位置有哪些元素(高层语义信息),但无法提取这些元素之间的关联关系(包括空间位置上的相关性、语义信息上的相关性)。而对于分类任务,不仅需要考虑一张图像中的各个元素,还需要考虑它们之间的关联关系(全局信息)。

举例来说,假设要做人脸检测任务,仅仅找出图片上的眼、鼻、口等人脸元素是不够的,它们之间的相对位置关系也非常重要(如果一张图片中人脸的各个器官被随机打乱,我们显然不会认为这还是一张人脸)。

  • 解决:为了提取不同元素之间的关联关系,我们需要一个全局的、位置敏感的特征提取器,而全连接层就是最方便的选择,其每个输出分量与所有的输入分量都相连,并且连接权重都是不同的

    当然,卷积层也不是完全不能对位置信息进行编码,如果使用与输入特征图同样尺寸的卷积核就可以,但这实际上等价于一个全连接层(卷积的输出通道数目对应着全连接层的输出单元个数)。

    从另一方面来理解,多个全连接层组合在一起就是经典的分类模型-多层感知机

    我们可以把卷积神经网络中前面的卷积层看作是为多层感知机提取深层的、非线性特征。从这个角度讲,最后几层也可以接其他的分类模型,如支持向量机等,但这样就脱离了神经网络体系,处理起来不太方便,不利于模型进行端到端的训练和部署。

    相关阅读:支持向量机和感知机有什么关联?

2.在最近几年有什么变化?

最近几年,分类网络在卷积层之后、最后一层之前通常采用全局平均池化

(即卷积层/池化层——全局平均池化——全连接层)

它与全连接层有着相似的效果(可以提取全局信息),并且具有如下优点。

  1. 参数量和计算量大大降低

    假设输入特征图的尺寸为w ×h ,通道数为c全局平均池化输出单元数为k的全连接层
    参数量0cwhk
    计算量cwhcwhk

    对于AlexNet、VGGNet等这种全连接层单元数动辄1024或4096的网络,全局平均池化与普通卷积层的计算量能相差千余倍。

  2. 具有较好的可解释性

    比如,我们可以知道特征图上哪些点对最后的分类贡献最大。

相关阅读:卷积神经网络的基本结构

[22] LIU R, LEHMAN J,MOLINO P, et al. An intriguing failing of convolutional neural networks and the coordconv solution[C]//Advances in Neural Information Processing Systems, 2018: 9605-9616.
[23] LIN M, CHEN Q ,YAN S. Network in network[J]. arXiv preprint arXiv: 1312.4400 , 2013.

参考文献:

《百面深度学习》 诸葛越 江云胜主编

出版社:人民邮电出版社(北京)

ISBN:978-7-115-53097-4

2020年7月第1版(2020年7月北京第二次印刷)

推荐阅读:

//好用小工具↓

分享一个免费的chat工具

分享一个好用的读论文的网站

// 深度学习经典网络↓

LeNet网络(1989年提出,1998年改进)

AlexNet网络(2012年提出)

VGGNet网络(2014年提出)

LeNet、AlexNet、VGGNet总结

GoogLeNet网络(2014年提出)

ResNet网络(2015年提出)


http://www.ppmy.cn/news/1462626.html

相关文章

用手机打印需要下载什么软件

在快节奏的现代生活中,打印需求无处不在,无论是工作文件、学习资料还是生活小贴士,都可能需要一纸呈现。然而,传统的打印方式往往受限于时间和地点,让人倍感不便。今天,就为大家推荐一款便捷又省钱的手机打…

Jupyter 使用手册: 探索交互式计算的无限可能

什么是 Jupyter? Jupyter 是一个开源的 Web 应用程序,可用于创建和共享包含实时代码、可视化和叙述性文本的文档。它最初是作为 IPython 项目的一部分开发的,后来发展成为支持多种编程语言的交互式计算环境。 应用场景 作为一个开源的交互式计算环境,Jupyter 在以下几个领域…

docker的使用以及常用命令

Docker入门指南:基础使用与常见命令解析 在当今的软件开发领域,Docker 已经成为了一项不可或缺的技术。它使得应用程序的部署变得更加灵活和高效。本文将为您提供一个关于 Docker 的基础使用指南,并介绍一些常见的命令,帮助您快速…

本地idea连接虚拟机linux中的docker进行打包镜像上传--maven的dockerfile-maven-plugin插件

项目名必须是英文,-,.,_,这些数字,idea需要管理员运行,因为idea控制台mvn命令需要管理员权限才能运行(maven需配置环境变量)改linux中的Docker服务文件,使用2375 进行非加密通信,然后加载重启 2.1 #修改Docker服务文件 vi /lib/systemd/system/docker.service ​ # 通常使…

多线程、进程、线程五种状态、synchronized、volatile、Lock、CAS、死锁、ThreadLocal

1、并发编程 并发编程三要素 原子性:只一个操作要么全部成功,要么全部失败可见性:一个线程对共享变量的修改,其他线程能够立刻看到有序性:程序执行的顺序按照代码的先后顺序执行 synchronized,Lock解决原…

CPP Con 2020:Type Traits I

先谈谈Meta Programming 啥是元编程呢?很简单,就是那些将其他程序当作数据来进行处理和传递的编程(私人感觉有点类似于函数式?)这个其他程序可以是自己也可以是其他程序。元编程可以发生在编译时也可以发生在运行时。…

字符函数:分类函数与转换函数

字符函数 一.字符分类函数二.字符转换函数 在编程的过程中,我们经常要处理字符和字符串,为了方便操作字符和字符串,C语⾔标准库中提供了一系列库函数,接下来我们就学习⼀下这些函数。 一.字符分类函数 C语言中有⼀系列的函数是专门…

【好玩的经典游戏】Docker环境下部署retroarch-web经典游戏模拟器

【好玩的经典游戏】Docker环境下部署retroarch-web经典游戏模拟器 前言一、RetroArch-web介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查Docker服务状态四、拉取镜像五、创建retroarch-web容器5.1 创建容器5.2 查看容器状态六…