【机器学习300问】96、怎么理解卷积神经网络CNN中的卷积操作?

news2024/11/18 21:35:41

        卷积操作是卷积神经网络(CNN)中的一种核心组件。要讲清楚卷积操作,我们只需要回答以下四个问题:什么是卷积核?卷积运算的规则是什么?padding是什么?stride是什么?

        下面让我以图像处理为例子,为大家依次回答上面这几个问题。

一、什么是卷积核?

        卷积核(Filter或Kernel)是一个小型的、可学习的权重矩阵,也常被称为特征检测器或过滤器。卷积核的尺寸(例如,3x3, 5x5等)是预先设定的,并且它的每个元素都有一个特定的数值。卷积核的数量通常对应于想要从输入数据中提取的特征种类数量。

如果想进一步理解卷积核的特征检测作用可以看看我的另一篇文章:

【机器学习300问】98、卷积神经网络中的卷积核到底有什么用?以边缘检测为例说明其意义。icon-default.png?t=N7T8http://t.csdnimg.cn/4J6wd

【注】Filter一般是奇数,这样一来可以在计算p=\frac{f-1}{2}不出现小数情况,二来能保证卷积核有一个中心点。

二、卷积运算的规则是什么?

(1)卷积操作的规则 

        卷积运算是指在卷积层中,卷积核在输入数据(如图像矩阵)上滑动,执行元素级别的乘法和求和操作。具体过程是,将卷积核的每个元素与输入数据上对应的元素相乘,然后将所有乘积相加以得到输出特征图上的一个值。这一过程在整个输入数据上重复进行,每次滑动一定的步长(stride),直至遍历整个输入数据。

标准卷积,步长为1,无填充

(2)卷积操作的输出

        卷积操作的输出被称为特征映射,它表示了输入数据在特定滤波器下的响应强度。每个特征映射展示了输入数据中与该滤波器对应的特征的存在和分布情况。

        你仔细观察上面的动图,你会发现标准卷积操作有两个缺点

  • 输出图片的尺寸相比输入图片会变小。
  • 边缘像素参与卷积次数相比中间像素明显少很多,这意味这卷积操作忽略了边缘信息。 

(3)卷积操作中矩阵形状变化

        怎么计算一个n \times n矩阵与f \times f的卷积核进行卷积后的输出矩阵的形状呢?(在没有填充,步幅为1时)可以通过下面这个公式来进行计算:

[n \times n ] * [f \times f] = [(n-f+1) \times (n-f+1)]

三、填充和步幅对卷积操作的影响

(1)Padding填充

        Padding 是在输入数据(如图像)的边缘添加额外的像素层的过程。这些额外的像素通常被初始化为0,但也可以根据需要设置为其他值或进行镜像填充等。当填充一层的时候,我们写作p=1

5x5的输入矩阵和3x3的卷积核进行卷积运算,其中s=1,p=1

        Padding操作的目的就是为了解决标准卷积带来的两个问题,padding有以下的优势:

  1. 保持输出尺寸:通过在输入的边缘添加足够的填充,可以确保卷积操作后的输出特征图尺寸与输入尺寸相同或接近,这对于构建更深的网络结构特别有用,因为它允许网络在不连续缩小特征图尺寸的情况下进行多层卷积。

  2. 保留边界信息:没有Padding的情况下,卷积操作可能会快速丢失图像边缘的信息,因为边缘像素参与的卷积次数较少。适当添加Padding可以帮助保留这些信息,提高对边缘特征的学习能力。

  3. 实现特定的对称性:在某些情况下,特定的Padding策略(如“same”填充,确保输出尺寸与输入相同)可以保持数据的某种对称性或周期性特征。

(2)Stride步幅

        Stride 指的是卷积核在输入数据上滑动时的步长,即每次跳跃的像素数。

s=2的卷积操作

        stride是控制卷积层输出特征图尺寸的另一个重要因素,这样做的好处是:

  1. 减少计算量和尺寸:当Stride大于1时,卷积核在输入数据上跳过某些位置,这样可以减少计算量,同时减小输出特征图的尺寸,从而增加模型的计算效率,有时也用于降低特征图的空间分辨率。

  2. 增加感受野:更大的Stride意味着每个输出特征单元覆盖的输入区域更大,这可以增加网络的感受野,使其能够捕捉到更广泛的上下文信息,但同时也可能导致一些细节信息的损失。

  3. 控制模型复杂度:通过调整Stride,可以在计算资源限制和模型性能之间找到平衡,较大的Stride可以简化模型,而较小的Stride可以增加模型的表达能力。

