一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别

news2024/12/1 0:45:19

目录

互相关运算定义

互相关运算图示

互相关运算完整计算示例

卷积数学定义

卷积运算图示

卷积与互相关运算区别

深度学习中的卷积为何能用互相关运算代替


互相关运算定义

在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按对应元素相乘并求和,得到输出数组中相应位置的元素。

互相关运算图示

假设我们有一张image和一个filter

 

我们对图像中的蓝色区域进行Cross-correlation(互相关运算)

那么在点E处的计算方式就是: 

G[3,3]=a∗A+b∗B+c∗C+d∗D+e∗E+f∗F+g∗G+h∗H+i∗I

互相关运算完整计算示例

输入数组为3*3,核数组为2*2,输入数组计算如下:

  

卷积数学定义

 

卷积运算图示

我们还是用上面互相关运算那幅图,我们记得cross-correlation的循环顺序是从左到右,从上到下

而convolution是从右到左,从下到上,即在点E处的计算为:G[3,3]=a∗I+b∗H+c∗G+d∗F+e∗E+f∗D+g∗C+h∗B+i∗A 那么这就相当于将‘filter翻转’了,即先上下翻转、再左右翻转,然后进行cross-correlation运算,如下所示:

 

可是我们为什么要这么做呢,有什么意义呢,下面让我们来看下

卷积与互相关运算区别

考虑,一张图如下,我们进行cross-correlation,得到的结果如下:

 

如果将上面换成真实点的图

 

​我们看到得到的结果就像是filter,只不过翻转了下。因此如果我们将filter翻转了一次再进行cross-correlation,那再加上上面的这次翻转就是两次翻转了,得到的图像就也就不变了。

于是卷积就有了下面的性质

Identity:E=[...0,0,1,0,0...],F*E=F(你可以想下cross-correlation行不行)

 

那么什么时候convolution和cross-correlation是一样的呢?

当filter关于x轴y轴对称时,通常的Average filter和Gaussian filter都是,两者得到的结果相同。

深度学习中的卷积为何能用互相关运算代替

        现在大部分的深度学习教程中都把卷积定义为图像矩阵和卷积核的按位点乘。实际上,这种操作亦应该是互相关(cross-correlation),而卷积需要把卷积核顺时针旋转180度(即将卷积核上下翻转再左右翻转)然后再做点乘。卷积运算和互相关运算虽然类似,但如果它们使用相同的核数组,对于同一个输入,输出往往并不相同。

        那么,你也许会好奇在深度学习中卷积层为何能使用互相关运算替代卷积运算。这主要原因在于,在深度学习中核数组都是学出来的:卷积层无论使用互相关运算或卷积运算都不会影响模型预测时的输出。假设卷积层使用互相关运算学出某一核数组。设其他条件不变,使用卷积运算学出的核数组即为互相关核数组按上下、左右翻转。也就是说原始输入与学出的已翻转的核数组再做卷积运算时,依然得到的是同样输出。因此大多数深度学习中提到的卷积运算均指互相关运算。

对文章存在的问题,或者其他关于Python相关的问题,都可以在评论区留言或者私信我哦

如果文章内容对你有帮助,感谢点赞+关注!

关注下方GZH:阿旭算法与机器学习,可获取更多干货内容~欢迎共同学习交流

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

粤嵌实训(笔记)

目录 1. LCD换自己喜欢的颜色 2. LCD换个图案 3. LCD换张图片 4.网线登录 ifconfig eth0 192.168.5.9 5.触屏电子相册 6.网络编程(TCP通信) 7.网络编程(UDP通信) 说实话,对于这个粤嵌的实训,真的有很多想吐槽的地方,以下就是粤嵌给的一块…

python 修改 网页 navigator 的属性的值

def init_js(page: Page, phone: str) -> Page:#修改 网页 navigator 的属性的值function fakeNav(key, value) {Object.defineProperty(navigator, key, {value: value,writable: false});}js_device_memory ffakeNav("deviceMemory", {gen_android_memory(phon…

Python测试题

目录 题目一:猜数字游戏 题目二:实现一个函数可判断一个数字是否为质数。 题目三:实现一个函数可判断一个数字是否为回文数。 题目四:编写程序实现中美汇率转换。 题目五:球体100米落地弹起运算 题目六:使用python建一个简易…

通达信交易接口API获取数据源码分享

在通达信交易接口下单之前,如何去了解快速获取交易数据呢?要是即使下单了,也不知道如何去查询,然后不管不问,等到需要你去止损了,你才回想起来去操作,这是很容易吃亏的做法的。在股票量化交易过…

符号三角形问题(Java)

符号三角形问题(Java) 文章目录符号三角形问题(Java)1、 前置介绍2、算法设计3、程序代码4、算法效率5、参考资料1、 前置介绍 符号三角形定义 如下图所示,符号三角形是由14个“” 号和14个"-"号组成的符号三…

k8s镜像下载不下来?利用 github Action 自己动手一次性解决难题,丰衣足食

docker-image-syncer 无论是在学习k8s还是正式环境部署k8s中,第一步安装k8难倒了各大英雄好汉。原因是k8s 各种组件镜像在谷歌服务器上(k8s.gcr.io),而我们有墙的存在,所以会经常性的下载失败。解决办法是搭梯子,或者是使用其他镜像源。 本…

有符号变量与无符号变量之间的值的转换

