卷积神经网络 CNN

目录

卷积网络与传统网络的区别

参数共享

卷积神经网络整体架构

卷积操作的作用

卷积核的定义

卷积特征值计算方法

卷积层涉及的参数

边缘填充

​编辑

卷积结果计算

 池化层

整体网格架构

VGG网络架构

 残差网络Resnet

卷积网络与传统网络的区别

卷积神经网络(CNN)和传统神经网络在输入和参数共享方面有所不同。

传统神经网络的输入是一个向量,即一维数据。而卷积神经网络的输入是一个三维长方体矩阵,即高度 * 宽度 * 3通道,或者行数 * 列数 * 3通道。这种不同的输入形式导致了神经网络的权重参数和输出结果也不同。

在传统神经网络中,每个神经元都有自己的权重参数,这意味着参数的数量非常庞大。而卷积神经网络通过参数共享的方式来解决这个问题。具体来说,卷积神经网络使用相同的卷积核对输入的每个小区域进行特征提取,即核里的每个值都是相同的。这样一来,参数的数量大大减少,同时也提高了训练效率和防止过拟合的能力。

因此,卷积神经网络通过输入的三维结构和参数共享的方式,与传统神经网络在处理图像等二维数据方面具有更好的效果。

参数共享

卷积神经网络中的参数共享是指在一个模型的多个函数中使用相同的参数。在传统的神经网络中,每个权重矩阵的元素只使用一次。而在卷积神经网络中,卷积核的每个元素都作用在输入的每一个位置上,即一个核扫遍整个输入,而不是动一下一个核。这种参数共享的方式保证了我们只需要学习一个参数集合,而不是对于每一个位置都需要学习一个单独的参数集合。这样可以大大减少需要学习的参数数量,提高模型的效率和泛化能力。

例如,在卷积层中,我们可以使用一个卷积核来提取图像的特征。这个卷积核在整个图像上滑动,对每个位置的图像块进行卷积操作。由于参数共享,这个卷积核的参数在整个图像上都是相同的,因此可以提取出图像的局部特征。这种参数共享的方式使得卷积神经网络能够具有平移不变性,即对于图像的平移操作不会改变提取到的特征。

通过参数共享,卷积神经网络能够在处理图像时具有不变性,能够识别偏移图案、识别倾斜或轻微扭曲的图像。这种特点使得卷积神经网络在图像处理和计算机视觉任务中表现出色。

卷积神经网络整体架构

卷积神经网络(Convolutional Neural Network,CNN)是一种主要应用于图像领域的神经网络结构,用于解决传统神经网络在处理图像时出现的过拟合和权重过多等问题。

卷积神经网络的整体架构包括以下几个主要组件:
1. 卷积层(Convolutional Layer):卷积层是卷积神经网络的核心组件,用于提取输入图像的特征。它通过使用一组可学习的滤波器(也称为卷积核)对输入图像进行卷积操作,生成一系列的特征图。每个滤波器可以检测输入图像中的不同特征,例如边缘、纹理等。
2. 池化层(Pooling Layer):池化层用于减小特征图的尺寸,并保留最重要的特征。常用的池化操作包括最大池化和平均池化。最大池化选择每个区域中的最大值作为输出,而平均池化计算每个区域的平均值作为输出。池化操作有助于减少特征图的维度,提高计算效率,并增强模型对平移和缩放的不变性。
3. 激活函数(Activation Function):激活函数引入非线性变换,增加模型的表达能力。常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh等。ReLU函数在正区间上输出输入值,而在负区间上输出0,能够有效地缓解梯度消失问题。
4. 全连接层(Fully Connected Layer):全连接层将前面的卷积层和池化层的输出连接起来,并通过一系列的全连接操作进行分类或回归任务。全连接层的每个神经元都与前一层的所有神经元相连,可以学习到更高级别的特征表示。
5. Softmax层:Softmax层通常用于多分类任务,将全连接层的输出转化为概率分布。Softmax函数将每个类别的得分转化为概率值,使得所有类别的概率之和为1。

通过这些组件的堆叠和组合,卷积神经网络能够自动学习到输入图像的特征表示,并在分类、目标检测、图像生成等任务中取得优秀的性能。

卷积操作的作用

卷积操作会将卷积核与输入数据的对应位置进行元素相乘,然后将所有相乘结果相加得到输出的一个元素。这个过程可以通过下面的公式表示:输出 = 输入 * 卷积核