(3)引入padding和stride后卷积操作中的矩阵形状如何变化

        当padding为p,stride为s时,一个n \times n矩阵与一个f \times f的卷积核之间进行卷积操作,得到的输出矩阵的形状大小是多少?计算方式如下:

[n \times n] * [f \times f] = [(\frac{n+2p-f}{s}+1) \times (\frac{n+2p-f}{s}+1)]

        如果上式的结果算出来不是整数的话,就用地板除法来处理。这样做可以理解为当卷积核过滤器超出边界时不进行该次卷积计算。

(4)两种常见的卷积操作策略

  • Valid卷积(无填充卷积):在Valid卷积中,不对输入数据进行任何填充(Padding)。由于没有额外的填充,输出特征图的尺寸相比输入数据会减小。此策略常用于减少数据维度、提取更高级别的特征或者在特征检测的最后阶段。
  • Same卷积(保持尺寸卷积):Same卷积的目标是在卷积操作后保持输出特征图的尺寸与输入数据相同,通过计算合适的Padding量(p=\frac{f-1}{2}),可以确保输出特征图的尺寸与输入相同(在步长为1的情况下)当希望在不改变数据空间尺寸的前提下提取特征,或者在模型的中间层维持特征图尺寸以便于后续处理时,Same卷积是优选策略。这对于保持空间信息和便于定位任务(如对象检测)尤为重要。

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

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

相关文章

嵌入式进阶——蜂鸣器

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 蜂鸣器原理图测试发声乐理知识乐理应用PWM测试发声PWM驱动封装 蜂鸣器 蜂鸣器是一种能够产生固定频率的声音的电子元件。它通常由…

没有电商经验的人去操作抖音小店,难度大不大?好操作吗?

大家好,我是电商小V 很多新手小伙伴想去操作抖音小店项目,咨询的最多的问题就是我没有电商运营的经验可以去操作吗? 当然是可以操作的,抖音小店项目对于新手来说是一个非常友好的项目,很多小伙伴都是感觉没有电商经验去…

产品经理-流程图结构图(四)

1. 流程图 1.1 概念 为了达到特定的目标而进行的一系列有逻辑性的操作步骤,由两个及以上的步骤,完成一个完整的行为的过程,可称之为流程 1.2 产品经理为什么需要绘制流程图? 保证产品的使用逻辑合理顺畅向项目组其他成员清晰的…

2024最新前端面试八股文【基础篇293题】

⼀、HTML、HTTP、web综合问题 1 前端需要注意哪些SEO 2 <img> 的 title 和 alt 有什么区别 3 HTTP的⼏种请求⽅法⽤途 4 从浏览器地址栏输⼊url到显示⻚⾯的步骤 5 如何进⾏⽹站性能优化 6 HTTP状态码及其含义 7 语义化的理解 8 介绍⼀下你对浏览器内核的理解 9 …

QT常量中有换行符

头文件添加&#xff1a; #pragma execution_character_set("utf-8")

深入理解计算机系统 家庭作业4.52

练习题4.3 p.254 \sim\seq\seq-full.hcl文件内已经说的很清楚了哪些不能更改,哪些是题目要求更改的控制逻辑块. 依据家庭作业4.51的答案,在seq-full.hcl文件内更改对应的HCL描述即可 以下答案注释了#changed的就是更改部分 #/* $begin seq-all-hcl */ ######################…

CCF CAT- 全国算法精英大赛(2024第二场)往届真题练习 3 | 珂学家

前言 这是2024年第一场CCF初赛的题&#xff0c; 其实整场比赛&#xff0c;感觉不是特别难&#xff0c;就是码量大&#xff0c;偏模拟和数学。 对于A题&#xff0c;摩斯密码&#xff0c;很容易抄错&#xff0c;我一直在想有什么好办法可以规避它&#xff0c;是真的苦涩。 真题…

Linux系统启动原理

Linux系统启动原理及故障排除 Centos6系统启动过程 修改系统启动级别 vim /etc/inittabCentos7启动流程 加载BIOS信息&#xff0c;进行硬件检测 根据BIOS设定读取设备中的MBR&#xff0c;加载Boot loader 加载内核&#xff0c;内核初始化以后以模块的形式动态加载硬件 并且加…

死锁及线程与队列之间的等待关系

死锁及线程与队列之间的等待关系 死锁及线程与队列之间的等待关系案例一案例二案例三案例四案例五 结语 死锁及线程与队列之间的等待关系 我想要补充一下我之前GCD学习中没能理解清楚的死锁及线程与队列之间的等待关系&#xff0c;因为在看锁的博客时&#xff0c;有人给出了一…

