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

 

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 torchin_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.mzph.cn/news/109206.shtml

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

相关文章

Ask Milvus Anything!聊聊被社区反复@的那些事儿ⅠⅠ

在上月的 “Ask Milvus” 专题直播中,我们为大家带来了 Backup 的技术解读,收到了社区成员很多积极的反馈。本期直播,我们将继续为大家带来社区呼声很高的 “Birdwatcher” 和 “Range Search” 两项功能的技术解读。 BirdWatcher 作为 Milvu…

Eolink Apikit 接口自动化测试流程

自动化测试是一种软件测试方法,利用自动化工具和脚本来执行测试用例,以验证软件应用程序的功能、性能、稳定性等特性。自动化测试的主要目的是提高测试效率、减少测试成本,并确保软件的质量和可靠性。 作为测试人员,在进行比较大…

国际十大优质期货投资app软件最新排名(综合版)

在当今的金融市场中,期货投资成为了越来越多人的选择。随着科技的发展,许多优质的期货投资app软件也应运而生。这些软件不仅提供了便捷的投资交易工具,还为投资者提供了丰富的市场分析和风险管理手段。 本文将介绍国际十大优质期货投资app软…

Python中Scrapy框架搭建ip代理池教程

在网络爬虫开发中,使用代理IP池可以提高爬取效率和匿名性,避免被目标网站封禁IP。本文将介绍如何使用Python中的Scrapy框架搭建IP代理池,并提供代码实例,帮助您快速搭建一个稳定可靠的代理池。 Python中Scrapy框架搭建ip代理池教程…

基于 Servlet 的博客系统

基于 Servlet 的博客系统 一、准备工作1、创建项目2、创建包3、导入前端静态页面 二、数据库设计1、blog(博客表)2、user(用户表)3、建库建表的 SQL 语句 三、封装数据库操作1、为什么要封装数据库?2、封装数据库的连接…

鸿蒙初体验

下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网,单击“立即下载”进入下载页面。 DevEco Studio提供了Windows版本和…

小谈设计模式(30)—Java设计模式总结

小谈设计模式(30)—Java设计模式总结 专栏介绍专栏地址专栏介绍 总括三个主要类别abc 创建型模式(Creational Patterns)常见的创建型模式单例模式(Singleton Pattern)工厂模式(Factory Pattern&…

嵌入式养成计划-41----C++ auto--lambda表达式--C++中的数据类型转换--C++标准模板库(STL)--list--C++文件操作

九十九、auto 99.1 概念 C11引入了自动类型推导,和Python不一样,C中的自动类型推导,需要auto关键字来引导比如 :auto a 1.2; 会被编译器自动识别为 a 为 double 类型 99.2 作用 auto修饰变量,可以自动推导变量的数…

嵌入式平台的电源总结

本文引注: https://mp.weixin.qq.com/s/PuSxHDFbJjjHEReukLSvyg 1.AC的定义 Alternating Current(交流)的首字母缩写。AC是大小和极性(方向)随时间呈周期性变化的电流。电流极性在1秒内的变化次数被称为频率,以Hz为单位…

Elasticsearch小bug记录:term: XXX was completely eliminated by analyzer

问题: 下面这个报错,是在配置同义词的时候报的错:不能识别南京。 {"error": {"root_cause": [{"type": "illegal_argument_exception","reason": "failed to build synonyms"…

Conflence 空间管理

1.创建空间 功能入口: Conflence→空间→创建空间 功能说明: (1)选择“空白空间”,点击“下一步” (2)填写空间必要信息,点击“创建”按钮,即可完成空间创建 空间名…

力扣 095. 最长公共子序列(C语言+动态规划)

1. 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符&#xff08…

什么是云原生?零基础学云原生难吗?

伴随着云计算的浪潮,云原生概念也应运而生,而且火得一塌糊涂,但真正谈起“云原生”,大多数非 IT 从业者的认知往往仅限于将服务应用放入云端,在云上处理业务。实际上,云原生远不止于此。 现在越来越多的企…

SVN服务端客户端安装配置

SVN服务端客户端安装配置 1、服务端下载安装1.1 软件下载1.2 软件安装 2、客户端下载安装2.1 软件下载2.2 软件安装2.2.1 安装2.2.2. 汉化 3、SVN配置3.1 SVN服务器端配置3. 2 SVN客户端配置 1、服务端下载安装 1.1 软件下载 百度网盘链接:VisualSVN-Server-5.3.0…

SAP-QM-采购过程模式与特性检验不匹配QD244

在创建物理样本,维护检验计划的采样过程时报错,从报错看,这个采样过程的评估模式和检验特性不匹配, 评估模式为700 700是根据特征上下线,计算平均值进行评估,是定量特性,经过测试 是检验特性的…

Window 窗口函数 (Spark Sql)

在 Spark SQL 中,Window 函数是一种用于在查询结果集中执行聚合、排序和分析操作的强大工具。它允许你在查询中创建一个窗口,然后对窗口内的数据进行聚合计算。 import org.apache.spark.sql.expressions.Window import org.apache.spark.sql.functions…

Typora使用教程

相关介绍 Typora是一款所写即所得的Markdown编辑器,支持跨平台Window,Linux和Mac都可以。 相关链接 Typora安装包历史版本地址:官网历史版本地址 问题及知识点汇总 关于图片的问题-设置图像自动复制到自己指定文件夹下 问题描述 在写笔记的过程中&am…

【yolov8系列】yolov8的目标检测、实例分割、关节点估计的原理解析

1 YOLO时间线 这里简单列下yolo的发展时间线,对每个版本的提出有个时间概念。 2 yolov8 的简介 工程链接:https://github.com/ultralytics/ultralytics 2.1 yolov8的特点 采用了anchor free方式,去除了先验设置可能不佳带来的影响借鉴Genera…

MongoDB 未授权访问漏洞

简介 MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,它的特点是高性能、易部署、易使用,存储数据非常方便,默认情况下是没有认证的这就导致不熟悉它的研发人员部署后没有做访问控制导致…

智能化安全巡更巡查系统—提升安全管理效率

传统的巡检都是手工完成,记录、拍照,回到办公室打印表单再交给作业队伍整改,再去现场核实复查,流程繁琐,效率低。而且大部分工地为了减少麻烦,人员往往都是口头沟通,存在很大质量风险&#xff0…