1、有符号变量与无符号变量之间的值的转换 程序例子 涉及到的内容是&#xff1a; 有符号变量和无符号变量之间的转换 溢出&#xff08;如何判断&#xff09; #include<stdio.h> char getchar(int x, int y){char c;unsigned int a x;(x y > 10 ) ? (c 1): (c 2…

Linux——I/O复用(select的用法)

一、I/O复用 定义&#xff1a;I/O 复用使得程序能同时监听多个文件描述符&#xff0c;这对于提高程序的性能至关重要。 网络程序在下列情况下需要使用 I/O 复用技术&#xff1a; ◼ TCP 服务器同时要处理监听套接字和连接套接字。◼ 服务器要同时处理 TCP 请求和 UDP 请求。◼ …

RT-Thread的设备模型

RTT内核对象——设备 RT-Thread有多种内核对象&#xff0c;其中设备device就是其中一种。 内核继承关系图如下&#xff1a; 设备继承关系图如下&#xff1a; I/O 设备模型框架 应用程序通过 I/O 设备管理接口获得正确的设备驱动&#xff0c;然后通过这个设备驱动与底层 I/O 硬…

ARM通用中断控制器GIC之中断处理状态机 Interrupt handling state machine

中断有四种状态&#xff1a;inactive&#xff0c;pending&#xff0c;active 和active and pending。而产生中断的方式有两种&#xff0c;一种是通过写pending寄存器&#xff0c;让中断进入pending状态&#xff0c;可以忽略是否真的有物理中断信号&#xff0c;让Distributor将该…

如何构建myquant量化策略?

对于如何构建myquant量化策略这个问题而言&#xff0c;就是获取量化股票接口的基础数据&#xff0c;然后有了基础数据&#xff0c;才能对数据进行加工处理&#xff0c;构建量化策略&#xff0c;进行量化分析&#xff0c;回测和回溯。myquant量化策略主要是基于python进行量化投…

案例实操 | 利用Lambda函数来进行特征工程,超方便的!!

特征工程对于我们在机器学习的建模当中扮演着至关重要的角色&#xff0c;要是这一环节做得好&#xff0c;模型的准确率以及性能就被大大地被提升&#xff0c;今天小编就通过Python当中的lambda函数来对数据集进行一次特征工程的操作&#xff0c;生成一些有用的有价值的特征出来…

nacos--基础--3.4--集成--spring--spring上下文中的一些关键的特性

nacos–基础–3.4–集成–spring–spring上下文中的一些关键的特性 1、spring上下文中的一些关键的特性 注解驱动依赖注入外部化配置事件驱动 2、注解驱动 2.1、 启用 Nacos EnableNacos 是一个模块驱动的注解EnableNacos 支持 Nacos Spring 的所有功能 服务发现&#xff1…

香港服务器托管带宽怎么选?

香港服务器托管时&#xff0c;带宽的选择非常重要&#xff0c;带宽用量的大小不同&#xff0c;最终的费用也就会不同。用户在香港托管服务器的时候&#xff0c;应该选择多大的带宽才合适呢?应该如何选择香港服务器带宽大小呢? 香港服务器托管带宽怎么选? 其实&#xff0c;大…

5G无线技术基础自学系列 | 无线电波传播模型

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 无线电波传播模型用于预测无线电波在各…

JAVA开发(JWTUtil工具类实现token源码赏析)

一、token解决问题的背景&#xff1a; 1、 单点登录&#xff0c; 2、分布式登录状态&#xff0c; 3、在信任期内 避免 重新输入用户名密码登录。 4、跨系统免登陆等。 5、一些接口的请求权限验证。 总结以上token最终都是为了解决在在分布式系统中信任期内 避免 重新输入用户名…

如何选择合适的统计学方法

一般来说&#xff0c;使用哪种统计方法&#xff0c;取决于我们的应用场景、我们的研究目的是什么。 这里面一个麻烦的地方在于&#xff0c;不管你使用哪种统计方法&#xff0c;似乎都可以得出一个’结果’或一个p值&#xff0c;但这个结果有没有意义就两说了。 在我看来&…

【WEB安全】Xstream最新反序列化poc执行报错问题

前言 最近有个需求&#xff0c;用Xstream反序列化打个内存马&#xff0c;从通用性来讲&#xff0c;肯定用1.4.17的洞去打应用范围最广。众所周知&#xff0c;Xstream官方会提供其漏洞的poc。在我实验之下&#xff0c;1.4.17的几个poc只要涉及到任意java代码执行的都会报错&…

VMware创建共享文件夹并实现文件传输(Windows主机,Ubuntu虚拟机)

文章目录创建共享文件夹安装/更新VMware tool挂载共享文件夹共享文件夹的实现更改配置项&#xff0c;实现自动挂载&#xff08;推荐直接用这个&#xff09;数据传输参考博客创建共享文件夹 1、开启虚拟机的共享文件夹配置 首先在虚拟机中打开设置&#xff0c;在选项中点击共享…

Java springboot+vue+MySQLJava大型CRM客户关系管理源码带手机端和小程序源码 Java客户全流程高效管理CRM系统源码

springbootvue MySQL数据库 1. 前端&#xff1a;Vue 2. 后端&#xff1a;Spring boot 3. 数据库&#xff1a;MySQL 源码已经亲测 1. 前端&#xff1a;Vue 2. 后端&#xff1a;Spring boot 3. 数据库&#xff1a;MySQL 小程序是用UNIAPP开发的。 后台登录账户&#xff1a…