深度学习理论基础(五)卷积神经网络CNN

目录

  • 一、卷积神经网络基础
    • 1.卷积层
      • (1)内部参数:卷积核权重
      • (2)内部参数:偏置
      • (3)外部参数:填充padding(默认不填充)
      • (3)外部参数:步幅stride(默认步幅为1)
    • 2. 池化层(Pooling)
      • (1) 最大池化层
      • (2) 平均池化层
    • 3. 滤波器--多通道卷积核
      • (1)多通道输入
      • (2)多通道输出

  
  卷积神经网络是一种多层的监督学习神经网络,隐含层的卷积层和池采样层是实现卷积神经网络特征提取功能的核心模块。卷积神经网络结构包括:卷积层,降采样层,全链接层。每一层有多个特征图,每个特征图通过一种卷积滤波器提取输入的一种特征,每个特征图有多个神经元。

一、卷积神经网络基础

   输入数据进入卷积层后,与卷积核进行运算,计算的结果就是得到的特征图。如果得到的特征图尺寸较大,我们可以采用池化层(降采样层)进行降采样,来减小特征图的尺寸。

1.卷积层

conv2d = nn.Conv2d(1, 1, kernel_size=3)   #输入通道1,输出通道1,卷积核为3*3  

(1)内部参数:卷积核权重

   当输入数据进入卷积层后,输入数据会与卷积核进行卷积运算。卷积核相当于权重系数。将卷积核与输入数据对应元素进行加权求和计算出结果。

kernel_size=3      """3*3的卷积核"""
kernel_size=(2,3)  """2*3的卷积核"""

在这里插入图片描述
具体计算步骤:

请添加图片描述

在这里插入图片描述

(2)内部参数:偏置

卷积层也会有偏置操作。
在这里插入图片描述

(3)外部参数:填充padding(默认不填充)

  为了防止经过多个卷积层后图像越卷越小,可以在进行卷积层的处理之前,向输入数据的周围填入固定的数据(比如 0),这称为填充(padding)。这样经过卷积后的图片不会变小,并且可以保留原始图像的边界信息,以便我们设计更深层次的神经网络。
在这里插入图片描述

padding=1 :输入元素上下左右各添加一圈0元素

"""(输入通道、输出通道、卷积核,填充层)"""
"""  padding=1    :输入元素上下左右各添加一圈0元素"""
"""kernel_size=3  :卷积核为3×3 """
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=1)  #举例:                           0  0  0  0  0  0
1  2  3  4                        0  1  2  3  4  0
5  6  7  8              		  0  5  6  7  8  0
9 10 11 12          		      0  9 10 11 12  0
13 14 15 16           		      0 13 14 15 16  00  0  0  0  0  0

padding=(0,1) :输入元素上下维度不添加0,左右维度添加一圈0元素

"""padding=(0,1)      :输入元素上下维度不添加0,左右维度添加一圈0元素"""
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding=(0,1))  #举例:
1  2  3  4                        0  1  2  3  4  0
5  6  7  8              		  0  5  6  7  8  0
9 10 11 12          		      0  9 10 11 12  0
13 14 15 16           		      0 13 14 15 16  0

padding=‘SAME’ :在输入的周围添加足够的零填充,以确保卷积操作的输出尺寸与输入尺寸相同

 """padding='SAME '  即在输入的周围添加足够的零填充,以确保卷积操作的输出尺寸与输入尺寸相同"""
conv2d = nn.Conv2d(1, 1, kernel_size=3, padding='SAME' )  

(3)外部参数:步幅stride(默认步幅为1)

  在卷积操作中,步幅(stride)是指卷积核在输入数据上滑动的步长。它决定了输出特征图的空间尺寸。
   具体来说,步幅控制了卷积核在输入数据的行和列方向上的移动距离。如果步幅为 1,那么卷积核将以一次一个像素的速度沿着输入数据的行和列方向滑动。而如果步幅为 2,则每次移动两个像素,以此类推。

stride=2 :行列步幅都为2。

conv2d = nn.Conv2d(1, 1, kernel_size=2, stride=2)

如下:
在这里插入图片描述

stride=(2,3) :行步幅为2,列步幅为3。

conv2d = nn.Conv2d(1, 1, kernel_size=(3, 5), padding=1,  stride=(2,3))

  

2. 池化层(Pooling)

  池化层是卷积神经网络中的一种常用层,用于减少特征图的空间尺寸,从而减少参数数量并且降低模型的计算复杂度。池化操作通常应用于卷积层的输出之后,通过对局部区域进行汇聚(如取最大值或求平均值)来减小特征图的尺寸。
   池化层分为:最大池化和平均池化。