卷积操作的主要作用是提取输入数据中的特征。通过不同的卷积核,可以提取出不同的特征,例如边缘、纹理等。卷积神经网络通过堆叠多个卷积层,可以逐渐提取出更加抽象和高级的特征,从而实现对输入数据的有效表示和分类。

总结来说,卷积操作在深度学习中扮演了特征提取的重要角色,它通过滑动卷积核在输入数据上进行局部区域的计算,从而提取出输入数据的特征信息。

卷积核的定义

卷积核是卷积神经网络中的一个重要概念,用于提取输入图像的特征。卷积核的定义包括两个方面:大小和形状。

1. 大小:卷积核的大小决定了卷积操作的范围,也就是感受野的大小。在二维卷积中,最常见的卷积核大小是3x3。一般来说,较大的卷积核可以捕捉更多的图像信息,获得更好的全局特征。但是,大的卷积核会增加计算量,降低计算性能。

2. 形状:卷积核的形状可以是任意的,但通常是正方形或矩形。卷积核的形状决定了卷积操作的方式和特征提取的方式。例如,边缘检测可以使用边缘检测卷积核,而模糊操作可以使用模糊卷积核。

为什么卷积核的大小通常是奇数呢?有两个原因:

1. 更容易进行填充:在卷积操作中,有时我们希望卷积前后的尺寸保持不变,这时就需要使用填充。当图像大小为n×n,卷积核大小为k,填充设置为(k-1)/2时,根据计算公式可知,卷积后的输出尺寸为o=n。这样可以保证卷积前后的尺寸不变。但是,如果k是偶数,(k-1)/2就不是整数,无法实现尺寸不变的填充。

2. 更容易找到卷积锚点:在卷积操作中,通常以卷积核模块的一个位置为基准进行滑动,这个基准通常是卷积核模块的中心。如果卷积核大小是奇数,卷积锚点很容易确定,就是卷积模块的中心。但是,如果卷积核大小是偶数,就无法确定卷积锚点,无法很好地进行卷积操作。

卷积特征值计算方法

卷积层涉及的参数

卷积层涉及的参数包括滑动窗口步长、卷积核尺寸、填充边缘和卷积核个数。

1. 滑动窗口步长:滑动窗口步长决定了卷积核在输入图像上移动的步长。较小的步长可以提取更细腻的特征,但会导致输出特征图尺寸减小。
2. 卷积核尺寸:卷积核尺寸指的是卷积核的大小,通常用一个二维矩阵表示。较小的卷积核可以捕捉到更局部的特征,而较大的卷积核可以捕捉到更全局的特征。
3. 填充边缘:填充边缘是在输入图像周围添加额外的像素,以便在卷积过程中保持输出特征图的尺寸与输入特征图相同。常见的填充方式是在边缘周围添加0值像素(zero padding)。
4. 卷积核个数:卷积核个数决定了最终要得到多少个特征图。每个卷积核都是不同的,通过对输入图像的不同区域进行特征提取,从而得到不同的特征图。

这些参数的选择会影响卷积层的输出特征图的尺寸和特征提取能力。通过调整这些参数,可以根据具体任务和需求来优化卷积层的性能。

边缘填充
卷积结果计算

 池化层

池化层在卷积神经网络中起到了两个主作用:

1. 缩小参数矩阵的尺寸:池化层可以通过对输入数据进行下采样,将输入数据的尺寸缩小,从而减少了后续连接层中的参数数量。这样可以降低计算复杂度,加快计算速度。

2. 防止过拟合:池化层通过对输入数据进行压缩,减少了数据的维度,从而降低了模型的复杂度。这有助于防止模型过拟合训练数据,提高模型的泛化能力。

总结来说,池化层的作用是通过缩小参数矩阵的尺寸和降低模型复杂度,加快计算速度和防止过拟合。

整体网格架构

VGG网络架构

VGG网络架构是一种经典的卷积神经网络架构,它在AlexNet的基础上加深了网络的层数,并持续使用3x3的卷积核。VGG网络有多个不同的配置,其中最常用的是VGG16和VGG19。

VGG16网络结构如下:
1. 输入层:接受输入图像的像素值。
2. 卷积层:由13个卷积层组成,每个卷积层都使用3x3的卷积核进行卷积操作,并使用ReLU激活函数。
3. 池化层:由5个最大池化层组成,每个池化层的窗口大小为2x2,步幅为2。
4. 全连接层:由3个全连接层组成,每个全连接层都包含4096个神经元,并使用ReLU激活函数。
5. 输出层:根据具体的任务,输出层的神经元个数会有所不同。

