Python 全栈体系【四阶】(十八)

news2024/11/16 5:43:51

第五章 深度学习

请添加图片描述

一、基本理论

4. 神经网络的改进

4.1 神经网络的局限

全连接神经网络的局限(一)

  • 未考虑数据的“形状”,会破坏数据空间结构。例如,输入数据是图像时,图像通常是高长通道方向上的 3 维形状。但是,向全连接层输入时,需要将 3 维数据拉平为 1 维数据
    请添加图片描述

全连接神经网络的局限(二)

  • 全连接网络参数量庞大,需要降低参数量
    请添加图片描述

全连接神经网络的局限(三)

  • 全连接网络层次深度受限,一般不超过七层,过深会导致梯度消失(梯度过小)或梯度爆炸(梯度过大),模型性能无法进一步提升。神经网络由输入、权重相乘得到,如果输入 X 进行了归一化(0~1)之间,会导致越乘越小(梯度消失);如果 X 不做归一化,会导致值越乘越大
    请添加图片描述

如何克服全连接模型的局限

  • 增加卷积操作,卷积操作不需要变维成向量,不破坏图像空间结构
  • 增加卷积、池化操作,提取特征同时,对数据降维
  • 增加其它策略解决梯度消失问题
4.2 卷积神经网络
4.2.1 什么是卷积

“卷积”其实是一个数学概念,它描述一个函数和另一个函数在某个维度上的加权“叠加”作用。函数定义如下:
在这里插入图片描述
其中,函数 f 和函数 g 是卷积对象,a 为积分变量,星号“*”表示卷积。公式所示的操作,被称为连续域上的卷积操作。这种操作通常也被简记为如下公式:
在这里插入图片描述

4.2.2 离散卷积与多维卷积

一般情况下,我们并不需要记录任意时刻的数据,而是以一定的时间间隔(也即频率)进行采样即可。对于离散信号,卷积操作可用如下表示:
在这里插入图片描述
当然,对于离散卷积的定义可推广到更高维度的空间上。例如,二维的公式可表示为公式:
在这里插入图片描述

4.2.3 生活中的卷积

在一根铁丝某处不停地弯曲,假设发热函数是 f(t),散热函数是 g(t),此时此刻的温度就是 f(t) 跟 g(t) 的卷积。

在一个特定环境下,发声体的声源函数是 f(t),该环境下对声源的反射效应函数是 g(t),那么在这个环境下感受到的声音就是 f(t) 的和 g(t) 的卷积。

记忆也是一种卷积。

在这里插入图片描述

4.2.4 什么是卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN)针对全连接网络的局限做出了修正,加入了卷积层(Convolution 层)和池化层(Pooling 层)。

4.2.5 卷积神经网络的用途

CNN 被广泛应用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础(比如,AlexNet、VGGNet、Google Inception Net 及微软的 ResNet 等)上。近几年深度学习大放异彩,CNN 功不可没。

4.2.6 卷积运算

单通道、二维卷积运算示例
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
单通道、二维、带偏置的卷积运算示例
请添加图片描述
带填充(padding)的单通道、二维卷积运算示例
请添加图片描述
步幅(stride)为 2 的卷积运算示例
请添加图片描述
卷积运算输出矩阵大小计算公式
请添加图片描述

  • 其中,输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为 P,步幅为 S。例如:输入大小(28,31);填充 2;步幅 3;滤波器大小(5,5),则输出矩阵大小为:

请添加图片描述
多通道、多卷积核卷积

  • 每个通道先与第一组卷积核执行卷积,然后多通道结果叠加,产生一个输出
  • 每个通道与下一组卷积核执行卷积,产生另一个输出
  • 有多少组卷积核,就有多少个通道输出(如下图,两组卷积核,产生两个通道的输出数据)

在这里插入图片描述

4.2.7 卷积运算的效果

通过卷积运算,能对输入数据起到加强或平滑效果。在图像处理中,通过选取合适的卷积核(或称算子),可以对图像进行锐化、去噪、模糊、加强边沿。
请添加图片描述
卷积运算能提取深层次复杂特征。
请添加图片描述
请添加图片描述

4.2.8 案例:图像卷积运算

在这里插入图片描述
在这里插入图片描述