(1) 最大池化层

原理:取得原特征图窗口大小内元素的最大值作为新的特征图元素。

max_pool_layer = nn.MaxPool2d(kernel_size=2, stride=2)

在这里插入图片描述

(2) 平均池化层

原理:取得原特征图窗口大小内元素的平均值作为新的特征图元素。

avg_pool_layer = nn.AvgPool2d(kernel_size=2, stride=2)

在这里插入图片描述
  

3. 滤波器–多通道卷积核

   上述的卷积层,仅仅针对二维的输入与输出数据(一般是灰度图像),可称之为单通道。但是,彩色图像除了高、长两个维度之外,还有第三个维度:通道(channel)。例如,以 RGB 三原色为基础的彩色图像,其通道方向就有红、黄、蓝三部分,可视为 3 个单通道二维图像的混合叠加。
   一般的,当输入数据是二维时,权重被称为卷积核(Kernel);当输入数据是三维或更高时,权重被称为滤波器(Filter)。
   在卷积神经网络(CNN)中,滤波器用于提取图像中的特征。每个滤波器都可以看作是一个多通道的卷积核,因为它在图像的每个通道上进行卷积操作,并输出一个单通道的特征图。

(1)多通道输入

   对三维数据的卷积操作下图所示,输入数据与滤波器的通道数必须要设为相同的值,可以发现,这种情况下的输出结果降级为了二维特征图,也就是单通道。
   简单来说:输入数据有多少个通道就决定了一个滤波器有多少个通道。
在这里插入图片描述
在这里插入图片描述
计算过程:

在这里插入图片描述

(2)多通道输出

   当通过一个多层卷积核(滤波器)时,输出就被降成二维特征图了。大多数时候我们需要三维的特征图时就可以多经过几个滤波器,单个滤波器会生成单通道的特征图,多个滤波器就可以生成多个特征图,我们把这些多个特征图合并,就变成了多通道的特征图,因此就有了多通道输出。
   简单来说:有多少个滤波器(多通道卷积核),输出特征图就有多少个通道。在这里插入图片描述 在这里插入图片描述

   别忘了,卷积运算中存在偏置,如果进一步追加偏置的加法运算处理,则结果如下图所示,每个通道都有一个单独的偏置。
在这里插入图片描述

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

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

相关文章

分月饼 java题解

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in); int m sc.nextInt(); // 读取员工数量mint n sc.nextInt(); // 读取月饼数量n// 调用distribute方法并打印返回的分配方法总数//先默认每人分一个…

Google DeepMind 大语言模型中的长形态事实性

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 论文标题:Long-form factuality in large language models 论文链接:https://arxiv.org/abs/2403.18802 论文的关键信息总结如下: 研究问题是什么?论文…

如何优化Flutter应用以通过iOS应用商店的审核流程

本文探讨了使用Flutter开发的iOS应用能否上架,以及上架的具体流程。苹果提供了App Store作为正式上架渠道,同时也有TestFlight供开发者进行内测。合规并通过审核后,Flutter应用可以顺利上架。但上架过程可能存在一些挑战,因此可能…

kubernetes-dashboard 安装配置

k8s 1.23以上的版本 https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 执行命令: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 安装完成后&#x…

寒冬已逝,“量子春天”正来

最近,全球对量子技术领域的私人投资有所下降,引发了一些观点认为这个领域可能正逐渐衰退。 政治家、资助者和投资者并不总是以科学为关注焦点。然而,某些科技领域偶尔会成为热点,正如20世纪50年代核能技术的兴起,那时人…

【Linux】ubuntu安装google gtest框架

本文首发于 ❄️慕雪的寒舍 ubuntu 22.04.03 LTS 安装 google gtest 框架 1.依赖项 首先在ubuntu中安装如下包 sudo apt install -y unzip g gcc cmake make automake2.下载软件包 进入google gtest的github页面,下载源码包 Releases google/googletest https…

EXCEL通过VBA字典快速分类求和

EXCEL通过VBA字典快速分类求和 汇总截图 Option ExplicitOption Explicit Sub answer3() Dim wb As Workbook Dim sht As Worksheet Set wb ThisWorkbook Set sht wb.Worksheets(2) Dim ss1 As Integer Dim ss2 As Integer Dim i As Integer Dim j As Integer j 1Dim aa()…

Linux环境基础和工具的使用

