对于全连接层的理解 全连接层的推导

2023-11-10

全连接层的推导

全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。

全连接层的前向计算

下图中连线最密集的2个地方就是全连接层,这很明显的可以看出全连接层的参数的确很多。在前向计算过程,也就是一个线性的加权求和的过程,全连接层的每一个输出都可以看成前一层的每一个结点乘以一个权重系数W,最后加上一个偏置值b得到,即 。如下图中第一个全连接层,输入有50*4*4个神经元结点,输出有500个结点,则一共需要50*4*4*500=400000个权值参数W和500个偏置参数b。


下面用一个简单的网络具体介绍一下推导过程


其中,x1、x2、x3为全连接层的输入,a1、a2、a3为输出,根据我前边在笔记1中的推导,有

可以写成如下矩阵形式:


全连接层的反向传播

以我们的第一个全连接层为例,该层有50*4*4=800个输入结点和500个输出结点。

由于需要对W和b进行更新,还要向前传递梯度,所以我们需要计算如下三个偏导数。

1、对上一层的输出(即当前层的输入)求导
若我们已知转递到该层的梯度 ,则我们可以通过链式法则求得loss对x的偏导数。
首先需要求得该层的输出a i 对输入x j 的偏导数

再通过链式法则求得loss对x的偏导数:

上边求导的结果也印证了我前边那句话:在反向传播过程中,若第x层的a节点通过权值W对x+1层的b节点有贡献,则在反向传播过程中,梯度通过权值W从b节点传播回a节点。

若我们的一次训练16张图片,即batch_size=16,则我们可以把计算转化为如下矩阵形式。

2、对权重系数W求导

我们前向计算的公式如下图,


由图可知,所以:

当batch_size=16时,写成矩阵形式:

3、对偏置系数b求导
由上面前向推导公式可知

即loss对偏置系数的偏导数等于对上一层输出的偏导数。

当batch_size=16时,将不同batch对应的相同b的偏导相加即可,写成矩阵形式即为乘以一个全1的矩阵:




-----------------------------------------------------------------------------------------------------------------------------------

接下来再主要谈谈全连接层的意义
连接层实际就是卷积核大小为上层特征大小的卷积运算,卷积后的结果为一个节点,就对应全连接层的一个点。
假设最后一个卷积层的输出为7×7×512,连接此卷积层的全连接层为1×1×4096。
连接层实际就是卷积核大小为上层特征大小的卷积运算,卷积后的结果为一个节点,就对应全连接层的一个点。如果将这个全连接层转化为卷积层:
1.共有4096组滤波器
2.每组滤波器含有512个卷积核
3.每个卷积核的大小为7×7
4.则输出为1×1×4096
------------------------------------------
若后面再连接一个1×1×4096全连接层。则其对应的转换后的卷积层的参数为:
1.共有4096组滤波器
2.每组滤波器含有4096个卷积核
3.每个卷积核的大小为1×1
4.输出为1X1X4096
相当于就是将特征组合起来进行4096个分类分数的计算,得分最高的就是划到的正确的类别。

而全连接层的坏处就在于其会破坏图像的空间结构,
因此人们便开始用卷积层来“代替”全连接层,
通常采用1×1的卷积核,这种不包含全连接的CNN成为全卷积神经网络(FCN),
FCN最初是用于图像分割任务,
之后开始在计算机视觉领域的各种问题上得到应用,
事实上,Faster R-CNN中用来生成候选窗口的CNN就是一个FCN。
FCN的特点就在于输入和输出都是二维的图像,并且输入和输出具有相对应的空间结构,
在这种情况下,我们可以将FCN的输出看作是一张热度图,用热度来指示待检测的目标的位置和覆盖的区域。
在目标所处的区域内显示较高的热度,
而在背景区域显示较低的热度,
这也可以看成是对图像上的每一个像素点都进行了分类,
这个点是否位于待检测的目标上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于全连接层的理解 全连接层的推导 的相关文章

  • 剑指 Offer 57. 和为s的两个数字(java+python)

    输入一个递增排序的数组和一个数字s 在数组中查找两个数 使得它们的和正好是s 如果有多对数字的和等于s 则输出任意一对即可 示例 1 输入 nums 2 7 11 15 target 9 输出 2 7 或者 7 2 示例 2 输入 nums
  • MyBatis快速入门

    Mybatis概述 Mybatis概念 MyBatis 是一款优秀的持久层框架 用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis 2010年这个项目由apache software foundatio
  • show process cpu

    Router show proc cpu CPU utilization for five seconds 63 50 one minute 58 five minutes 58 PID Runtime ms Invoked uSecs 5