4.2.9 卷积神经网络结构

总体结构

  • 通常情况下,卷积神经网络由若干个卷积层(Convolutional Layer)、激活层(Activation Layer)、池化层(Pooling Layer)及全连接层(Fully Connected Layer)组成。
    请添加图片描述

卷积层

  • 它是卷积神经网络的核心所在,通过卷积运算,达到降维处理和提取特征两个重要目的
    在这里插入图片描述

激活层

  • 其作用在于将前一层的线性输出,通过非线性的激活函数进行处理,这样用以模拟任意函数,从而增强网络的表征能力。前面章节中介绍的激活函数,如挤压函数 Sigmoid 也是可用的,但效果并不好。在深度学习领域,ReLU(Rectified-Linear Unit,修正线性单元)是目前使用较多的激活函数,主要原因是它收敛更快,次要原因在于它部分解决了梯度消失问题。

池化层(Pooling Layer)

  • 也称子采样层或下采样层(Subsampling Layer),目的是缩小高、长方向上的空间的运算,以降低计算量,提高泛化能力。如下的示例,将 4*4 的矩阵缩小成 2*2 的矩阵输出。
    请添加图片描述

池化层计算

  • 对于每个输入矩阵,我们将其切割成若干大小相等的正方形小块,对每一个区块取最大值或者平均值,并将结果组成一个新的矩阵
  • Max 池化:对各个参与池化计算的区域取最大值,形成的新矩阵。在图像识别领域,主要使用 Max 池化
  • Average 池化:对各个参与池化计算的区域计算平均值

池化层的特征

  • 没有要学习的参数。池化层和卷积层不同,没有要学习的参数。池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数。

  • 通道数不发生变化。经过池化运算,输入数据和输出数据的通道数不会发生变化。

  • 对微小的位置变化具有鲁棒性(健壮)。输入数据发生微小偏差时,池化仍会返回相同的结果。

全连接层

  • 这个网络层相当于多层感知机(Multi-Layer Perceptron,简称 MLP),其在整个卷积神经网络中起到分类器的作用
  • 通过前面多个“卷积-激活-池化”层的反复处理,待处理的数据特性已有了显著提高:一方面,输入数据的维度已下降到可用传统的前馈全连接网络来处理了;另一方面,此时的全连接层输入的数据已不再是“泥沙俱下、鱼龙混杂”,而是经过反复提纯过的结果,因此输出的分类品质要高得多。
4.2.10 经典 CNN 介绍(LeNet)

结构

  • LeNet 是 Yann LeCun 在 1998 年提出,用于解决手写数字识别的视觉任务。自那时起,CNN 的最基本的架构就定下来了:卷积层、池化层、全连接层。
    在这里插入图片描述

主要参数

  • 输入:输入 32*32 大小单通道图像
  • 两个“卷积-池化层”
  • 第一个全连接层神经元数目为 500,再接激活函数
  • 第三个全连接层神经元数目为 10,得到 10 维的特征向量,用于 10 个数字的分类训练,送入 softmaxt 分类,得到分类结果的概率
4.2.11 经典 CNN 介绍(AlexNet)

AlexNet 是 2012 年 ImageNet 竞赛冠军获得者 Hinton 和他的学生 Alex Krizhevsky 设计的,把 CNN 的基本原理应用到了很深很宽的网络中。其特点有:

  • 使用 ReLU 作为激活函数,并验证其效果在较深的网络超过了 Sigmoid,成功解决了 Sigmoid 在网络较深时的梯度弥散问题
  • 使用 Dropout(丢弃学习)随机忽略一部分神经元防止过拟合
  • 在 CNN 中使用重叠的最大池化。此前 CNN 中普遍使用平均池化,AlexNet 全部使用最大池化,避免平均池化的模糊化效果
  • 提出了 LRN(Local Response Normalization,局部正规化)层,对局部神经元的活动创建竞争机制,使得其中响应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增强了模型的泛化能力
  • 使用 CUDA 加速深度卷积网络的训练,利用 GPU 强大的并行计算能力,处理神经网络训练时大量的矩阵运算

网络结构

