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

第五章 深度学习

请添加图片描述

一、基本理论

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.mzph.cn/news/785941.shtml

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

相关文章

皓学IT:WEB07_ JSP

一、Jsp基础语法 1.1. JSP模板元素 JSP页面中的HTML内容称之为JSP模版元素。 JSP模版元素定义了网页的基本骨架&#xff0c;即定义了页面的结构和外观。 1.2. JSP脚本片段 JSP脚本片断用于在JSP页面中编写多行Java代码&#xff08;在<%%>不能定义方法&#xff09;。…

VisionOS应用开发需要哪些工具

标题: VisionOS应用开发需要哪些工具 标签: [VisionOS, 空间计算] 分类: [VisionOS, 开发工具] 说下开发visionOS空间应用需要哪些准备&#xff0c;这里我找了下&#xff0c;列出来给大家。 xcode 15.22d: SwiftUI3d: RealityKit/Unity 3D实体空间: ARKitIntel Mac上可以运行X…

mysql8.0下载安装详细步骤 图文教程

下载mysql 保证电脑上之前没有安装过mysql&#xff0c;或者已经卸载完毕。 mysqk8.0 下载地址 解压 新建一个专门存放mysql文件夹&#xff0c;将下载的压缩包解压到这个文件夹里面。 配置 添加一个data文件夹&#xff0c;用来存放数据 新建一个my.txt文本&#xff0c;复制…

C++语言·入门

现在我们讲完了数据结构初阶部分的内容&#xff0c;数据结构剩下的内容会在C语言讲解的差不多的时候加入。 1. 什么是C C语言是结构化模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度抽象和建模时&#xff0c…

软件测试-用例篇

目录 1 测试用例的基本要素2 测试用例给我们带来的好处3 测试用例的设计方法3.1 基于需求进行测试用例的设计3.1.1 功能需求测试分析3.1.2 非功能需求测试分析 4 具体的设计方法4.1 等价类4.2 边界值4.3 错误猜测法4.4 场景设计法4.5 因果图4.5.1 因果图需要掌握的基本知识4.5.…

用一个程序解决SQLite常见的各项操作(实用篇)

文章说明&#xff1a; 本篇文章是在之前的一篇文章SQLite3进行数据库各项常用操作基础上写的&#xff0c;将SQLite涉及到的常用的几种操作&#xff0c;以函数的形式处理成相互调用的形式。 因为之前的文章对基础操作已经解释过了&#xff0c;所以这里直接放置可执行代码和结果…

基于YOLOv8的绝缘子检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的绝缘子小目标检测&#xff0c;阐述了整个数据制作和训练可视化过程 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的&a…

kali Linux上安装docker过程记录

安装情况&#xff1a; 直接安装提示错误&#xff01;&#xff01;&#xff01; 安装程序命令&#xff1a; apt install -y docker.io 安装结果提示安装失败&#xff01;&#xff01;&#xff01;看别人安装直接成功到我这怎么失败&#xff01;&#xff01;&#xff01;找原因…

引用,内联函数,auto函数,指针nullptr

一&#xff1a;引用 1.1 该文章的引用是对上一篇引用的进行补充和完善 按理来说&#xff0c;double可以隐式转换为int&#xff0c;那起别名的时候为什么不可以类型转换呢&#xff1f; 那是因为&#xff0c;在类型转换的时候&#xff0c;会创建一个临时变量&#xff0c;让后再…

如何提高小红书笔记的收录率?

在小红书平台上&#xff0c;笔记的收录率是衡量一篇笔记是否受欢迎和有价值的重要因素。为了提高笔记的收录率&#xff0c;有几个关键点需要注意&#xff1a; 1.内容不涉及广告 在发布笔记前要先确保笔记内容不包含任何形式的广告或推广信息。小红书平台对于广告性质的内容有…

24年大一训练一(东北林业大学)

前言&#xff1a; 周五晚上的训练赛&#xff0c;以后应该每两周都会有一次。 正文&#xff1a; Problem:A矩阵翻转&#xff1a; #include<bits/stdc.h> using namespace std; int a[55][55]; int main(){int n,m;while(cin>>n>>m){for(int i1;i<n;i){for…

Mysql数据库:故障分析与配置优化

目录 前言 一、Mysql逻辑架构图 二、Mysql单实例常见故障 1、无法通过套接字连接到本地MySQL服务器 2、用户rootlocalhost访问被拒绝 3、远程连接数据库时连接很慢 4、无法打开以MYI结尾的索引文件 5、超出最大连接错误数量限制 6、连接过多 7、配置文件/etc/my.cnf权…

PDF转成二维码分享

在制作电子产品册之前&#xff0c;你需要思考以下几个问题&#xff1a;你的电子产品册是面向什么人群的&#xff1f;是宣传册、使用手册还是产品介绍册&#xff1f;明确目标与定位有助于我们更好地规划产品册的内容和风格。 一、收集素材与整理信息 在开始制作之前&#xff0c…

latex学习笔记

一 安装latex&#xff08;vscodetexlive&#xff09; 安装latex学习链接&#xff1a; 【超详细】最好用LaTex环境安装配置手把手教学&#xff01;&#xff01;&#xff08;支持双向搜索&#xff0c;附赠所需安装包及竞赛模板&#xff09;_哔哩哔哩_bilibilihttps://www.bilib…

KeepAlived使用介绍

目录 1、Introduce 2、基本使用 &#xff08;1&#xff09;安装 &#xff08;2&#xff09;配置文件 &#xff08;3&#xff09;使用教程 1、Introduce keepalived是一个用于实现高可用性和负载均衡的开源软件。它提供了一种轻量级的方式来管理多个服务器&#xff0c;并确保…

高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1

文章目录 问题解决步骤 问题 因为需要用到gdb一些指令&#xff0c;但是gdb8.x好像存在普遍的问题&#xff0c;实现不了某些指令&#xff0c;比方说set detach-on-fork on&#xff0c;升级版本也没有比较好的教程 经过我不断的试错&#xff0c;我终于升级成功了&#xff01;&a…

【学习笔记】java项目—苍穹外卖day02

文章目录 苍穹外卖-day02课程内容1. 新增员工1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码开发1.2.1 设计DTO类1.2.2 Controller层1.2.3 Service层接口1.2.4 Service层实现类1.2.5 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 …

[C++11]可变参数模板

导览&#xff1a; 本章将从可变参数模板的概念开始讲起&#xff0c;到其究竟是如何做到实例化的再从实例出发&#xff0c;探究该如何编写可变参数模板最后涉及可变参数模板的运用 什么是可变参数模板 让我们先见一下可变参数模板 template<typename ...Args> void te…

【SpringCloud】一文详谈Nacos

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

Linux之用户账号、用户组和与账号有关的系统文件

目录 一、基本介绍 1.用户和用户组 2.UID和GID 二、 账户管理 1.查看用户的UID和GID 2.添加账户 3.删除账号 4.修改账号 5.账户口令 三、分组管理 1.新增用户组 2.删除用户组 3.修改用户组 4.用户组切换 四、与账号有关的系统文件 1./etc/passwd 2./etc/shado…