全连接层详解

news/2024/9/20 14:28:48/文章来源:https://www.cnblogs.com/coder-shane/p/18355096

全连接层详解

该博客仅是笔者对于全连接层的浅薄理解。如果存在问题,请务必告知我,谢谢。

前言

全连接层是常见的神经网络层,可以作为模型的分类器(可理解为将特征维度映射到类别维度上),也可以作为特征提取。不过,对于初学者,可以直接认为全连接层是模型的分类器。毕竟大多数情况下,全连接层都是扮演的分类器的角色。

全连接层中的每一个结点都会与前一层的全部结点相连,因此全连接层的可学习参数非常多,可能会占该模型参数量的80%(数据为经验值,不准确),会消耗大量的计算资源,所以如果希望模型训练得更快,可考虑精简全连接层,比如使用卷积代替全连接层。常见的全连接层的结构如下图,但笔者认为该图仅能清晰地展示全连接层的每一个结点都与前一层结点,不过不能揭示全连接层的本质——矩阵Matrix。

image1

全连接层计算

计算公式:\(y = x \cdot w + b\),其中\(w\)\(b\)是可学习参数。模型训练其实就是更新模型中的可学习参数。

从公式里可以看出,全连接层其实跟MLP(多层感知机)、卷积层类似,都是在做多项式求和。注意:整个神经网络本质上其实都是在做多项式求和。

在Pytorch中,全连接层的使用是nn.Linear(input_features, output_features),即输入维度和输出维度,全连接层的作用可理解为维度映射。

示例

假设\(input_features = 3\)\(output_features = 2\)相当于一个二分类问题。输入特征\(x\)的形状为\(5 \times 3\),则权重矩阵\(w\)的形状为\(3 \times 2\),偏置\(b\)的形状为\(5 \times 1\)。输入特征可以理解为5个样本,每个样本有3个特征;权重矩阵可理解为将输入特征的三维映射到二维。

\[\begin{align} \begin{pmatrix} y_1 \\ y_2 \\ y_3 \\ y_4 \\ y_5 \end{pmatrix} & = \begin{pmatrix} x_{1,1} & x_{1,2} & x_{1,3} \\ x_{2,1} & x_{2,2} & x_{2,3} \\ x_{3,1} & x_{3,2} & x_{3,3} \\ x_{4,1} & x_{4,2} & x_{4,3} \\ x_{5,1} & x_{5,2} & x_{5,3} \end{pmatrix}\cdot\begin{pmatrix} w_{1,1} & w_{1,2} \\ w_{2,1} & w_{2,2} \\ w_{3,1} & w_{3,2} \end{pmatrix}+ \begin{pmatrix} b_1 \\ b_2 \\ b_3 \\ b_4 \\ b_5 \end{pmatrix} \\ & = \begin{pmatrix} x_{1,1} \cdot w_{1,1} + x_{1,2} \cdot w_{2,1} + x_{1,3} \cdot w_{3,1} + b_1 & x_{1,1} \cdot w_{1,2} + x_{1,2} \cdot w_{2,2} + x_{1,3} \cdot w_{3,2} + b_1 \\ x_{2,1} \cdot w_{1,1} + x_{2,2} \cdot w_{2,1} + x_{2,3} \cdot w_{3,1} + b_2 & x_{2,1} \cdot w_{1,2} + x_{2,2} \cdot w_{2,2} + x_{2,3} \cdot w_{3,2} + b_2 \\ x_{3,1} \cdot w_{1,1} + x_{3,2} \cdot w_{2,1} + x_{3,3} \cdot w_{3,1} + b_3 & x_{3,1} \cdot w_{1,2} + x_{3,2} \cdot w_{2,2} + x_{3,3} \cdot w_{3,2} + b_3 \\ x_{4,1} \cdot w_{1,1} + x_{4,2} \cdot w_{2,1} + x_{4,3} \cdot w_{3,1} + b_4 & x_{4,1} \cdot w_{1,2} + x_{4,2} \cdot w_{2,2} + x_{4,3} \cdot w_{3,2} + b_4\\ x_{5,1} \cdot w_{1,1} + x_{5,2} \cdot w_{2,1} + x_{5,3} \cdot w_{3,1} + b_5 & x_{5,1} \cdot w_{1,2} + x_{5,2} \cdot w_{2,2} + x_{5,3} \cdot w_{3,2} + b_5 \\ \end{pmatrix} \end{align} \]

在模型输出的时候,选择概率大的一个作为最终输出。由上述例子可以看出,\(y_i\)中对应的每一个\(x_{i,j}\)都参与到了最终结果计算中,每一个\(x_{i,j}\)都会对结果产生影响,体现了全连接的“全”,即全连接结构图中的每一个结点都与前一层的每一个结点相连。