VGG19网络结构与VGG16类似,但是增加了4个额外的卷积层,使得网络更深。这些额外的卷积层有助于提高网络的性能,但也增加了网络的参数量和计算复杂度。

VGG网络架构的特点是简单而有效,适合用于图像分类和特征提取任务。由于VGG16和VGG19的网络结构相对较深,因此在实际应用中,VGG16更常用,因为它相对于VGG19来说具有更少的参数量和计算复杂度。

 残差网络Resnet

研究动机是为了解决深度网络的退化问题,即随着网络层数的增加,网络的性能反而下降。ResNet通过引入残差连接来解决这个问题。

在传统的神经网络中,每一层的输出都是通过学习去拟合相对于上一层输入的映射关系。而在ResNet中,每一层的输出是相对于上一层输出的残差。这意味着网络只需要学习残差部分,而不需要学习整个映射关系。这种设计使得网络更容易优化,并且可以通过增加网络的深度来提升性能。

ResNet的核心思想是残差块(residual block)。每个残差块由两个卷积层和一个跳跃连接组成。跳跃连接将输入直接添加到残差块的输出中,从而形成了一个残差路径。这样,即使在网络的深层,信息也可以通过跳跃连接直接传递,避免了信息的丢失和退化。

 

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

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

相关文章

50.仿简道云公式函数实战-文本函数-ISEMPTY

1. ISEMPTY函数 判断值是否为空字符串、空对象或者空数组。 支持使用 ISEMPTY 函数的字段有:单行文本、多行文本、数字、日期时间、单选按钮组、复选框组、下拉框、下拉复选框、地址、定位、成员字段、部门字段、微信昵称、微信 OpenID、扩展字段。 2. 函数用法 …

API保障——电子商务安全性与稳定性设计

在这次深入探讨中,我们将深入了解API设计,从基础知识开始,逐步进阶到定义出色API的最佳实践。 作为开发者,你可能对许多这些概念很熟悉,但我将提供详细的解释,以加深你的理解。 ​ API设计:电…

Android Jni的介绍和简单Demo实现

Android Jni的介绍和简单Demo实现 文章目录 Android Jni的介绍和简单Demo实现一、JNI的简单介绍JNINDKJni的开发背景:**JNI在 Android 开发里的主要应用场景:** 二、JNI的简单Demo1、Demo主要界面和效果展示2、CMake编译加载文件add_library 指令的加载库…

力扣--双指针167.二数之和Ⅱ

这题一个穷举方法是比较好想到的&#xff1a; class Solution { public:vector<int> twoSum(vector<int>& numbers, int target) {int i,j;int nnumbers.size();vector<int>result(2,0);for(i0;i<n-1;i){for(ji1;j<n;j){if(numbers[i]numbers[j…

分库分表如何管理不同实例中几万张分片表?

大家好&#xff0c;我是小富&#xff5e; ShardingSphere实现分库分表&#xff0c;如何管理分布在不同数据库实例中的成千上万张分片表&#xff1f; 上边的问题是之前有个小伙伴看了我的分库分表的文章&#xff0c;私下咨询我的&#xff0c;看到他的提问我第一感觉就是这老铁…

《高质量的C/C++编程规范》学习

目录 一、编程规范基础知识 1、头文件 2、程序的板式风格 3、命名规则 二、表达式和基本语句 1、运算符的优先级 2、复合表达式 3、if语句 4、循环语句的效率 5、for循环语句 6、switch语句 三、常量 1、#define和const比较 2、常量定义规则 四、函数设计 1、参…

【k8s资源调度-Deployment】

1、标签和选择器 1.1 标签Label 配置文件&#xff1a;在各类资源的sepc.metadata.label 中进行配置通过kubectl 命令行创建修改标签&#xff0c;语法如下 创建临时label&#xff1a;kubectl label po <资源名称> apphello -n <命令空间&#xff08;可不加&#xff0…

2024生物科学、医学技术与化学国际会议(ICBSMTC2024)

2024生物科学、医学技术与化学国际会议(ICBSMTC2024) 会议简介 ICBSMTC2024是一个聚焦于生物科学、医学技术与化学领域的学术交流活动&#xff0c;会议将在中国桂林举行&#xff0c;会议旨在促进相关领域的学术交流与发展。会议将汇集来自世界各地的顶级学者和专家&#xf…

人工智能_CPU微调ChatGLM大模型_使用P-Tuning v2进行大模型微调_007_微调_002---人工智能工作笔记0102