随机推荐

  • NVM在windows下切换node版本

    如果您很忙或者很急 请直接阅读 三 步骤 一 问题背景 生活里偶尔穿梭在大街小巷中 工作中时常并行于多项目任务里 当多个项目并行时 由于创建的时间或人为选择等因素 各个项目里有着差异的node版本 这样我们在不同的项目里需要切换不同版本的N
  • Linux软链接与硬链接区别

    一 背景 链接 是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法 Linux中包括两种链接 硬链接 Hard Link 和软链接 Soft Link 软链接又称为符号链接 Symbolic link 要了解链接 我们首先得了
  • vscode 问题解决:“检测到 #include 错误,请更新 includePath”

    当我们在使用vscode进行编辑代码时 往往会遇到以下警告 这表明 在我们的代码中 无法找到对应的头文件 但问题在于 阅读和编辑代码 需要保证代码的统一性 所以我们需要知道这个头文件到底在哪 我们也需要让vscode通过点击该头文件名就可以
  • EI、Scopus双检索

    会议简介 Brief Introduction 2023年第四届自动化 机械与设计工程国际会议 SAMDE 2023 会议时间 2023年12月8 10日 召开地点 中国 南京 大会官网 www samde org 机械设计制造及其自动化学
  • python第三方库集锦

    环境管理管理 Python 版本和环境的工具 p 非常简单的交互式 python 版本管理工具 pyenv 简单的 Python 版本管理工具 Vex 可以在虚拟环境中执行命令 virtualenv 创建独立 Python 环境的工具 vi
  • Qt : d指针和q指针?

    目录 一 什么是d指针和q指针 1 d指针 2 q 指针 二 d指针和q指针的作用 三 d指针和q指针的使用 demo 一 什么是d指针和q指针 在Qt的源码中 我们看到大量的Q D 和Q P 宏的调用 查看代码时在一定程度上增加了复杂度
  • 阿里云部署 ChatGLM2-6B 与 langchain+ChatGLM

    1 ChatGLM2 6B 部署 更新系统 apt get update 安装git apt get install git lfs git init git lfs install 克隆 ChatGLM2 6B 源码 git clone
  • vite中无法使用require和@无法使用的问题

    1 安装插件 yarn 安装 yarn add D vite plugin require transform npm 安装 npm i vite plugin require transform S 2 在vite中配置一下即可 impo
  • 解决python发送https请求,出现证书错误,及报错提示

    详细报错信息如下 Error Traceback most recent call last File E WebWafUi venv lib site packages urllib3 connectionpool py line 603
  • 2.4G天线匹配设计,不谈原理和规范,直接怼PCB设计

    关注嘉友创科技公众号 各位大虾 说个天线设计的过程 此过程实测性能是官方的参数的80 不需要任何仪器测试的情况下 适合穷逼 买不起仪器 1 确定厂家 确定板厚 2 依据板厚 找生成PCB厂家确定板层分布 厂家不同 很多参数不同 3 确定阻抗
  • 自己实现MediaExtractor(一)

    1 背景 Android很坑 编解码大坑 最近遇到MediaExtractor的坑了 坑1 读PCM音频巨慢 因为Android的实现是一个一个sample读的 坑2 某些手机只能读取到一路视频或音频track 如oppo Find X 个
  • 【MATLAB】命令行窗口乱码问题

    昨天开始重新学习matlab 按着网上教程一直配置 将编码格式改成 UTF 8 查看编码方式可以用slCharacterEncoding 函数 然后在编辑器上面编写内容果然没有发现乱码 但是一旦将编辑器上面的内容在命令行窗口输出就出现乱码的
  • linux常见的基本命令面试题总结

    问题一 绝对路径用什么符号表示 当前目录 上层目录用什么表示 主目录用什么表示 切换目录用什么命令 答案 绝对路径 如 etc init d 当前目录和上层目录 主目录 切换目录 cd问题二 怎么查看当前进程 怎么执行退出 怎么查看当前路径
  • nacos 监听配置文件变动(自动刷新),监听服务变动(权重、元数据等),手动推送服务

    NACOS 配置文件与服务监听 对于启动项目时可以检测的配置文件 修改配置文件时也可进入监听 对于服务监听时 项目启动时注册进nacos可以监听 修改服务时关闭服务时都可以监听 也可以手动推送服务到nacos上 添加nacos相关的配置文件
  • java.io.FileNotFoundException: class path resource [***] cannot be resolved to URL

    SpringBoot 集成FreeMarker 时出现如下错误信息 java io FileNotFoundException class path resource templates cannot be resolved to URL
  • Linux网络编程一步一步学 - 目录(汇总)zhuan

    非常好的关于Linux网络编程的文章 我也是无意中在别人的博客里发现的 在网上搜了一下 这类的文章总共还有很多篇 最后我找到了原作者的姓名 周立发 以及作者的博客空间 本人坚决支持原创 在此将其文章进行了汇总 并且空间首页加入了他的博客链接
  • 泛型方法使用

    Java中关于泛型方法中类型变量的确定 首先 在我们使用泛型的时候我们要显示的告诉编译器所要使用的具体类型 比如 新建了一个Integer类型的ArrayList 并在 lt gt 中指明了类型 ArrayList
  • 【GIN】上下文 bind的几种方法

    1 Bind var req vo RegisterRequest ctx Bind req It writes a 400 error and sets Content Type header text plain in the resp
  • VM虚拟机中的web服务内网穿透的设置,虚拟机连接主机的mysql(主机win10 虚拟机win10)

    前言 由于我的主机里环境弄得乱七八糟 无法正常使用阿帕奇 我又不想重置电脑 所以就想在虚拟机里配置环境 结果我的虚拟机无法安装mysql 于是就用虚拟机访问主机的mysql 我在虚拟机里部署的Flask项目 然后WEB服务器用的是阿帕奇2
  • 对于全连接层的理解 全连接层的推导

    全连接层的推导 全连接层的每一个结点都与上一层的所有结点相连 用来把前边提取到的特征综合起来 由于其全相连的特性 一般全连接层的参数也是最多的 全连接层的前向计算 下图中连线最密集的2个地方就是全连接层 这很明显的可以看出全连接层的参数的确