深度学习修炼(三)卷积操作 | 边界填充、跨步、多输入输出通道、汇聚池化

news2024/11/25 0:30:34

文章目录

  • 1. 卷积基本操作
  • 2 现代卷积进阶武器操作
    • 2.1 边界 填充
    • 2.2 跨步 步幅
    • 2.3 多输入输出通道
    • 2.4 汇聚 池化
  • 3. 卷积层设计

之前我们讲了 线性分类器

深度学习修炼(一)线性分类器 | 权值理解、支撑向量机损失、梯度下降算法通俗理解_Qodi的博客-CSDN博客

又讲了基于线性分类器的全连接神经网络

深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略_Qodi的博客-CSDN博客

但是 单纯的线性非线性操作有着比较大的局限性

​ 一方面这种全连接网络参数量巨大,另一方面对于位置信息表现比较差。而今天的卷积神经网络非常重要,可以捕捉输入数据中的位置信息,这使得它在处理具有明显空间结构的数据时如图片表现优异。

1. 卷积基本操作

卷积操作可以将输入数据映射为输出数据,同时保留输入数据的空间结构信息。

假设我们有一个3x3的图像像素矩阵,如下所示:

1 2 3 
4 5 6 
7 8 9 

我们希望对这个图像进行卷积操作。为了实现这个操作,我们需要定义一个**卷积核(也称为过滤器)**来滑动在图像上,从而产生一个新的输出图像。

卷积核

1 0
0 1

卷积操作的基本思想是在输入图像上滑动卷积核,对每个位置进行卷积运算,并将结果存储到输出图像中。具体来说,每一次卷积操作的计算方式如下:

  1. 将卷积核的每个元素与输入图像中对应的元素相乘
  2. 将所得到的乘积相加,得到卷积核在当前位置的输出值
  3. 将卷积核向右或向下移动一个位置,重复上述步骤,直到卷积核覆盖完整个输入图像。

拿上面那个例子来说

  1. 对于输出图像中的第一个位置,卷积核与输入图像的左上角区域进行卷积运算,计算方式如下:
1*1 + 0*2 + 0*4 + 1*5 = 6 

因此输出图像中的第一个位置的值为6。
在这里插入图片描述

  1. 对于输出图像中的第二个位置,卷积核向右移动一个位置,与输入图像的右上角区域进行卷积运算,计算方式如下:
1*2 + 0*3 + 0*5 + 1*6= 8

因此输出图像中的第二个位置的值为6。

在这里插入图片描述

  1. 对于输出图像中的第三个位置,卷积核向右移动一个位置,与输入图像的左下角区域进行卷积运算,计算方式如下:
1*4 + 0*5 + 0*7 + 1*8 = 12 

因此输出图像中的第三个位置的值为12

在这里插入图片描述

  1. 对于输出图像中的第四个位置,卷积核向右移动一个位置,与输入图像的右下角区域进行卷积运算,计算方式如下:
1*5 + 0*6 + 0*8 + 1*9 = 14 

因此输出图像中的第四个位置的值为14。
在这里插入图片描述

上面举的例子中

卷积核大小 宽度和高度分别2,2

卷积核从左到右,从上到下遍历 将输入的图像(3*3)转换为特征图(2*2)

这里得到的这个矩阵叫做特征图,可以理解为卷积层对于图像自动提取的特征,各种任务都是建立在特征之上的

对于给定的任意宽高的卷积核($高k_h 宽k_w ) ,对给定宽高的图像( ),对给定宽高的图像( ),对给定宽高的图像(高n_h 宽n_w$)进行卷积操作,输出的形状是可以确定的 卷积核大小

( n h − k h + 1 ) × ( n w − k w + 1 ) (n_h-k_h+1)×(n_w-k_w+1) (nhkh+1)×(nwkw+1)

比如上面的例子中输出形状为

$(3-1+1)×(3-1+1) =2×2 $

2 现代卷积进阶武器操作

当下的卷积 会有很多辅助武器,让卷积的效果变得更好

2.1 边界 填充

我们知道经过卷积之后,输出形状有可能会变小

但有些时候我们希望输出特征图的形状维持不变,这时候就可以进行边界填充,填充后就可以维持不变

最常用的边界填充方法是零填充

对于给定的任意宽高的卷积核($高k_h 宽k_w ) ,对给定宽高的图像( ),对给定宽高的图像( ),对给定宽高的图像(高n_h 宽n_w$)进行卷积操作,左右上下各填充p 则输出形状为

$输出高=(n_h-k_h+2p)+1 $

输出宽 = ( n w − n h + 2 p ) + 1 输出宽= (n_w-n_h+2p)+1 输出宽=(nwnh+2p)+1

比如特征图7*7

卷积核3*3

零填充 1

在这里插入图片描述

则代入输出形状代入公式

输出高 = ( n h − k h + 2 p ) + 1 输出宽 = ( n w − n h + 2 p ) + 1 输出高=(n_h-k_h+2p)+1 输出宽= (n_w-n_h+2p)+1 输出高=(nhkh+2p)+1输出宽=(nwnh+2p)+1

