【详细】CNN中的卷积计算是什么-实例讲解

news2024/10/6 8:39:41

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/

目录

  • 一、 CNN的基础卷积计算
    • 1.1.一个例子了解CNN的卷积计算是什么
    • 1.2.卷积层的生物意义
  • 二、卷积的拓展:多输入通道与多输出通道
    • 2.1.多输入通道卷积
    • 2.2.多输出通道卷积
  • 三、卷积的实现
    • 3.1.pytorch实现卷积计算-例子
    • 3.2.Conv2d函数的使用方法

卷积计算是CNN中最基本的计算,它是卷积层最重要的组成部分,
下面讲讲CNN的卷积计算过程是什么样的,包括基础卷积计算、多通道卷积计算以及pytorch中的卷积计算。

一、 CNN的基础卷积计算

卷积层是卷积神经网络中最基础的层,基础卷积的计算就是通过一个卷积核对输入进行卷积计算

1.1.一个例子了解CNN的卷积计算是什么

要了解什么是CNN的卷积基础计算,直接通过一个例子来算一算,就一清二楚。
一个卷积计算结果示例如下:
卷积计算示例
下面详细讲讲上面的卷积结果的具体计算过程:
卷积计算详细过程
卷积层中的卷积核就是一个矩阵,直观来看它就是一个窗口,卷积窗口一般为正方形,即长宽一致,
卷积运算通过从左到右,从上往下移动卷积核窗口,将窗口覆盖的每一小块输入进行加权,作为输出

1.2.卷积层的生物意义

卷积核在生物上的意义就相当于动物的眼睛(接受器),
CNN中卷积的意义
卷积核的大小就相当于眼睛的视野范围(接受野),卷积核的权重就相当于眼睛每一处的接收权重
由于视野有限,所以需要通过逐步移动来查看所有内容,其中眼睛移动的步幅就是卷积的步幅

二、卷积的拓展:多输入通道与多输出通道

2.1.多输入通道卷积

卷积计算支持多通道的输入,当输入为k个通道的时,卷积核为3维矩阵,第3维与输入通道保持一致
多输入通道卷积

2.2.多输出通道卷积

卷积计算也支持多通道输出,需要输出多少个通道,就使用多少个卷积核就可以了
多输出通道卷积

三、卷积的实现

3.1.pytorch实现卷积计算-例子

pytorch中使用torch.nn.Conv2d函数来实现卷积的计算
以上述卷积为例,在pytorch中可以如下实现:

import torch
X =  torch.tensor([[[[1,3,1,2],[2,6,8,5],[4,2,1,0]]]], dtype=torch.float32)    # 输入数据
c = torch.nn.Conv2d(1, 1, kernel_size=(2,2),bias = False)                      # 初始化卷积类
c.weight.data =torch.tensor([[[[1,2],[2,0]]]], dtype=torch.float32)            # 设置权重 
out = c(X)                                                                     # 对输入进行卷积计算
#-------------打印结果-----------------------
print('输入数据:',X)                 
print('卷积核:',c.weight.data)
print('卷积结果:',out)

运行结果如下:
运行结果

3.2.Conv2d函数的使用方法

Conv2d函数的完整入参如下:

torch.nn.Conv2d(in_channels
                ,out_channels
                ,kernel_size
                ,stride       = 1
                ,padding      = 0
                ,dilation     = 1
                ,groups       = 1
                ,bias         = True
                ,padding_mode = 'zeros'
                ,device       = None
                ,dtype        = None)

各个参数的解释如下:

in_channels   (int) :图象的通道数,也就是决定卷积核的通道数

out_channels (int) :卷积输出的通道数,也就是用多少个卷积核

kernel_size (int/tuple):卷积核的大小,输入5指5*5的卷积核,输入(3,4)指3*4的卷积核

stride (int/tuple):卷积核的步距