目录 1、Linux软件包管理器---yum 2、Linux开发工具 2.1、vim基本概念 2.2 vim基本操作 2.3 vim正常模式命令集 2.4 vim末行模式命令集 2.5 简单vim配置 2.5.1 配置文件的位置 3 Linux编译器--gcc/g的使用 3.1 背景知识 3.2 gcc完成 4 Linux调试器--gdb使用 4.1 背…

文件操作(2)【文件的随机读写】【文件读取结束的判定】

一.文件的随机读写 1.fseek函数 这个函数可以根据文件指针的位置和偏移量来定位文件指针(文件内容的光标)。有三个参数: stream:文件指针,指向要设置位置的文件。offset:偏移量,可以为正数、负…

Vue3:用Pinia的storeToRefs结构赋值store数据

一、情景描述 我们学习了Pinia之后,知道,数据是配置在Pinia的state里面的。 那么,如果有多个字段需要取出来使用,并且不丢失数据的响应式,如何优雅的操作了? 这里就用到了Pinia的storeToRefs函数 二、案…

三角形最小路径和

题目链接 三角形最小路径和 题目描述 注意点 -10000 < triangle[i][j] < 10000triangle[i].length triangle[i - 1].length 1triangle[0].length 1 解答思路 由题意得&#xff0c;到达任意第i层第j个节点的路径和一定是由第i - 1层第j - 1或第j个节点到达&#x…

JavaScript高级应用

学习作用域、变量提升、闭包等语言特征&#xff0c;加深对 JavaScript 的理解&#xff0c;掌握变量赋值、函数声明的简洁语法&#xff0c;降低代码的冗余度。 理解作用域对程序执行的影响 能够分析程序执行的作用域范围 理解闭包本质&#xff0c;利用闭包创建隔离作用域 了解…

直方图均衡化的本质

Rafael C. Gonzalez “Digital Image Processing”的错误 直方图均衡化的本质是灰度级分布的近邻映射&#xff0c;这部分的内容全错。总有些人崇洋媚外。 我修改了相关的内容&#xff0c;参阅禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程…

如何召开一次创意十足的OKR头脑风暴会?

召开一次创意十足的OKR&#xff08;Objectives and Key Results&#xff0c;目标与关键成果&#xff09;头脑风暴会&#xff0c;是激发团队成员智慧、明确共同目标并落实关键行动的重要环节。下面将详细列举召开此类头脑风暴会的具体步骤&#xff0c;以确保会议达到预期效果。 …

Outlook会议邀请邮件在答复后就不见了

时常会有同事找到我说&#xff0c;Outlook答复会议邀请邮件后收件箱就找不到会议邀请的邮件了。 这其实是Outlook的的一个机制&#xff0c;会把应答后的会议邀请邮件从收件箱自动删除&#xff0c;到已删除的邮件那里就能找到。如果不想要自动删除&#xff0c;改一个设置即可。…

HarmonyOS 应用开发之自定义组件的自定义布局

如果需要通过测算的方式布局自定义组件内子组件的位置&#xff0c;建议使用以下接口&#xff1a; onMeasureSize&#xff1a;组件每次布局时触发&#xff0c;计算子组件的尺寸&#xff0c;其执行时间先于onPlaceChildren。 onPlaceChildren&#xff1a;组件每次布局时触发&…

【Python学习】—Python常见的面试题

【Python学习】—Python常见的面试题 1、一个变量没有定义报什么错误 一般在 python 中会有红色的波浪线标出来要是运行后&#xff0c;就直接会报变量没定义的错&#xff1a;NameError&#xff1a; name’i’ is not defined 2、 列表与元组的区别 他们最大的区别 列表可以…

[游戏开发]Unreal引擎知识

工程通常会选择Development_Editor模式&#xff0c;它会过滤掉很多Debug信息&#xff0c;开发期间占用内存更小&#xff0c;项目运行更流畅&#xff0c;但也有缺点&#xff0c;就是部分断点信息看不到&#xff0c; 有两种解决办法&#xff1a; 1&#xff0c;选择DebugGame_Ed…

树与二叉树的应用试题

01&#xff0e;在有n个叶结点的哈夫曼树中&#xff0c;非叶结点的总数是( A ). A. n-1 B. n C. 2n-1 D.2n解析&#xff1a;哈夫曼树中只有度为0和2的结点&#xff0c;在非空二…

相关滤波跟踪算法-CSK

0. 写在前面 对相关滤波算法综述比较强的文档&#xff1a; NIUBILITY的相关滤波框架详解 - 知乎 (zhihu.com) 1. 概述 相关滤波算法问世之前&#xff0c;跟踪算法饱受运行时间的困扰&#xff0c;直到MOSSE算法出现&#xff0c;直接将算法速度提到了615fps&#xff0c;第一次将…