(7-3+1+2×1) ×(7-3+1+2×1) =7×7

这也是为什么很多卷积核设计都是奇数,唯有奇数才能保证填充后前后形状不变

总结填充作用:保持输入输出的形状一致

2.2 跨步 步幅

但有些时候,我们需要降低输出特征图维度,可以指定的间隔进行卷积操作降低特征图维度,可以降低计算量。

另一方面,设置步幅可以控制特征提取的粒度。在卷积神经网络中,卷积核在输入图像上滑动时,会对输入图像的每个局部区域进行特征提取。而设置步幅可以控制卷积核在输入图像上移动的步长大小,从而控制特征提取的粒度。当步幅较小时,卷积核在输入图像上移动的步长较小,可以提取更为精细的特征信息;当步幅较大时,卷积核在输入图像上移动的步长较大,可以提取更为宏观的特征信息。

之前我们默认都是1步操作

对于给定的任意宽高的卷积核($高k_h 宽k_w ) ,对给定宽高的图像( ),对给定宽高的图像( ),对给定宽高的图像(高n_h 宽n_w$)进行卷积操作,左右上下各填充p 跨步S

$输出高=(n_h-k_h+2p)/S+1 $

输出宽 = ( n w − n h + 2 p ) / S + 1 输出宽= (n_w-n_h+2p)/S+1 输出宽=(nwnh+2p)/S+1

2.3 多输入输出通道

多输入通道

在第一节的讲解中,我们默认我们的输入输出都是平面的, 只考虑了宽高的变化

但实际上,真实中往往有多层,专业术语叫做多个通道

比如图片输入往往是3通道的R,G,B 这时候我们就需要构造一个和输入相同通道的卷积核(这个例子中是3)

我们需要把 这样一个多通道的卷积核对齐到图像的某个位置,计算对应元素加权求和再累加,一般还会加一个偏移量

虽然卷积核是多通道的,但在一个位置加权求和累加之和只能得到一个值,意味着只能得到一层的输出
在这里插入图片描述

图片借鉴北京邮电大学鲁鹏老师的课程

多输出通道

如果我们想要输出变成多个,那么我们就可以使用多个卷积核

在这里插入图片描述

使用多少个卷积核,就会得到多少组中间特征图

图示例子是6个

2.4 汇聚 池化

除了跨步可以降低特征图大小,池化也可以

对每一个特征图独立进行,降低特征相应图组中的每个特征相应图的宽度和高度

(1)减少后续卷积层的参数数量,控制过拟合

(2)降低计算资源耗费

池化也有卷积操作一样的填充,步幅,多输入输出通道的概念,输出形状通道数计算公式和卷积都一样

比如,特征图大小4*4

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

现在我们对这个输入特征图进行2×2的最大池化操作,步幅为2,即每个子区域的大小为2×2,卷积核从左上角开始移动,每次向右移动2个像素,最后得到输出特征图大小为2×2,如下所示:

两个基本操作

最大池化

取每个子区域中最大的特征值作为该区域的输出

本例中 输出

6 8
14 16

平均池化

取每个子区域中所有元素的平均值作为该区域的输出

本例中输出

3.5 5.5
11.5 13.5

3. 卷积层设计

每一层的卷积核的

卷积核个数

卷积核尺寸大小

卷积核移动的步幅

是否进行填充

什么时候汇聚池化

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

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

相关文章

看完这篇 教你玩转渗透测试靶机Vulnhub——Toppo: 1

Vulnhub靶机Toppo: 1渗透测试详解 Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:①:信息收集:②:SSH登入:③:SUID提权(python2.7):④&#x…

JAVA面经整理(2)

一)解决哈希冲突的方法有哪些? 哈希冲突指的是在哈希表中,不同的键值映射到了相同的哈希桶,也就是数组索引,导致键值对的冲突 1)设立合适的哈希函数:通过哈希函数计算出来的地址要均匀的分布在整个空间中 2)负载因子调节: 2.1)开放…

Python yaml 详解

文章目录 1 概述1.1 特点1.2 导入 2 对象2.1 字典2.2 数组2.3 复合结构 3 操作3.1 读取3.2 写入 1 概述 1.1 特点 yaml 文件是一种数据序列化语言,广泛用于配置文件、日志文件等特点: ① 大小写敏感。② 使用缩进表示层级关系。缩进时不允许使用 Tab 键…

【VastbaseG100】 FATAL: The account has been locked.

使用VastbaseG100 数据库,查询数据报错。 org.postgresql.util.PSQLException: FATAL: The account has been locked. 帐户已被锁定。 解锁账户呗 ALTER ROLE doc ACCOUNT UNLOCK;ALTER ROLE 用户名 ACCOUNT UNLOCK; 修改密码 ALTER ROLE doc IDENTIFIED BY ZhangS…

【实战项目之个人博客】