padding(int/tuple/str):边缘填充的象素数,5指上下左右都补充5个象素,(3,4)代表上下补充3象素,左右补3象素

padding_mode (str) :象素填充的方式,可选择项- 'zeros', 'reflect', 'replicate','circular'

dilation(int/tuple):"扩张卷积"的专用参数-扩张率,控制kernel各点之间的间隔数量

groups(int):Number of blocked connections from input channels to output channels. Default: 1

bias(bool):是否对卷积结果添加偏置

*详细可进一步查看 《Conv2d的官方说明》


相关链接:

《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂
《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂
《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂

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

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

相关文章

夏令营1期-对话分角色要素提取挑战赛-第①次打卡

零基础入门大模型技术竞赛 简介: 本次学习是 Datawhale 2024 年 AI 夏令营第一期,学习活动基于讯飞开放平台“基于星火大模型的群聊对话分角色要素提取挑战赛”开展实践学习。 适合想 入门并实践大模型 API 开发、了解如何微调大模型的学习者参与 快来…

Windows系统开启自带虚拟机功能Hyper-V

前言 最近有小伙伴咨询:Windows系统上有自带的虚拟机软件吗? 答案肯定是有的。它就是Hyper-V,但很多小伙伴都不知道怎么打开这个功能。 今天小白就带大家来看看如何正确打开这个Windows自带的虚拟机功能Hyper-V。 开始之前,你…

基于STM32的智能花园灌溉系统

目录 引言环境准备智能花园灌溉系统基础代码实现:实现智能花园灌溉系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统实现4.4 用户界面与数据可视化应用场景:花园灌溉管理与优化问题解决方案与优化收尾与总结 1. 引言 智能花园灌溉系统通过使用ST…

PacBio or Nanopore:测序技术简单对比

前言 在基因组学和生命科学领域,追求知识的旅程不断演变,由揭示DNA和RNA奥秘的技术创新推动。我们熟知的两大测序技术——PacBio和Nanopore,正位于这一领域的前沿。这些由 Pacific Biosciences 和 Oxford Nanopore Technologies 分别开发的先…

【验收支撑】项目验收计划书(Word原件)

软件验收相关的文档通常包括以下,这些文档在软件项目的不同阶段和验收过程中起着关键作用: 1、概要设计说明书: 描述了软件系统的整体架构、主要模块及其相互关系。 2、详细设计说明书: 提供了软件系统中各个模块的详细设计信息&a…

Python | Leetcode Python题解之第204题计数质数

题目: 题解: MX5000000 is_prime [1] * MX is_prime[0]is_prime[1]0 for i in range(2, MX):if is_prime[i]:for j in range(i * i, MX, i):#循环每次增加iis_prime[j] 0 class Solution:def countPrimes(self, n: int) -> int:return sum(is_prim…

基于PI控制的三相整流器控制系统的simulink建模与仿真,包含超级电容充电和电机

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于PI控制的三相整流器控制系统的simulink建模与仿真,用MATLAB自带的PMSM电机设为发电机,输入为转速,后面接一个可以调节电流的三相整流器&#xff0c…

双指针法——快慢指针

前言 Hello,CSDN的小伙伴们,今天我来给大家分享关于双指针方法之一的快慢指针问题 ,希望你们看了这一篇博客,对快慢指针会有更深刻的理解。 移除元素 题目如下: 移除元素 思路一:创建新的数组&#xff…

expandtabs()方法——tab符号转为空格

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 expandtabs()方法把字符串中的tab(\t)符号转为空格,tab(\t)符号默认的空格数是…

Android Lint

文章目录 Android Lint概述工作流程Lint 问题问题种类警告严重性检查规则 用命令运行 LintAndroidStudio 使用 Lint忽略 Lint 警告gradle 配置 Lint查找无用资源文件 Android Lint 概述 Lint 是 Android 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量…

解决403 Forbidden错误的全面指南,快速解决403 Forbidden错误