在这里插入图片描述
主要参数

  • AlexNet 网络包含 8 层,其中前 5 层为卷积-池化层,后 3 层为全连接层;输入 224×224×3 的图像,第一卷积层用 96 个 11×11×3 的卷积核对进行滤波,步幅 4 像素;全连接的每层有 4096 个神经元,最后一个完全连接的层的输出被馈送到 1000 路 SoftMax,它产生超过 1000 个类别标签的分布;整个网络共 650000 个神经元。

  • 参考论文:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf

4.2.12 经典 CNN 介绍(VGG)

概要介绍

  • VGG 是 Visual Geometry Group, Department of Engineering Science, University of Oxford(牛津大学工程科学系视觉几何组)的缩写,2014 年参加 ILSVRC(ImageNet Large Scale Visual Recognition Challenge) 2014 大赛获得亚军(当年冠军为 GoogLeNet,但因为 VGG 结构简单,应用性强,所以很多技术人员都喜欢使用基于 VGG 的网络)

主要参数

  • 网络深度:16~19 层
  • 5 组卷积-池化层,3 个全连接层
  • 三个全连接层,前两层都有 4096 通道,第三层共 1000 路及代表 1000 个标签
    • 类别;最后一层为 softmax 层
  • 所有卷积层有相同的配置,即卷积核大小为 3x3,步长为 1,填充为 1
  • 池化层区域大小 2x2,步长为 2

模型结构

在这里插入图片描述
在这里插入图片描述

4.2.13 经典 CNN 介绍(GoogLeNet)

GoogLeNet 包含大量 Inception 并行卷积结构
在这里插入图片描述

  • 请参考论文:https://arxiv.org/pdf/1409.4842.pdf
4.2.14 经典 CNN 介绍(ResNet)

介绍

  • ResNet 是 ILSVRC 2015 大赛冠军,在 ImageNet 测试集上取得了 3.57%的错误率
  • 更深的网络结构,采用残差结构来缓解深度 CNN 的梯度消失问题
    在这里插入图片描述

结构

在这里插入图片描述

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

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

相关文章

JavaParser 手动安装和配置

目录 前言 一、安装 Maven 工具 1.1 Maven 软件的下载 1.2 Maven 软件的安装 1.3 Maven 环境变量配置 1.4 通过命令检查 Maven 版本 二、配置 Maven 仓库 2.1 修改仓库目录 2.2 添加国内镜像 三、从 Github 下载 JavaParser 3.1 下载并解压 JavaParser 3.2 从路径打…

C#学习笔记2:设置启动项目、数组/二维数组

今日继续我的C#学习之路 设置启动项目: Visual Studio 无法直接启动带有“类库输出类型“的项目。若要调试此项目,请在此解决方案中添加一个引用库项目的可执行项目。将这个可执行项目设置为启动项目问题解决 调试学习时的一个小插曲,有时会…

yolov8直接调用zed相机实现三维测距(python)

