卷积神经网络CNN基础知识

news2025/6/25 6:12:25

目录

  • 1 前言
  • 2 卷积神经网络CNN
    • 2.1 LeNet-5相关介绍
    • 2.2 CNN基本结构
      • 2.2.1 卷积层
      • 2.2.2 池化层(下采样层)
      • 2.2.3 全连接层
        • 2.2.3.1激励层(非线性激活)
        • 2.2.3.2 线性层
        • 2.2.3.3 Dropout层
        • 2.2.3.4 总结
    • 2.3 图像的上采样和下采样
      • 2.3.1 上采样
      • 2.3.2 下采样
    • 2.4 梯度
      • 2.4.1 梯度弥散
      • 2.4.2 梯度爆炸
    • 2.5 CNN卷积特点
      • 2.5.1 局部连接
      • 2.5.2 权值共享
    • 2.6 感受野

1 前言

在了解卷积神经网络之前,我们可以通过下图先看一下传统机器学习与深度学习的区别:
在这里插入图片描述

2 卷积神经网络CNN

2.1 LeNet-5相关介绍

卷积神经网络(Convolutional Neural Networks, CNN)的雏形是1998 年LeCunt提出的LeNet-5网络结构。LeNet-5网络结构如下图所示:在这里插入图片描述
可以看出LeNet-5 共包含 8 层:

  1. Input输入层:输入一个大小为 32x32的灰度图像。
  2. C1 卷积层:通过卷积核进行卷积,输出6 个大小为 28x28的特征图 (Feature Map )。
  3. S2 下采样池化层:通过池化核进行池化,输出6 个大小为 14x14 的特征图(Feature Map )。
  4. C3卷积层:通过卷积核进行卷积,输出16 个大小为 10x10的特征图 (Feature Map )。
  5. S4下采样池化层:通过池化核进行池化,输出16 个大小为 5x5 的特征图(Feature Map )。
  6. C5卷积层:通过卷积核进行卷积,输出120个特征图,与S4相连。
  7. F6全连接层:有 84 个单元(之所以选这个数字的原因来自于输出层的设计),与 C5 层全相连。计算输入向量和权重向量之间的点积,再加上一个偏置,结果通过sigmoid函数输出。
  8. output输出层(也是全连接层):有84个单元输入,10个单元输出。

2.2 CNN基本结构

CNN 主要由卷积层、池化层、全连接层组成。这些层的作用与其之间的关系可借助下图进行理解:
在这里插入图片描述

2.2.1 卷积层

功能:
用卷积核对输入图像进行不断卷积,得到图像特征图。每个卷积层都由许多特征图(Feature map)组成,随着网络深度的加深,特征图的数量会成倍增加,与此同时,特征图的长宽将缩小。
计算方法:
卷积层通过卷积核在本层的特征图上滑动,并将卷积核与特征图的对应位置元素相乘,最终求和并加上偏置项之后作为最终输出。具体理解可参考博客https://blog.csdn.net/weixin_51312723/article/details/132291673 中第二章“神经网络中神经结构的使用”部分。

2.2.2 池化层(下采样层)

池化层又名下采样层。
功能: 保留图像特征的同时,减小数据量,即对特征图进行压缩,缩小特征图,也就是缩小特征映射。
下采样方法主要有两种: 平均池化和最大池化。目前通常使用的是最大池化(maxpool),因为它计算简单而且能够更好的保留纹理特征。而平均池化虽然能很好的保留背景,但容易使得图片变模糊。
计算方法: 请查看博客https://blog.csdn.net/weixin_51312723/article/details/132291673 第三章“神经网络当中的一些基本结构”中的第二小节“池化层”部分。

2.2.3 全连接层

