《动手学深度学习 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、需求 一般后台管理系统,通常页面都有增删改查;而查不外乎就是渲染新增/修改的数据(由输入框变成输…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
永磁同步电机无速度算法--基于卡尔曼滤波器的滑模观测器
一、原理介绍 传统滑模观测器采用如下结构: 传统SMO中LPF会带来相位延迟和幅值衰减,并且需要额外的相位补偿。 采用扩展卡尔曼滤波器代替常用低通滤波器(LPF),可以去除高次谐波,并且不用相位补偿就可以获得一个误差较小的转子位…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
pycharm 设置环境出错
pycharm 设置环境出错 pycharm 新建项目,设置虚拟环境,出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...