如何在 Elasticsearch 中选择精确 kNN 搜索和近似 kNN 搜索

作者&#xff1a;来自 Elastic Carlos Delgado kNN 是什么&#xff1f; 语义搜索&#xff08;semantic search&#xff09;是相关性排名的强大工具。 它使你不仅可以使用关键字&#xff0c;还可以考虑文档和查询的实际含义。 语义搜索基于向量搜索&#xff08;vector search&…

Gradient-checkpointing的原理

原文&#xff1a; 将更大的网络安装到内存中。|by 雅罗斯拉夫布拉托夫 |张量流 |中等 (medium.com) 前向传播时&#xff0c;隔几层就保留一层activation数据&#xff0c;其余层的activation都释放掉&#xff1b; 反向传播时&#xff0c;从最近的checkpoint去重新跑forward&…

Docker部署SpringBoot项目(jar包+Mysql)

部署Java项目 项目准备准备Java项目镜像准备配置网络 部署项目细节展示 项目准备 准备Java项目 hmall项目是一个maven聚合项目&#xff0c;使用IDEA打开hmall项目&#xff0c;查看项目结构如图&#xff1a; 我们要部署的就是其中的hm-service&#xff0c;其中的配置文件采用…

前 9 名最佳视频转换器软件完全免费

前 9 名免费视频转换器是什么&#xff1f;在此视频转换器评论中&#xff0c;我们收集了一些有用的提示并列出了顶级免费视频转换器软件&#xff0c;并找出适合所有级别&#xff08;从初学者到专家&#xff09;的最佳免费视频转换器。 顶级视频转换器列表 在这一部分中&#xf…

go 爬虫之 colly 简单示例

1. 背景 colly 是 Go 实现的比较有名的一款爬虫框架&#xff0c;而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速&#xff0c;设计非常优雅&#xff0c;并且分布式的支持也非常简单&#xff0c;易于扩展。 2. 官方文档 https://go-col…

【简单易用,新人友好】一个轻量级生物信息学流程框架,从此解决99%的生物信息学流程搭建问题...

生物信息学数据分析流程的搭建是一项繁重而复杂的工作。随着行业的发展&#xff0c;各种生信流程框架层出不穷&#xff0c;比如有: NextflowSnakemakeCWLWDL 各种标准&#xff0c;各种规则&#xff0c;令人眼花缭乱。选择太多&#xff0c;往往令人无所适从。特别是新进入行业的…

03自动辅助导航驾驶NOP其实就是NOA

蔚来NOP是什么意思&#xff1f;蔚来NOP是啥 蔚来NOP的意思就是NavigateonPilot智能辅助导航驾驶&#xff0c;也就是大家俗称的高阶辅助驾驶&#xff0c;在车主设定好导航路线&#xff0c;并且符合开启NOP条件的前提下&#xff0c;蔚来NOP可以代替驾驶员完成从A点到B点的智能辅助…

<学习笔记>从零开始自学Python-之-实用库篇(一)-pyscript

由Anaconda创建的PyScript是一项实验性的但很有前途的新技术&#xff0c;它使python运转时在支撑WebAssembly的浏览器中作为一种脚本言语运用。 每个现代常用的浏览器现在都支撑WebAssembly&#xff0c;这是许多言语&#xff08;如C、C和Rust&#xff09;能够编译的高速运转时…

springboot项目,@Test写法 @Before @After

某文件示例 package cn.xxx.crm.boss;import cn.xxxx.crm.manager.mq.rabbit.AliyunCredentialsProvider; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; im…

大模型提示词Prompt学习

引言 关于chatGPT的Prompt Engineer&#xff0c;大家肯定耳朵都听起茧了。但是它的来由&#xff1f;&#xff0c;怎么能用好&#xff1f;很多人可能并不觉得并不是一个问题&#xff0c;或者说认定是一个很快会过时的概念。但其实也不能说得非常清楚&#xff08;因为觉得没必要深…

x264 码率控制中实现 VBV 算法源码分析

关于 VBV 的解释与原理可以参考x264 码率控制 VBV 原理。 x264中 VBV 算法执行的流程 vbv 参数配置相关函数 x264_param_default函数 功能:编码参数默认设置,关于 vbv的参数的默认设置;函数内vbv相关代码:/* ... */ //代码有删减 param->rc.i_vbv_max_bitrate = 0; par…