通常情况下,网络的最后是全连接层(Fully connected,FC)用作分类,FC 将经过卷积层、激励层和池化层处理后的特征信息整合并映射到样本空间中。然而,FC 层是黑盒模型,其参数量占整个模型的 80%以上,在训练时很容易过拟合,为了解决这个问题,通常在 FC 之后使用 Dropout 方法。Dropout 方法可以随机使一些神经元处于失活状态,从而降低神经元之间的关联性,减少过拟合,提高网络的泛化能力。

2.2.3.1激励层(非线性激活)

激励层:就是relu函数那些。
详情请查看博客https://blog.csdn.net/weixin_51312723/article/details/132291673 第三章“神经网络当中的一些基本结构”中的第三小节“非线性激活”部分。

2.2.3.2 线性层

详情请查看博客https://blog.csdn.net/weixin_51312723/article/details/132291673 第三章“神经网络当中的一些基本结构”中的第四小节“线性层”和第四章:神经网络小实战“部分。

2.2.3.3 Dropout层

Dropout一般放在全连接层中的激活函数之后,目的是防止过拟合,提高模型返回能力。由于卷积层参数较少,很少有放在卷积层后面的情况,卷积层一般使BatchNorm。

2.2.3.4 总结
  1. 如果模型只是单纯的线性层叠加,最后模型也是线性的,等价于只有一个线性层(把所有权值矩阵先结合相乘,最后只剩一个权值矩阵),而非线性激活层的加入才使得深度有了意义。
  2. 非线性激活层给我们的神经网络中引入一些非线性的特征,因为网络当中非线性越多的话,你才能训练出符合各种曲线、各种特征的一个模型,要不然模型的泛化能力就不够好。
  3. 卷积神经网络中的卷积块包含三个阶段:在第一阶段中,多个卷积计算并行产生输出;在第二阶段中,将第一阶段的输出结果进行非线性激活;在第三阶段中,池化操作被用于进一步调整该卷积块的输出。

2.3 图像的上采样和下采样

2.3.1 上采样

上采样: 又名放大图像、图像插值。
作用: 在卷积神经网络中,由于输入图像通过卷积神经网络(CNN)提取特征后,输出的尺寸往往会变小,而有时我们需要将图像恢复到原来的尺寸以便进行进一步的计算(如图像的语义分割),这个使图像由小分辨率映射到大分辨率的操作,叫做上采样。

2.3.2 下采样

下采样: 又名降采样、缩小图像。
作用: 1. 减少计算量,防止过拟合;2. 增大感受野,使得后面的卷积核能够学到更加全局的信息。

2.4 梯度

2.4.1 梯度弥散

梯度弥散就是梯度消失,函数导数为0。
在上面2.2.3.1小节我们介绍了一些非线性激活的函数,如relu和sigmoid激活函数。但sigmoid激活函数不常用了,因为它就是导致梯度消失的一个常见的情况。
从所介绍的sigmoid函数图像可以看出,当sigmoid函数的输入很大或是很小时,它的梯度都会消失。 此外,当反向传播通过许多层时, 这些地方sigmoid函数的输入接近于零,可能导致整个乘积的梯度可能会消失。因此,ReLU激活函数成为了大家默认的选择。

2.4.2 梯度爆炸

梯度爆炸就是函数导数接近无穷大,很难收敛。

2.5 CNN卷积特点

众所周知,卷积神经网络(CNN)是一种 端到端 更全面的 非线性映射 抽取更深层次、更抽象的语义表征实现识别功能。同时,它也是一种具有局部连接、权值共享等特性的深度神经网络。

2.5.1 局部连接

具体内容请查看下面这篇参考博客的相关讲解:https://blog.csdn.net/weixin_41514525/article/details/113987876。

2.5.2 权值共享

具体内容请查看下面这两篇参考博客的相关讲解:

  1. https://blog.csdn.net/weixin_41514525/article/details/113987876;
  2. https://blog.csdn.net/duxinyuhi/article/details/128816396。

2.6 感受野