在浏览互联网时,遭遇到“403 Forbidden”错误可以说是既常见又令人困惑。这个错误提示通常意味着服务器理解请求但拒绝授权访问。尽管它可能看起来让人无从下手,但通过一些方法通常可以找到原因并解决这个问题。 什么是403 Forbidden错误? “…

使用AI工具 Baidu Comate 辅助编码 快速定位修改Bug

一、Baidu Comate 概述 Baidu Comate(百度智能编码助手)是一款基于文心大模型的新一代编码辅助工具。它结合了百度多年积累的编程现场大数据和外部优秀开源数据,旨在为用户提供高质量的编程代码生成和优化服务。Comate的主要目标是提升编码效…

【PL理论深化】(8) Ocaml 语言:元组和列表 | 访问元组中的元素 | 列表中的 head 和 tail | 基本列表操作符

💬 写在前面:本章我们将探讨 OCaml 中的元组(tuple)和列表(list),它们是函数式编程语言中最常用的数据结构。 目录 0x00 元组(Tuple) 0x01 访问元组中的元素 0x02 列表&…

LabVIEW项目外协时选择公司与个人兼职的比较

​在选择LabVIEW项目外协合作伙伴时,外协公司和个人兼职各有优劣。个人兼职成本较低且灵活,但在可靠性、技术覆盖面、资源和风险管理上存在不足。而外协公司拥有专业团队、丰富资源、完善的项目管理和风险控制,尽管成本较高,但能提…

上海六十中学多功能气膜馆项目:轻空间全速推进

项目进展捷报频传 上海六十中学多功能气膜馆项目土建工作已基本完工,今天轻空间团队正式进场,展开气膜部分的施工。我们将为上海六十中学打造一个现代化、环保、高效的多功能气膜馆,提供优质的运动和活动场所。 现场施工一片繁忙 在施工现场&…

C++ | Leetcode C++题解之第204题计数质数

题目&#xff1a; 题解&#xff1a; class Solution { public:int countPrimes(int n) {vector<int> primes;vector<int> isPrime(n, 1);for (int i 2; i < n; i) {if (isPrime[i]) {primes.push_back(i);}for (int j 0; j < primes.size() && i …

【方案+源码】srm供应商招投标管理系统建设方案及源码实现

SRM供应商管理系统功能建设涵盖&#xff1a; 供应商管理&#xff1a;整合供应商信息&#xff0c;实现全生命周期管理。 采购需求管理&#xff1a;精准把握采购需求&#xff0c;优化采购计划。 采购寻源管理&#xff1a;智能寻源&#xff0c;匹配最佳供应商。 采购合同管理&…

【入门】5分钟了解卷积神经网络CNN是什么

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、卷积神经网络的结构1.1.卷积与池化的作用2.2.全连接层的作用 二、卷积神经网络的运算2.1.卷积层的运算2.2.池化的运算2.3.全连接层运算 三、pytorch实现一个CNN例子3.1.模型的搭建3.2.CNN完整训练代码 CNN神…

Golang | Leetcode Golang题解之第203题移除链表元素

题目&#xff1a; 题解&#xff1a; func removeElements(head *ListNode, val int) *ListNode {dummyHead : &ListNode{Next: head}for tmp : dummyHead; tmp.Next ! nil; {if tmp.Next.Val val {tmp.Next tmp.Next.Next} else {tmp tmp.Next}}return dummyHead.Next …

有人物联的串口服务器USR-TCP232-410S基本测试通信和使用方案(485串口和232串口)

1.将 410S(USR-TCP232-410S&#xff0c;简称 410S 下同)的串口通过串口线(或USB 转串口线)与计算机相连接&#xff0c;通过网线将 410S 的网口 PC 的网口相连接&#xff0c;检测硬件连接无错误后&#xff0c;接入我们配送的电源适配器&#xff0c;给 410S 供电。观察指示灯状态…