深度学习 | CNN卷积核与通道

news2024/11/20 18:31:48

 

10.1、单通道卷积

以单通道卷积为例,输入为(1,5,5),分别表示1个通道,宽为5,高为5。

假设卷积核大小为3x3,padding=0,stride=1。 

运算过程:

        

不断的在图像上进行遍历,最后得到3x3的卷积结果,结果如下: 

        



10.2、多通道卷积

以彩色图像为例,包含三个通道,分别表示RGB三原色的像素值

输入为(3,5,5),分别表示3个通道,每个通道的宽为5,高为5。

假设卷积核只有1个,卷积核通道为3,每个通道的卷积核大小仍为3x3,padding=0,stride=1。

每一个通道配一个卷积核

每一个通道的像素值与对应的卷积核通道的数值进行卷积,因此每一个通道会对应一个输出卷积结果,三个卷积结果对应位置累加求和,得到最终的卷积结果(这里卷积输出结果通道只有1个,因为卷积核只有1个。卷积多输出通道下面会继续讲到)。

可以这么理解:最终得到的卷积结果是原始图像各个通道上的综合信息结果。

        

我们把上述图像通道如果放在一块,计算原理过程还是与上面一样,堆叠后的表示如下:

        

在上面的多通道卷积1中,输出的卷积结果只有1个通道,把整个卷积的整个过程抽象表示,

过程如下:

        

由于只有一个卷积核,因此卷积后只输出单通道的卷积结果