目录 项目背景 项目技术栈 项目介绍 项目亮点 项目启动 1.创建SSM(省略) 2.配置项目信息 3.将前端页面加入到项目中 4.初始化数据库 5.创建标准分层的目录 6.创建和编写项目中的公共代码以及常用配置 7.创建和编写业务的Entity、Mapper、…

【操作系统笔记】并发安全问题

用户态抢占和内核态抢占 内核中可以执行以下几种程序: ① 当前运行的进程:陷阱程序(系统调用) 和 故障程序(page fault) ,进程运行在内核态的时候,其实就是在执行进程在用户态触发的…

Qt使用I.MX6U开发板上的按键(原理:将电脑键盘方向键↓在Qt中的枚举值与开发板中按键定义的枚举值一致,这样电脑端测试效果就与开发板的一致)

在上篇介绍了Qt点亮I.MX6U开发板的一个LED,对于Qt控制I.MX6U开发板的一个蜂鸣器原理也是一样的,就不做详细介绍,具体可参考Qt控制I.MX6U开发板的一个蜂鸣器,本篇介绍Qt使用I.MX6U开发板上的按键的相关内容。 文章目录 1. 开发板硬…

第一个 Go 程序“hello,world“ 与 main 函数

第一个 Go 程序"hello,world" 与 main 函数 文章目录 第一个 Go 程序"hello,world" 与 main 函数一.创建“hello,world”示例程序二. “hello,world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…

selenium+python实现基本自动化测试

安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件,实现简单的浏览器操 作的录制与回…

坚鹏:浙江农商联合银行同业核心产品解读与差异化分析培训第7期

浙江农商联合银行同业核心产品解读与差异化分析培训第7期 1952年,浙江第一家农村信用社成立。2004年4月18日,浙江省农信联社成立,承担对全省农信社的管理、指导、协调和服务职能。2021年10月,经国务院批准同意、银保监会批复&…

多目标优化算法:基于非支配排序的鱼鹰优化算法(NSOOA)MATLAB

一、鱼鹰优化算法 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 Python:鱼鹰优化算法(Osprey optimization algorithm&a…

自动驾驶中的决策规划

参考: 【干货篇】轻舟智航:自动驾驶中的决策规划技术(附视频回放 PPT 下载) - AIQ 如图所示, 各模块介绍 定位模块主要负责解答的问题是“车现在在哪里”,是在道路上还是在路口,是在高架桥上还是在停车场里。 感知…

图像锐化,求图像锐化后的图像(数字图像处理大题复习 P6)

文章目录 1. 梯度差分方法 & 罗伯特差分法梯度差分方法罗伯特差分法使用梯度差分法解决本题 2. 有阈值 (T4) 的二值图像输出 用不同图像输出方法求图像锐化后的图像 g(x, y) 梯度图像直接输出设阈值 T4,求二值图像输出 1. 梯度差分方法 & 罗伯特差分法 梯度…

C++ Qt零基础入门进阶与企业级项目实战教程与学习方法分享

Qt是一个卓越的客户端跨平台开发框架,可以在Windows、Linux、macOS进行客户端开发,无缝切换,一统三端;当然除了桌面端,在移动端的早期,Qt也展现了其多才多艺,在Android和ios也可以使用Qt编写app…

外部打开微信小程序支付,H5 、APP

手机浏览器H5打开微信小程序支付,自定义传参_h5调起微信小程序支付_我是小木木的博客-CSDN博客H5网站打开小程序,调用小程序支付功能_h5调起微信小程序支付https://blog.csdn.net/chen_mumu119/article/details/132104048

**20.迭代器模式(Iterator)

意图:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 上下文:集合对象内部结构常常变化各异。对于这些集合对象,能否在不暴露其内部结构的同时,让外部Client透明地访问其中包含的元素…

大数据+大模型的尽头——数据分析师的未来会怎样?

大数据大模型的尽头一定是干掉数据分析师吗? | 近匠

12:STM32---RTC实时时钟

目录 一:时间相关 1:Unix时间戳 2: UTC/GMT 3:时间戳转化 二:BKP 1:简历 2:基本结构 三: RTC 1:简历 2: 框图 3:RTC基本结构 4:RTC操作注意 四:案例 A:读写备份寄存器 1:连接图 2: 步骤 3: 代码 B:实时时钟 1:连接图 2:函数介绍 3:代码 一:时间相关 1:Un…

如何与Linamar Corp 建立EDI连接?

Linamar Corp(以下简称Linamar)是一家全球领先的汽车零部件制造商,总部位于加拿大。随着业务的不断扩展,Linamar 需要与其供应商、分销商和合作伙伴之间实现更高效的业务交流和数据共享。为了提高业务流程的自动化水平&#xff0c…

1.虚拟机无法连接网络,且无法ping通的问题解决

1.介绍 今天操作Jedis连接虚拟机的redis数据库时,连接不上,找了很多解决方案,都解决不了,最后发现是虚拟机的配置问题,虚拟机无法连接网络,且没有设置本机ip地址,所以ifconfig的根本就查不出ip…