《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积
6.1.1 不变性
-
平移不变性(translation invariance):
不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。
-
局部性(locality):
神经网络的前面几层应该只探索输入图像中的局部区域,而不过度在意图像中相隔较远区域的关系,这就是“局部性”原则。最终,可以聚合这些局部特征,以在整个图像级别进行预测。
6.1.2 多层感知机的限制
假设多层感知机的输入是 X X X,将其隐藏表示记为 H H H(二者形状相同)。
使用 [ X ] i j [\boldsymbol{X}]_{ij} [X]ij 和 [ H ] i j [\boldsymbol{H}]_{ij} [H]ij 表示位置 ( i , j ) (i,j) (i,j) 位置上的像素点。
因为每个像素点都需要和其他像素点联系,故每个像素点都需要一个二阶的权重张量,又由于是二维图像,故最终权重张量 W \mathrm{W} W 为四维。
再假设偏置参数为 U U U,则可以将全连接层表示为:
[ H ] i j = [ U ] i j + ∑ k ∑ l [ W ] i , j , k , l [ X ] k , l [\boldsymbol{H}]_{ij} = [\boldsymbol{U}]_{ij}+\sum_k\sum_l[\mathrm{W}]_{i,j,k,l}[\boldsymbol{X}]_{k,l} [H]ij=[U]ij+k∑l∑[W]i,j,k,l[X]k,l
为了方便表示,我们对下标 ( k , l ) (k,l) (k,l) 进行重新索引,使得 k = i + a , l = j + b k=i+a,l=j+b k=i+a,l=j+b,则可以得到重拍后的权重矩阵 [ V ] i , j , a , b = [ W ] i , j , i + a , j + b [V]_{i,j,a,b}=[\mathrm{W}]_{i,j,i+a,j+b} [V]i,j,a,b=[W]i,j,i+a,j+b。
上式可表述为:
[ H ] i j = [ U ] i j + ∑ a ∑ b [ V ] i , j , a , b [ X ] i + a , j + b [\boldsymbol{H}]_{ij} = [\boldsymbol{U}]_{ij}+\sum_a\sum_b[\mathrm{V}]_{i,j,a,b}[\boldsymbol{X}]_{i+a,j+b} [H]ij=[U]ij+a∑b∑[V]i,j,a,b[X]i+a,j+b
-
平移不变性
现在引入平移不变性,即检测对象在输入 X X X 中的平移应该仅导致隐藏表示 H H H 中的平移。简言之,无须每个像素都要独享一个二维权值张量,所有像素共享同一个即可,故权重张量降为二维即可。此时式子可以简化为:
[ H ] i j = u + ∑ a ∑ b [ V ] a , b [ X ] i + a , j + b [\boldsymbol{H}]_{ij} = u+\sum_a\sum_b[\boldsymbol{V}]_{a,b}[\boldsymbol{X}]_{i+a,j+b} [H]ij=u+a∑b∑[V]a,b[X]i+a,j+b
这就是所谓卷积,使用系数 [ V ] a , b [\boldsymbol{V}]_{a,b} [V]a,b 对 ( i , j ) (i,j) (i,j) 附近的像素 ( i + a , j + b ) (i+a,j+b) (i+a,j+b) 进行加权得到 [ H ] i j [\boldsymbol{H}]_{ij} [H]ij。
-
局部性
对于上述的 a , b a,b a,b 不应该取太大,即范围不应太大,至少不应该是全图。故可将 ∣ a ∣ > Δ ∣ b ∣ > Δ \left|a\right|>\Delta \left|b\right|>\Delta ∣a∣>Δ∣b∣>Δ的范围设置为0(即不考虑范围外的影响)。故可将式子重写为:
[ H ] i j = u + ∑ a Δ ∑ b Δ [ V ] a , b [ X ] i + a , j + b [\boldsymbol{H}]_{ij} = u+\sum_a^\Delta\sum_b^\Delta[\boldsymbol{V}]_{a,b}[\boldsymbol{X}]_{i+a,j+b} [H]ij=u+a∑Δb∑Δ[V]a,b[X]i+a,j+b
至此,可以称 V V V 为卷积核。简言之,卷积操作实际就是计算一圈像素对中间像素的影响,使用不同的卷积核则计算的是不同方面的影响,最终实现提取不同特征的效果。此处参考王木头大佬的视频《从“卷积”、到“图像卷积操作”、再到“卷积神经网络”,“卷积”意义的3次改变》。
6.1.3 卷积
在数学中,卷积被定义为:
( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z (f*g)(\boldsymbol{x})=\int f(\boldsymbol{z})g(\boldsymbol{x}-z)d\boldsymbol{z} (f∗g)(x)=∫f(z)g(x−z)dz
用一个例子说明的话,一个不确定的输入函数叠加上一个确定的输出函数,计算最终余量即为卷积。
6.1.4 “沃尔多在哪里”回顾
上面一直将图片作为二维张量,实际上图像一般包含三个通道(即RGB三原色),因此图像应该是一个由高度、宽度和颜色组成的三维张量。故我们应将 X \boldsymbol{X} X 索引为 [ X ] i , j , k [\boldsymbol{X}]_{i,j,k} [X]i,j,k,由此卷积核相应的调整为 [ V ] a , b , c [\boldsymbol{V}]_{a,b,c} [V]a,b,c,再添加一个 d d d 以实现不同通道的输出,即:
[ H ] i , j , d = ∑ a = − Δ Δ ∑ b = − Δ Δ ∑ c [ V ] a , b , c , d [ X ] i + a , j + b , c [\boldsymbol{H}]_{i,j,d} = \sum_{a=-\Delta}^\Delta\sum_{b=-\Delta}^\Delta\sum_c[\boldsymbol{V}]_{a,b,c,d}[\boldsymbol{X}]_{i+a,j+b,c} [H]i,j,d=a=−Δ∑Δb=−Δ∑Δc∑[V]a,b,c,d[X]i+a,j+b,c
练习
(1)假设卷积层式(6.3),覆盖的局部区域 Δ = 0 \Delta=0 Δ=0。在这种情况下,证明卷积核为每组通道独立地实现一个全连接层。
若 Δ = 0 \Delta=0 Δ=0 则意味着卷积核大小为1,那感觉和全连接没区别的哇。
(2)为什么平移不变性可能也不是好主意呢?
太单一,也许不同区域需要的卷积核不一样。
(3)当从图像边界像素获取隐藏表示时,我们需要思考哪些问题?
应该考虑关于填充的事情。
(4)描述一个类似的音频卷积层的架构。
将音频信息转换为二维数据或更高维再进行卷积操作。
(5)卷积层也适合于文本数据吗?为什么?
我觉得可以,只要找到合适的方法数据化文本。因为卷积这种对于特征的提取对于自然语言也应该是适用的。
(6)证明在式(6.6)中, f ∗ g = g ∗ f f*g=g*f f∗g=g∗f。
( f ∗ g ) ( x ) = ∫ f ( z ) g ( x − z ) d z = ∫ f ( x − t ) g ( t ) d ( x − t ) ( 令 t = x − z ) = ∫ g ( t ) f ( x − t ) d t = ( g ∗ f ) ( x ) \begin{align} (f*g)(\boldsymbol{x}) &= \int f(\boldsymbol{z})g(\boldsymbol{x-z})d\boldsymbol{z}\\ &= \int f(\boldsymbol{x-t})g(\boldsymbol{t})d\boldsymbol{(x-t)}\qquad(令 t=\boldsymbol{x-z})\\ &= \int g(\boldsymbol{t})f\boldsymbol{(x-t)}d\boldsymbol{t}\\ &= (g*f)(\boldsymbol{x}) \end{align} (f∗g)(x)=∫f(z)g(x−z)dz=∫f(x−t)g(t)d(x−t)(令t=x−z)=∫g(t)f(x−t)dt=(g∗f)(x)
相关文章:
《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积
6.1.1 不变性 平移不变性(translation invariance): 不管检测对象出现在图像中的哪个位置,神经网络的前面几层应该对相同的图像区域具有相似的反应,即为“平移不变性”。 局部性(locality)&…...

六、数学建模之插值与拟合
1.概念 2.例题和matlab代码求解 一、概念 1.插值 (1)定义:插值是数学和统计学中的一种技术,用于估算在已知数据点之间的未知数据点的值。插值的目标是通过已知数据点之间的某种函数或方法来估计中间位置的数值。插值通常用于数…...

【项目经验】:elementui表格中数字汉字排序问题及字符串方法localeCompare()
一.需求 表格中数字汉字排序,数字按大小排列,汉字按拼音首字母(A-Z)排序。 二.用到的方法 第一步:把el-table-column上加上sortable"custom" <el-table-column prop"date" label"序号…...
Spring Boot的运行原理
Spring Boot的运行原理 Spring Boot是一个用于快速构建独立、可独立运行的Spring应用程序的框架。它通过自动配置和约定优于配置的原则,简化了Spring应用程序的开发过程。下面将详细介绍Spring Boot的运行原理,并附上一些代码解释。 1. 主要组件 Sprin…...

xen-gic初始化流程
xen-gic初始化流程 调试平台使用的是gic-600,建议参考下面的文档来阅读代码,搞清楚相关寄存器的功能。 《corelink_gic600_generic_interrupt_controller_technical_reference_manual_100336_0106_00_en》 《IHI0069H_gic_architecture_specification》…...

Docker从认识到实践再到底层原理(六-1)|Docker容器基本介绍+命令详解
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…...
【Flink】FlinkCDC自定义反序列化器
在我们用FlinkCDC采集mysql数据(或其他数据源)的时候,FlinkCDC输出的格式不标准,不利于我们后续做数据处理,我们通常会使用自定义反序列化器来格式化采集数据方便后续处理 常规的反序列化器如下: public class FlinkDataStreamCDC {public static void main(String[] ar…...

linux基础(2)
目录 一.vi\vim编译器介绍1.三种模式2.vim的使用3.快捷键的使用 二.which,find命令三.grep命令四.wc命令五.管道符六.echo命令1.重定向符 七.tail命令 一.vi\vim编译器介绍 vim\vi是linux中最经典的文本编译器 同图形化界面中的文本编译器是一样的,vi是…...

docker安装zookeeper(单机版)
第一步:拉取镜像 docker pull zookeeper第二步:启动zookeeper docker run -d -e TZ"Asia/Shanghai" -p 2181:2181 -v /home/sunyuhua/docker/zookeeper:/data --name zookeeper --restart always zookeeper...
国际版阿里云/腾讯云免开户:云存储服务:云存储服务能够让你随时随地拜访和同享文件
云存储服务:云存储服务能够让你随时随地拜访和同享文件 云存储服务是一种基于云技术的存储渠道,能够让用户存储、管理和同享各种类型的数据文件,如文档、图片、视频、音频等。这种服务具有许多长处,以下是对其进行的详细分析&…...

【Java】应用层协议HTTP和HTTPS
HTTP和HTTPS协议 HTTPHTTP协议的工作过程HTTP协议格式抓包工具抓包结果 HTTP请求(Request)URL方法GET方法POST请求其他方法 报头(header)HostContent-lengthContent-TypeUser-AgentRefererCookie 正文(body) HTTP响应HTTP状态码响应报头(header)响应正文(body) 通过form表单构造…...

SpringBoot整合Flowable
1. 配置 (1) 引入maven依赖 <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.7.2</version></dependency><!-- MySQL连接 -->&l…...

华为云香港S3云服务器性能测评_99元一年租用价格
华为云香港S3云服务器1核2G1M带宽99元一年性能测评,配置为S3云服务器1核2G1M带宽,S系列热卖机型,适用于个人建站、普通web应用等负载较低场景,系统盘为高IO40G系统盘,华为云百科分享华为云香港云服务器配置费用&#x…...
prompt 视频收集
1.ChatGPT Prompt提示词工程 ***** 常用技巧 (基本原则,格式,角色扮演)_哔哩哔哩_bilibili...

Rust :与C交互
rust调用C端的库函数,有很多方法。今天介绍通过cc库,通过build生成脚本的方式,实现rust调用c端库函数。 1、相关准备: 在ffi目录下,创建了c_part和rust_ffi文件夹。 c_part下放了ctools.c文件,里面有一些…...

模拟实现C语言--memcpy函数和memmove函数
模拟实现C语言–memcpy函数和memmove函数 文章目录 模拟实现C语言--memcpy函数和memmove函数一、memcpy函数和memmove函数1.1 memcpy函数是什么1.1 memmove函数是什么 二、使用示例2.1 从起始位置复制2.2 从任意位置复制 三、模拟实现3.1 模拟实现1--memcpy函数3.2 针对缺点改进…...

Linux目录
根目录 根目录:“/” 在Linux系统中,根目录指的是整个文件系统的最顶级目录,用符号"/"表示。根目录是文件系统的起点,所有其他目录和文件都嵌套在根目录下面。在根目录下通常会有一些常见的子目录,例如/bin…...

全国职业技能大赛云计算--高职组赛题卷①(私有云)
全国职业技能大赛云计算--高职组赛题卷①(私有云) 第一场次题目:OpenStack平台部署与运维任务1 基础运维任务(5分)任务2 OpenStack搭建任务(15分)任务3 OpenStack云平台运维(15分&am…...

STM32--PWR电源控制
文章目录 PWR电源电源管理器上电复位(POR)和掉电复位(PDR) 可编程电压监测器(PVD)低功耗模式睡眠模式停止模式待机模式 睡眠模式工程停止模式待机模式 PWR STM32的PWR模块是其电源管理系统的核心部分&…...

vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)
目录 1、需求 2.想要的效果就是由图一变成图二 编辑 3.组件集成了以下功能 4.参数配置 示例代码 参数说明 5,组件 6.页面使用 1、需求 一般后台管理系统,通常页面都有增删改查;而查不外乎就是渲染新增/修改的数据(由输入框变成输…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里
写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...