(黄色的块状部分表示一个卷积核,黄色块状是由三个通道堆叠在一起表示的,每一个黄色通道与输入卷积通道分别进行卷积,也就是channel数量要保持一致,图片组这里只是堆叠放在一起表示而已

那么,如果要卷积后也输出多通道,增加卷积核(filers)的数量即可,示意图如下

        

备注:上面的feature map的颜色,只是为了表示不同的卷积核对应的输出通道结果,不是表示对应的输出颜色。

然后将每个卷积核对应的输出通道结果(feature map)进行拼接,图中共有m个卷积核,则输出大小变为(m*w'*h'),其中w'、h'表示卷积后的通道尺寸,原始输入大小为(n*w*h)。

因此整个卷积层的尺寸为(m*n*k1*k2)是一个4维张量,其中m表示卷积核的数量,n表示通道数量,k1表示每一个卷积核通道的宽,k2表示每一个卷积核通道的高。

即:

        卷积核通道数量 = 输入通道数量

        输出通道数量 = 卷积核个数



10.3、代码输出

  •  pytorch所有的输入必须是小批量的,图像虽然是nxmxh的,但是必须要加batch
  • randn从正态分布采样的随机数
  • kernel_size可以是常数(一般是奇数),也可以传入元组如(5,3)
import torch
 
in_channels = 5  #输入通道数量
out_channels =10 #输出通道数量
width = 100      #图像大小
height = 100     #图像大小
kernel_size = 3  #卷积核尺寸
batch_size = 1   #批数量
 
input = torch.randn(batch_size,in_channels,width,height)
conv_layer = torch.nn.Conv2d(in_channels,out_channels,kernel_size=kernel_size)
 
out_put = conv_layer(input)
 
print(input.shape)
print(out_put.shape)
print(conv_layer.weight.shape)

 

  • 输入:5个通道100x100
  • 输出:10个通道 98x98
  • 卷积层权重形状 mxnxw'xh'
  • (1)输入的张量信息为[1,5,100,100]分别表示batch_size,in_channels,width,height
  • (2)输出的张量信息为[1,10,100,100]分别表示batch_size,out_channels,width',height',其中width',height'表示卷积后的每个通道的新尺寸大小
  • (3)conv_layer.weight.shape的输出结果为[10, 5, 3, 3],分表表示

 



10.4、初始化常见参数

padding 填充 —— 若我们希望output大小不变

  • kernel/2 = 填充几圈

代码举例实现:

        


stride 步长 —— 降低图像宽度和高度

  • 本例中 stride = 2


下采样

Max Pooling Layer 最大池化层

  • 通道数量不变,图像大小发生改变
  • 若使用2x2的Maxpooling 默认stride = 2

代码实现:

        


部分文字参考于

【Pytorch深度学习实践】B站up刘二大人之BasicCNN & Advanced CNN -代码理解与实现(9/9)_b站讲神经网络的up土堆-CSDN博客

CNN卷积核与通道讲解 - 知乎

视频讲解及图片来源

10.卷积神经网络(基础篇)_哔哩哔哩_bilibili

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

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

相关文章

Java对象数组练习

定义数组存储三个商品对象,商品的属性:id,名字,价格,库存,创建三个商品对象,并把商品对象存入到数组中 public class Goods {private String id;private String name;private double price;pri…

【深度学习基础知识(一):卷积神经网络CNN基础知识】

深度学习基础知识 深度学习基础知识(一):卷积神经网络CNN基础知识 卷积神经网络CNN基础知识 0、目录 1. CNN卷积神经网络的特点 2. 卷积操作基础知识 2.1 卷积操作的概念2.2 卷积操作的种类2.3 卷积操作后特征图谱大小计算公式 3. 池化操…

定制化推送+精细化运营,Mobpush助力《迷你世界》用户留存率提升23%

随着智能设备的市场下沉,手游市场迎来了爆发式增长,《迷你世界》作为一款于2015年推出的手游,一经问世就饱受欢迎。上线短短三年,迷你世界在应用商店下载量已经高达2亿次,周下载量两千万,稳居第一名&#x…

只会Python,怎么用PC控制无人机自动飞行?

PC-SDK是阿木实验室 (AMOVLAB) 为了简化开源飞控的控制协议MAVLink,优化和维护的一个基于PC电脑运行MAVSDK(支持Windows和Ubuntu)的Python SDK库。 相对于传统的无人机控制开发,开发者无需掌握C/C语言和ROS等相关知识,只要学会Python编程及懂…

百度最强大模型发布,百度网盘和文库的实测体验

🍁 展望:若本篇讲解内容帮助到您,请帮忙点个赞吧, 您的支持是我继续写作的最大动力. 关注我, 带您了解更多 AI 资讯和 AI 小技巧. 引言 2023年百度世界大会在10月17日的春光中于北京的首钢园精彩召开。这次大会的核心主题——“生成未来 PRO…

汽车屏类产品之CMS:流媒体后视镜Camera Monitoring System (CMS)

前言: CMS,有叫电子侧视镜,虚拟倒车镜,电子倒车镜, 电子取代镜等,ISO 国际标准组织称其为摄像头监控系统。电子后视镜由“摄像头+屏幕”组成,汽车外后视镜经历了光学镜面从平面镜到曲面镜的迭代进步,CMS也实现从商用车到乘用车的过渡。显示模式为外部摄像头采集图像,…

java的注解接口Retention

Java的注解接口java.lang.annotation.Retention定义注解保留多长时间。如果在注解接口的声明上没有Retention注解,那么默认的保留策略是RetentionPolicy.CLASS。 Retention只有一个元素value,类型是RetentionPolicy。 RetentionPolicy是一个枚举类型&am…

基于典型行业废水水质与处理工艺特点的吸附树脂产品—CH-87靶向除氟专用树脂

在工业上,含氟矿石开采、金属冶炼、铝加工、炼焦、玻璃、电子、电镀、化肥、农药、锂电池等行业排放的废水中常含有高浓度的氟化物。 所以,国家对于含氟废水的监测和排放也是出台了严格的制度标准。 含氟废水主要来源于氟化工、多晶硅、有色金属冶炼、…

android系统签名 V1,V2,V3

android系统签名 V1&#xff0c;V2&#xff0c;V3 7.1 之前V1 签名 文件路径&#xff08;build\target\product\security&#xff09; apk添加系统权限 <manifest xmlns:android"http://schemas.android.com/apk/res/android" android:sharedUserId"…

操作系统:进程的控制和通信(Windows2000)

文章目录 进程的控制和通信&#xff08;Windows2000&#xff09;一、实验目的二、实验要求与内容、过程与结果 进程的控制和通信&#xff08;Windows2000&#xff09; 一、实验目的 通过对Windows 2000编程&#xff0c;进一步熟悉操作系统的基本概念&#xff0c;并能较好地理…

百度智能云推出,国内首个大模型全链路生态支持体系

在10月17日举行的百度世界2023上&#xff0c;百度智能云宣布&#xff0c;百度智能云千帆大模型服务平台已服务17000多家客户&#xff0c;覆盖近500个场景。 同时&#xff0c;新的企业和开发者还正在不断地涌入千帆&#xff0c;大模型调用量高速攀升。平台上既有年龄仅14岁的小…

相似性搜索:第 6 部分--LSH 森林的随机投影

一、说明 相似性搜索是一个问题&#xff0c;给定一个查询&#xff0c;目标是在所有数据库文档中找到与其最相似的文档。 在数据科学中&#xff0c;相似性搜索经常出现在 NLP 领域、搜索引擎或推荐系统中&#xff0c;其中需要检索最相关的文档或项目以进行查询。有多种不同的方法…

RTOS(5)创建任务函数详解

动态内存使用 面向对象的编程思想 我们想要使用应该结构体&#xff0c;但又不想了解其内部时&#xff0c;一般使用句柄&#xff08;handle&#xff09;&#xff1b;句柄是指针指向结构体&#xff0c;只是同一个结构体类型的另外一种名称而已&#xff1b; 任务&#xff08;tas…

如何学习渗透测试?怎样才能入行?

学习实践&#xff0c;目前只有这路子&#xff0c;自学9月&#xff0c;成功入圈。下面说一下自己的学习路径&#xff0c;都是摸爬滚打&#xff0c;交了N份钱才学会的。 切记一定要先了解整个渗透测试的流程&#xff0c;记住整个流程口诀。 信息收集&打点&#xff0c;漏洞挖…

c语言中数组的四种创建方式和应用场景

数组是语言中常用的一种结构&#xff0c;在c语言中可以使用多种方式来创建数组&#xff0c;每种语法对应于不同的应用场景。 1、在声明数组时指定数组的长度 语法 <类型> <变量>[<长度>]; 当填充数组的内容为运行时动态加入时可以使用此语法&#xff0c;…

高压放大器在无线电能中应用有哪些

高压放大器是一种用于放大电信号的放大器&#xff0c;可以将输入的低电压信号放大到更高的输出电压水平。在无线电通信和其他相关领域中&#xff0c;高压放大器具有广泛的应用。本文将详细介绍高压放大器在无线电能中的应用。 无线电发射&#xff1a;高压放大器在无线电发射中起…

基于Delta Lake的Upserts数据湖方案

导读 基于HDFS的传统数据存储方案由于HDFS等存储平台的限制&#xff0c;只能增加文件不能修改文件中的内容。想要实现某条记录的变更&#xff0c;就需要读取对应的文件并进行重写&#xff0c;效率极低&#xff0c;而且容易引起数据不一致和冲突。Delta Lake是基于Apache Spark…

微前端四:qiankun在开发中遇到的问题

在qiankun开发中会遇到很多问题&#xff0c;上一篇微前端三&#xff1a;qiankun 协作开发和上线部署其实也是在解决一些经常遇到的问题&#xff0c;下面的两点也算是比较经典的了 1、子应用图片路径问题 2、基座是Vue2.0 element ui 配合 子应用 Vue3.0 element plus 导致的样…

idea Java代码格式化规范

引入 最近在公司开发中&#xff0c;遇到了一点小问题&#xff0c;组内各同事的格式化规范不一致。一来导致代码样式并不统一&#xff0c;二来有时候合并代码会出现冲突&#xff0c;因此做一套统一代码格式化规范很有必要。 基础知识 在idea中&#xff0c;可以通过快捷键Ctrl…

数字孪生技术:煤矿运输的未来革命

煤矿是我国能源工业的重要支柱&#xff0c;然而&#xff0c;煤矿运输过程中一直存在着诸多问题&#xff0c;如安全隐患、能源浪费、效率低下等&#xff0c;这不仅对煤矿行业的可持续发展构成威胁&#xff0c;也对环境造成负面影响。因此&#xff0c;数字孪生技术应运而生&#…