在卷积神经网络中,每一层的任意元素都有相应的感受野(Receptive field),其代表了在前向传播中可能影响当前元素计算的所有先前层元素的区域大小。具体内容请查看下面这篇参考博客的相关讲解:https://blog.csdn.net/qq_43665602/article/details/126754736。

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

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

相关文章

vue2 .sync 修饰符

vue2 .sync 修饰符 **创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day04\准备代码\13-sync修饰符 vue --version vue create v-sy…

高效团队协作软件推荐:提升工作效率的优选方案!

使用团队协作软件有什么好处?可以摆脱过时的电子表格,有了单一的真实来源,您可以随时检查任何任务并获得可用的最新信息。 一目了然地查看所有正在进行的工作,看板式面板、甘特图和燃尽图等可视化工具可让您随时轻松获得项目的高级…

基本微信小程序的购物商城系统

项目介绍 随着互联网的趋势的到来,各行各业都在考虑利用互联网将自己的信息推广出去,最好方式就是建立自己的平台信息,并对其进行管理,随着现在智能手机的普及,人们对于智能手机里面的应用购物平台小程序也在不断的使…

javaweb:mybatis:mapper(sql映射+代理开发+配置文件之设置别名、多环境配置、顺序+注解开发)

1.0版本 sql映射文件实现 流程 首先程序进入启动类MyBatisDemo.java中&#xff0c;读取配置文件mybatis-config.xml 再由mybatis-config的mappers属性 <mappers><mapper resource"UserMapper.xml"></mapper></mappers>找到sql映射文件Use…

大数据精准营销一站式解决你的获客难题

自从千禧年之后&#xff0c;互联网逐渐走进每家每户&#xff0c;改变了人们的生活习惯&#xff0c;也改变了运营人的营销模式&#xff0c;使我们从传统营销转向互联网营销&#xff01; 新时代的到来&#xff0c;智能手机的问世又使互联网营销达到了一个新的高潮&#xff01;一些…

WEB 跨域