这里我们先试着训练一下,我们用官方提供的训练数据进行训练. 也没有说使用CPU可以进行微调,但是我们先执行一下试试: https://www.heywhale.com/mw/project/6436d82948f7da1fee2be59e 可以看到说INT4量化级别最低需要7GB显存可以启动微调,但是 并没有说CPU可以进行微调.我们…

【b站咸虾米】chapter5_uniapp-API_新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址&#xff1a;【新课uniapp零基础入门到项目打包&#xff08;微信小程序/H5/vue/安卓apk&#xff09;全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 5 API 5.1 页面和路…

Linux 文件操作

目录 C语言下的文件操作 Linux下的文件操作 文件描述符的前因后果 文件描述符的概念 文件描述符的分配规则 理解C语言的FILE结构体 Linux重定向 文件缓冲区 文件系统 文件系统的概念 ext2文件系统 对ext2的补充 虚拟文件系统的概念 软硬链接 C语言下的文件操作 …

备战蓝桥杯---基础算法刷题2

题目有一点水&#xff0c;不过还是有几个好题的&#xff0c;我在这分享一下&#xff1a; 很容易想到先往最高处跳再往最低处跳&#xff0c;依次类推&#xff0c;那怎么保证其正确性呢&#xff1f; 证法1. 在此&#xff0c;我们从0开始&#xff0c;假设可以跳到a,b,c(a<b<…

UE学习笔记-- bUseUnity 加速编译 及 踩坑记录

前言 在写 UE 项目时&#xff0c;使用 VS 2022 进行编译&#xff0c;发现编译不过。 原因是少了头文件&#xff0c;导致某些了类型缺失。 问题发现 但是很奇怪的是&#xff0c;以前编译没问题&#xff0c;在原本应该出问题的 cpp 文件里面加了一行注释之后&#xff0c;编译就…

嵌入式学习day25 Linux

进程基本概念: 1.进程: 程序&#xff1a;存放在外存中的一段数据组成的文件 进程&#xff1a;是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态查看当前系统中的所有进程信息&#xff08;根据CPU占用率排序&a…

查看仓库版本记录

打开命令行窗口 输入git log即可。 若发现分支不对&#xff0c;方法如下 查看项目目录&#xff0c;命令行输入dir可以查看 多个moudel&#xff0c;进入到需要查版本记录的moudel下 命令行输入cd .\文件名如wowo-win-server\ 切换到wowo-win-server文件夹下后&#xff0c;再输入…

C语言内存管理-C进程内存布局

C进程内存布局 任何一个程序&#xff0c;正常运行都需要内存资源&#xff0c;用来存放诸如变量、常量、函数代码等等。这些不同的内容&#xff0c;所存储的内存区域是不同的&#xff0c;且不同的区域有不同的特性。因此我们需要研究C语言进程的内存布局&#xff0c;逐个了解不…

sonar-java 手写一个规则-单元测试分析

前言 最近做项目&#xff0c;定制sonar规则&#xff0c;提高Java代码质量&#xff0c;在编写的sonar规则&#xff0c;做验证时&#xff0c;使用单元测试有一些简单的心得感悟&#xff0c;分享出来。 自定义规则模式 sonar的自定义规则很简单&#xff0c;一般而言有2种模式可…

MySQL多实例与Mycat分布式读写分离的架构实践

文章目录 1.Mycat读写分离分布式架构规划2.在两台服务器中搭建八个MySQL实例2.1.安装MySQL软件2.2.创建每个MySQL实例的数据目录并初始化2.3.准备每个实例的配置文件2.4.准备每个实例的启动脚本2.6启动每台机器的MySQL多实例2.7.为每个MySQL实例设置密码2.8.查看每个MySQL实例的…

使用GPT生成python图表

首先&#xff0c;生成一脚本&#xff0c;读取到所需的excel表格 import xlrddata xlrd.open_workbook(xxxx.xls) # 打开xls文件 table data.sheet_by_index(0) # 通过索引获取表格# 初始化奖项字典 awards_dict {"一等奖": 0,"二等奖": 0,"三等…

three中界面交互gui.js库的使用

gui.js库(可视化改变三维场景) dat.gui.js说白了就是一个前端js库&#xff0c;对HTML、CSS和JavaScript进行了封装&#xff0c;学习开发的时候&#xff0c;借助dat.gui.js可以快速创建控制三维场景的UI交互界面&#xff0c;你打开课件中案例源码体验一下就能感受到。 学习dat…