换个角度理解,提取特征——> 对特征进行多项式求和,给特征确定权重,以表示该特征在此任务中的重要性。那是否可以将全连接层也看作是特征提取呢?\(w_{i,j}\)就是输入数据\(x_{i,j}\)的权重。笔者认为可以,在有的论文中也确实是这样做的。

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

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

相关文章

[Java/SQL] 自动去除SQL注释

0 引言 在数据连接(池)框架、数据服务/Data to API等中间平台中,因部分数据库不允许SQL中存在注释信息(如:Redis、Open Gemini等;当然,MYSQL、INFLUXDB等数据库是支持的),故存在这样一个需求:在提交到数据库的SQL,需对原始SQL的注释信息予以去除。以 OpenGemini V1.2.…

Java基础-学习笔记08

类变量、类方法、main方法、代码块01 类变量、类方法、main方法、代码块 类变量(静态变量) 类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。关于静态变…

ABC366D 题解

第一眼是想写 \(kd-tree\) 的。 然后发现这就是一道三维前缀和的板子题。 三维前缀和 要想学习三维前缀和,我们首先得了解前缀和的概念,并且学会一维、二维前缀和。 什么是前缀和 前缀和是容斥原理的典型应用。这种优化方式可以使求和操作的时间复杂度降低到 \(O(1)\)(但是需…

C# 如何防止WinForm程序多次运行

[C# 开发技巧]如何防止程序多次运行 - Learning hard - 博客园 (cnblogs.com) 一、引言 最近发现很多人在论坛中问到如何防止程序被多次运行的问题的,如: http://social.msdn.microsoft.com/Forums/zh-CN/6398fb10-ecc2-4c03-ab25-d03544f5fcc9, 所以这里就记录下来,希望给遇到…

lwIP——带操作系统(FreeRTOS)移植

1. lwIP前期准备 在程序工程中,我们在工程文件夹下创建了一个名为 “lwip”的子文件夹。在“lwip”文件夹下,我们又创建了一个子文件夹:arch 。arch 文件夹用于存放 lwIP 系统的配置文件;2. 添加lwIP源文件3. 添加网卡驱动程序/* Includes -------------------------------…

Less is richness,基于less is more的博客园宽屏主题魔改

写在前面 之前做过很多个人博客,都是做着玩的,资源托管在免费或低价的服务器上,也不经常维护,所以就一直不长久,最终还是选择了博客园。发现博客园可以自定义样式,于是试着给博客换了一个又一个主题。个人比较喜欢宽屏的样式,感觉LessIsMore主题布局比较好、也比较简洁,…

5 大场景上手通义灵码企业知识库 RAG

大家好,我是通义灵码,你的智能编程助手!最近我又升级啦,智能问答功能全面升级至 Qwen2,新版本在各个方面的性能和准确性都得到了显著提升。此外,行间代码补全效果也全面优化,多种编程语言生成性能及准确性大幅提升,如前端、Java、Go、Python、C++ 等。此外,灵码新增代…

2024 年了,IT 运维监控系统都有哪些推荐?

大浪淘沙,2024 年的今天,市面上很多监控系统慢慢淡出了大家的视野,而一些新的监控系统也逐渐崭露头角。今天我们就来看看 2024 年的当下,哪些 IT 运维监控系统最值得关注。 Prometheus毫无疑问,Prometheus 是最值得关注的监控系统,因为 Prometheus 的规范和生态都非常厉害…

不只是前端,后端、产品和测试也需要了解的浏览器知识(二)

继上篇《 不只是前端,后端、产品和测试也需要了解的浏览器知识(一)》介绍了浏览器的基本情况、发展历史以及市场占有率。 本篇文章将介绍浏览器基本原理。在掌握基本原理后,通过技术深入,在研发过程中不断创新,推动产品性能、用户体验的提升,来实现业务的增长,创造可持…

三十分钟入门基础Go(Java小子版)

前言 Go语言定义 Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态、强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC,结构形态及 CSP-style 并发计算。 适用范围 本篇文章适用于学习过其他面向对象语言(Java、…

(二) 树莓派CM4调试

1. 参考资料资料汇总页面https://shumeipai.nxez.com/raspberry-pi-datasheets《bcm2711-peripherals.pdf》,下载地址https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf《cm4io-datasheet.pdf》,下载地址https://datasheets.raspberrypi.com/cm4/cm4-data…

中国式报表有这么多种类型,你都知道吗?

中国式报表是一种在中国企业中使用的会计报告格式,但你真的了解它吗?你知道它有多少种类型吗?今天我们就一起来聊聊,中国式报表都包含哪些类型的报表吧!按样式来划分,中国式报表通常分为以下几类:1. 行式报表 行式报表也就是我们常说的清单式明细表,是最常见也是最简单…