![Alt](https://img-home.csdnimg.cn/images/20220524100510.png 60x60 问题描述&#xff1a; web端的跨域&#xff1a; 响应头中出现重复&#xff0c;等其他关于跨域的奇奇怪怪的问题以下排查方式够了。 注&#xff1a; 以下最终解决问题的方式是将处理跨域的地方集中在一个…

JS之同步异步promise、async、await

promise异步操作 Promise是异步编程的一种解决方案 JavaScript异步与同步解析 学习promise前我们先来了解下什么是异步&#xff1f; 基本概念&#xff1a; 消息队列中的任务分为宏任务与微任务;调用栈也可以称为主线程 首先我们要知道js是单线程语言&#xff0c;也就是说…

基于NLopt的C语言非线性优化案例

以官方给的例程&#xff0c;重新梳理&#xff0c;以供理解NLopt的使用。 问题被定义为&#xff1a; min ⁡ x ∈ R 2 x 2 s u b j e c t t o x 2 ≥ 0 , x 2 ≥ ( a 1 x 1 b 1 ) 3 , a n d x 2 ≥ ( a 2 x 1 b 2 ) 3 f o r p a r a m e t e r s a 1 2 , b 1 0 , a 2 − 1…

Edge使用猴油脚本实战(实验室安全考试系统刷在线时长——网站永久自动刷新)

介绍 篡改猴 (Tampermonkey) 是拥有 超过 1000 万用户 的最流行的浏览器扩展之一。它允许用户自定义并增强您最喜爱的网页的功能。用户脚本是小型 JavaScript 程序&#xff0c;可用于向网页添加新功能或修改现有功能。使用 篡改猴&#xff0c;您可以轻松在任何网站上创建、管理…

标题:协同云办公:打破传统模式,提升工作效率!

随着科技的迅速发展&#xff0c;传统办公模式已经难以满足现代企业的需求。为了提高工作效率和协作能力&#xff0c;越来越多的企业开始采用协同云办公。协同云办公通过云计算、大数据等技术&#xff0c;打破了传统办公模式的束缚&#xff0c;为企业带来了前所未有的便捷与高效…

geecg-uniapp 源码下载运行 修改端口号 修改tabBar 修改展示数据(1)

APP体验&#xff1a; http://jeecg.com/appIndex技术官网&#xff1a; http://www.jeecg.com安装文档&#xff1a; 快速开始 JeecgBoot 开发文档 看云视频教程&#xff1a; 零基础入门视频官方支持&#xff1a; http://jeecg.com/doc/help 一&#xff0c;下载安装 源码下载…

react中ant.design框架配置动态路由

目录 什么是动态路由&#xff1f; 应用场景&#xff1a; ant.design动态路由如何配置&#xff1a; 首先&#xff1a;找到app.tsx文件 然后&#xff1a;找到menuHeaderRender 其次&#xff1a;修改menuHeaderRender为menuDataRender​编辑 最后&#xff1a;在箭头函数里re…

PyTorch 深度学习之加载数据集Dataset and DataLoader(七)

1. Revision: Manual data feed 全部Batch&#xff1a;计算速度&#xff0c;性能有问题 1 个 &#xff1a;跨越鞍点 mini-Batch:均衡速度与性能 2. Terminology: Epoch, Batch-Size, Iteration DataLoader: batch_size2, sheffleTrue 3. How to define your Dataset 两种处…

分布式事务入门

文章目录 分布式事务问题本地事务分布式事务演示分布式事务问题 理论基础CAP定理一致性可用性分区容错矛盾 BASE理论 SeataSeata的架构部署TC服务微服务集成seata 动手实践XA模式两阶段提交Seata的XA模型实现XA模式 AT模式Seata的AT模型流程梳理脏写问题实现AT模式 TCC模式流程…

leetcode-电话号码组合(C CODE)

1. 题目 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits “23” 输出&#…

批量图片转文字识别OCR身份证件信息提取软件

现在的OCR软件很多&#xff0c;有在线的也有本地的&#xff0c;单识别文字功能还行&#xff0c;不过能批量识别的好像不多&#xff0c;网上搜了几个都不怎么好用。尤其是识别身份证件之类的软件&#xff0c;并且还能提取出识别到的信息&#xff0c;比如姓名 名族地址等等更少。…

CSS复习笔记

CSS 文章目录 CSS1.概念2.CSS 引入方式3.选择器基础选择器:标签选择器类选择器id 选择器通配符选择器 复合选择器:**后代选择器****子代选择器****并集选择器****交集选择器-了解****伪类选择器** 结构伪类选择器&#xff1a;**:nth-child&#xff08;公式&#xff09;**伪元素…

帆软报表-SQL片段报错处理

当发现好端端的 SQL 片段&#xff0c;在数据库命令行正常运作、但是在帆软报表预览各种报错的时候&#xff1a;请先停止复制你的 SQL 片段。 然后&#xff0c;在【帆软报表的数据源编辑器中】&#xff0c;【全部逐个手敲】一遍你需要的字段和逻辑。记得点击保存。帆软报表版本 …

protoBuf的简单介绍与使用(Javaspringboot版本)

protoBuf的简单介绍与使用&#xff08;Java&springboot&#xff09; 下面以proto在java项目中的应用作为例子带大家感受 Protocol Buffer 是用于序列化结构化数据的语言中立、平台中立的可扩展机制。 这是官方对它的介绍&#xff0c; 页内目录 一&#xff0c;protoBuf的介…

配置XP虚拟机和Win 10宿主机互相ping通

文章目录 一、关闭虚机和宿主机的防火墙1、关闭虚拟机的防火墙1.1方式一1.2方式二 2、关闭宿主机的防火墙 二、设置XP和宿主机VMnet8的IP地址、网关和DNS1、获取VMWare的虚拟网络配置信息2、设置XP的VMnet8的IP地址、网关和DNS3、设置宿主机VMnet8的IP地址、网关和DNS 三、获取…