yolov8直接调用zed相机实现三维测距(python) 1. 相关配置2. 相关代码3. 实验结果 相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1.yolov5直接调用zed相机实现三维测距(python&#…

深入解析MySQL的四种打开方式

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

利用云手机技术,开拓海外社交市场

近年来,随着科技的不断进步,云手机技术逐渐在海外社交营销领域崭露头角。其灵活性、成本效益和全球性特征使其成为海外社交营销的利器。那么,究竟云手机在海外社交营销中扮演了怎样的角色呢? 首先,云手机技术能够消除地…

Linux:进程概念认识

进程 基本概念 课本概念:程序的一个执行实例,正在执行的程序等 内核观点:担当分配系统资源( CPU 时间,内存)的实体。 描述进程 -PCB 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为…

【Canvas与艺术】淡蓝辉光汽车速度仪表盘

【关键点】 内圈处渐变色的采用。 【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>淡蓝辉光汽车速度仪表盘</t…

【学习】Web安全测试需要考虑哪些情形

一、数据加密 某些数据需要进行信息加密和过滤后才能在客户端和服务器之间进行传输&#xff0c;包括用户登录密码、信用卡信息等。例如&#xff0c;在登录某银行网站时&#xff0c;该网站必须支持SSL协议&#xff0c;通过浏览器访问该网站时&#xff0c;地址栏的http变成https…

【智能算法】飞蛾扑火算法(MFO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2015年&#xff0c;Mirjalili等人受到飞蛾受到火焰吸引行为启发&#xff0c;提出了飞蛾算法(Moth-Flame Optimization&#xff0c;MFO)。 2.算法原理 2.1算法思想 MFO基于自然界中飞蛾寻找光源的…

【MySQL数据库】数据类型和简单的增删改查

目录 数据库 MySQL的常用数据类型 1.数值类型&#xff1a; 2.字符串类型 3.日期类型 MySQL简单的增删改查 1.插入数据&#xff1a; 2.查询数据&#xff1a; 3.修改语句&#xff1a; 4.删除语句&#xff1a; 数据库 平时我们使用的操作系统都把数据存储在文件中&#…

2015年认证杯SPSSPRO杯数学建模A题(第一阶段)绳结全过程文档及程序

2015年认证杯SPSSPRO杯数学建模 A题 绳结 原题再现&#xff1a; 给绳索打结是人们在日常生活中常用的技能。对登山、航海、垂钓、野外生存等专门用途&#xff0c;结绳更是必不可少的技能之一。针对不同用途&#xff0c;有多种绳结的编制方法。最简单的绳结&#xff0c;有时称…

python爬虫基础-----运算符(第三天)

&#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; &#x1f388;&#x1f388;所属专栏&#xff1a;python爬虫学习&#x1f388;&#x1f388; ✨✨谢谢大家捧场&#xff0c;祝屏幕前的小伙伴们每天都有好运相伴左右&#xff0c;一定要天天…

ubuntu下安装minconda

1.搜索清华源 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 2.搜索conda 3.选一个合适自己的下载到本地 4.将下载的文件传入到ubuntu中 bash Miniconda3-py311_23.11.0-1-Linux-x86_64.sh 安装 5.source ~/.bashrc 激活即可&#xff08;必要步骤&#xff09;

了解一波经典的 I/O 模型

最近读了波网络 I/O 相关的文章&#xff0c;做下总结、摘录。&#xff08;未完&#xff09; 经典 I/O 模型 {% checkbox red checked, 阻塞式 I/O&#xff08;blocking I/O&#xff09; %}{% checkbox red checked, 非阻塞式 I/O&#xff08;non-blocking I/O&#xff09; %}…

接口关联和requests库

一、接口关联 postman的接口 postman的接口关联配置&#xff1a;js代码&#xff0c;重点在于思路。 // 定义jsonData这个变量 接受登录接口的返回结果 var jsonData JSON.parse(responseBody); // 从返回结果里提取token/id值&#xff0c;并赋值给token/id变量值作为环境变…

中电金信:打好智能风控四张牌 筑牢财务公司风险管理防护网

2021年&#xff0c;国务院印发《“十四五”数字经济发展规划的通知》&#xff0c;为我国金融行业数字化建设指明了目标和方向&#xff0c;对金融企业数字化转型提出了更高要求。企业集团财务公司作为服务于大型企业改革的金融配套政策的机构&#xff0c;30多年来立足于产融结合…

git基础-撤销操作

撤销操作 在任何阶段&#xff0c;我们都可能希望撤消某些操作。在这里&#xff0c;我们将回顾一些基本工具&#xff0c;用于撤消之前所做的更改。操作要谨慎&#xff0c;因为这些撤销可能无法修复。这是 Git 中为数不多的几个领域之一由于操作不当&#xff0c;导致丢失一些工作…

Webpack生成企业站静态页面 - 项目搭建

现在Web前端流行的三大框架有Angular、React、Vue&#xff0c;很多项目经过这几年的洗礼&#xff0c;已经都 转型使用这三大框架进行开发&#xff0c;那为什么还要写纯静态页面呢&#xff1f;比如Vue中除了SPA单页面开发&#xff0c;也可以使用nuxt.js实现SSR服务端渲染&#x…

PyTorch深度学习:如何实现遥感影像的自动化地物分类?

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

详解 net user

net user 是 Windows 操作系统自带的一个命令行工具&#xff0c;用于管理和查询本地用户账户信息。在域环境中&#xff0c;它可以用于管理本地用户账户&#xff0c;但对域用户账户的操作能力有限&#xff0c;尤其是查看域账户锁定状态等功能。以下是 net user 命令的详解&#…