李沐-《动手学深度学习》-- 01-预备知识

一、线性代数知识

1. 矩阵计算

a. 矩阵求导

​ 当y和x分别为标量和向量时候,进行求导得到的矩阵形状矩阵求导就是矩阵A中的每一个元素对矩阵B中的每一个元素求导

​ 梯度指向的是值变化最大的方向
在这里插入图片描述

分子布局和分母布局:

b. 常识

  • axis = 1 代表行 axis = 0 代表列
  • nn.model.eval() 将模型设置为评估模式,只输入数据然后得出结果而不会做反向传播
  • xxx_下划线在后面的函数代表替换函数,不是返回一个值,而是直接替换
  • 介绍:Pytorch 中的 model.apply(fn) 会递归地将函数 fn 应用到父模块的每个子模块以及model这个父模块自身。通常用于初始化模型的参数。
  • torch.stack函数,对张量进行堆叠升维度
  • **python.zip(x,x)**函数:参数是两个可以迭代的变量,返回两个变量对应的一个元组

二、感知机

1. 概念

​ 感知机是一个二分类模型,是最早的AI模型之一;他的求解算法等价于使用批量大小为1的梯度下降;他不能拟合XOR函数,导致第一次AI寒冬。目的是拟合一条线将数据集分成两部分,如果不能找到一条线将数据集分成两部分,则无法用一层感知机做到

2. 多层感知机

​ 如果需要拟合复杂的模型,则需要连接多层的神经网络。使用hidden layer和激活函数来得到非线性模型

a. 激活函数

​ 多个神经网络层连接时,两个层之间需要激活函数,如果没有激活函数,则会变成单层的感知机。

在这里插入图片描述

种类: sigmoid,Tanh,ReLU,softmax(多类)

3. 模型选择&过拟合欠拟合(p11)

a.训练误差和泛化误差

  • 训练误差:模型在训练数据上的误差
  • 泛化误差:模型在新数据上的误差
  • **参数&超参数:**区别两个最大的特点就是数据是否通过数据来进行调整,例如学习率就是人为设置的,而w&b是数据进行驱动的数据
  • **验证集&训练集&测试集:**如果需要选择使用哪一组参数合适的时候,可以用到验证集;

b. 估计模型容量

在这里插入图片描述

4 .防止过拟合和欠拟合

1. 权重衰退(weight decay)

权重衰退最常见处理过拟合的方法

在这里插入图片描述
(不常用的方法)

最常用的方法:

在这里插入图片描述

2 . Dropout(暂退法)

在这里插入图片描述
在dropout当中,有一些输入是需要等于0暂时舍去的,还有一些是需要放大,然后使最后的期望不变

**注意:**dropout是在做模型推理的时候使我们的模型复杂度变低,但是在使用做预测或者测试时候是没有使用dropout的

a.技巧

我们可以将暂退法应用于每个隐藏层的输出(在激活函数之后), 并且可以为每一层分别设置暂退概率: 常见的技巧是在靠近输入层的地方设置较低的暂退概率

5 . 模型初始化和激活函数

**目标:**让梯度值在合理的范围内

方法:

  • 将乘法变加法 ResNet, LSTM
  • 归一化 :梯度归一化 梯度裁剪
  • 合理的权重初始化和激活函数

三、Pytorch神经网络

1 . 卷积层

a . 卷积层作用

  • 卷积层将输入和核矩阵进行交叉相关运算,加上偏移后得到输出
  • 核矩阵和偏移是可学习的参数
  • 核矩阵的大小是超参数

b . 学习卷积核参数

如果我们想达到某种效果(边缘检测,模糊),但是不知道怎么设置kernel参数时,可以从数据中使用梯度下降学习卷积核的参数。(需要提前给出 Y的正确值,然后一直梯度下降)

c . 二维卷积层

在这里插入图片描述

d . 1 x 1 卷积

​ 卷积使用了最小窗口,失去了卷积层特有的识别相邻元素相互作用的能力,使之作用在通道上。

  • 1×1卷积层通常用于调整网络层的通道数量和控制模型复杂性。

e . 池化层(pooling)

  • 对于给定输入元素,最大汇聚层会输出该窗口内的最大值,平均汇聚层会输出该窗口内的平均值。
  • 汇聚层的主要优点之一是减轻卷积层对位置的过度敏感。
  • 我们可以指定汇聚层的填充和步幅。使用最大汇聚层以及大于1的步幅,可减少空间维度(如高度和宽度)。
  • 汇聚层的输出通道数与输入通道数相同。且一般放在卷积层的最后

四 .经典CNN网络

1 .LeNet 神经网络

在这里插入图片描述

a .总结

  • 卷积神经网络(CNN)是一类使用卷积层的网络。
  • 在卷积神经网络中,我们组合使用卷积层、非线性激活函数和汇聚层。
  • 为了构造高性能的卷积神经网络,我们通常对卷积层进行排列,逐渐降低其表示的空间分辨率,同时增加通道数。
  • 在传统的卷积神经网络中,卷积块编码得到的表征在输出之前需由一个或多个全连接层进行处理。
  • LeNet是最早发布的卷积神经网络之一。

2 . AlexNet

a. 框架

在这里插入图片描述

b . 总结


在这里插入图片描述

3 . VGG块

​ 将AlexNet的中间的卷积层抽出来,然后复制几份替代掉了AlexNet的前面几层不规则的卷积层,可以称为更大更深的AlexNet网络

在这里插入图片描述

a . 总结

在这里插入图片描述

4 . NiN块

​ 实质:将最后的全连接层用1*1的卷积来替换

a . 与前三个的区别:

在这里插入图片描述

5 . GoogLeNet

和vgg一样有5个block,这里用的是Inception

a . Inception

在这里插入图片描述

Inception 变种

在这里插入图片描述

b . stage 1&2与AlexNet区别

在这里插入图片描述

c . stage 3

d , stage 4 & 5

在这里插入图片描述

e . 总结

在这里插入图片描述

6 . 批量归一化(batch normalization)

a . 思想

方差和均值在不同层之间会变化,批量归一化就是在每一层的输出作为下一层输入时候进行归一化,使值固定在一个范围内,然后相对比较稳定

b . 总结

  • 在模型训练过程中,批量规范化利用小批量的均值和标准差,不断调整神经网络的中间输出,使整个神经网络各层的中间输出值更加稳定。
  • 可以加速收敛速度,但一般不改变模型精度
  • 批量规范化在全连接层和卷积层的使用略有不同。
  • 批量规范化层和暂退层一样,在训练模式和预测模式下计算不同。
  • 批量规范化有许多有益的副作用,主要是正则化。另一方面,”减少内部协变量偏移“的原始动机似乎不是一个有效的解释。

7 . ResNet

a. 思想

​ 一味的增加模型复杂度不一定能减少到最优解的距离,可能新加的层学习的方向偏了。所以ResNet想办法是每一次更复杂的模型是会包含原来的小模型作为子模型,所以至少不会变差使得可以训练更深的网络

b . residual block(残差块)

在这里插入图片描述

c . 处理梯度消失

​ 1000层的ResNet怎么处理梯度消失,将层与层之间的梯度的乘法变成梯度之间的加法

d . bottleneck(瓶颈)

在这里插入图片描述

如果处理更深的网络,则处理的通道数会增加,然后这里先用一维卷积降低通道数,然后继续卷积提取特征,最后再通过一维卷积升通道数,这样降低了运算的复杂度

8 . 数据增强

​ 将原始的数据进行变换(截取部分图片,对图片进行颜色变换等方法),得到了更多的样本,可以在更多的场景下识别目标

a . 常见的方法

  • 上下翻转
  • 切割
  • 改变颜色

9 . 微调

在自己的模型训练开始时候,参数的初始化不是随机的初始化,而是调用的源数据集(更大的数据集)训练好了的参数

  • 可以使用更小的学习率
  • 更少的数据迭代
  • 源数据集远复杂与目标数据集,微调效果更好
  • 预训练模型质量很重要
  • 微调通常速度更快,精度更高

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

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

相关文章

美格智能5G RedCap模组SRM813Q通过广东联通5G创新实验室测试认证

近日,美格智能5G RedCap轻量化模组SRM813Q正式通过广东联通5G创新实验室端到端的测试验收,获颁测评证书。美格智能已连续通过业内两家权威实验室的测试认证,充分验证SRM813Q系列模组已经具备了成熟的商用能力,将为智慧工业、安防监…

【漏洞复现】润申信息管理系统SQL注入漏洞

漏洞描述 申信息科技企业标准化管理系统 DefaultHandler.ashx SQL注入漏洞 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益&#x…

.NET某软件非托管泄露分析

一:背景 遇到过很多程序的故障和杀毒软件扯上了关系,有杀毒软件导致的程序卡死,有杀毒软件导致的程序崩溃,这一篇又出现了一个杀毒软件导致的程序非托管内存泄露,真的是分析多了什么鬼都能撞上。 开启了ust并在内存超出预期时抓了一个dump下来,接下来就是分析了。 二:W…

gRCP - 面向未来的第二代 RPC 技术,解析 HTTP2.0 和 Protobuf

目录 一、gRCP - 面向未来的第二代 RPC 技术 1.1、gRPC 简介 1.1.1、gRPC 是个啥? 1.1.2、gRPC 核心设计思路 1.1.3、gRPC 和 ThriftRPC 区别 1.1.4、为什么使用 gRPC?(好处) 1.2、HTTP2.0 协议 1.2.1、回顾 HTTP1.0 和 H…

数据结构-怀化学院期末题

希尔排序 题目&#xff1a; 利用希尔排序算法实现线性表的排序。希尔排序是根据给定的增量序列将线性表分隔成某个“增量”的记录组成一个子序例&#xff0c;在子序列中采用直接插入排序完成。 输入 第一行为元素个数n(1<n<1000)&#xff0c;第二行为n个元素值(整数)&am…

【C++】带你学会使用C++线程库thread、原子库atomic、互斥量库mutex、条件变量库condition_variable

C线程相关知识讲解 前言正式开始C官方为啥要提供线程库thread构造函数代码演示this_threadget_id()yield()sleep_until和sleep_for mutex构造函数lock和unlock上锁全局锁局部锁lambda表达式 try_lock 其他锁时间锁递归版本专用锁recursive_mutex 锁的异常处理lock_guardunique_…

Linux_CentOS_7.9_Oracle11gr2配置数据库及监听服务自启动多方案实操之简易记录

前言: 作为运维保障,都无法准确预估硬件宕机的突发阶段,其生产数据实时在产出,那作为dba数据库服务以及相关Listener的其重要性、必要性就突显而出。这里拿虚拟机试验做个配置记录,便于大家学习参考。 实现方法一: 环境变量值::$ORACLE_HOME= /data/oracle/product/1…

逆向一个Go程序

前奏 事先声明&#xff0c;自导自演&#xff0c;纯属为了演示基本的逆向思维 用Go写一段模拟登录的代码&#xff1a; package mainimport ("fmt" )func main() {pass : ""fmt.Print("input password:")fmt.Scan(&pass)if pass "hel…

包管理

moment —解析,校验,操作日期的第三方包 在项目中安装和使用包 1. 安装npm install 包的完整名称---可以简写为npm i 完整包的名称2. 导入包require(包名称)3. 查看官方文档初次装包完成后,在项目文件夹下多了一个node_modules文件夹和package-lock.json的配置文件. node_modu…

【极客日常】慢查询的风险治理思路

在线上环境运维过程中&#xff0c;我们通常需要治理慢查询的风险。慢查询会引起DB性能问题&#xff0c;并且当线上环境流量较大的情况下&#xff0c;就会出现因大量慢查询堆积导致DB被打挂的情况。因此&#xff0c;本篇文章分享一下慢查询的风险治理思路。 首先&#xff0c;我…

Matlab二维绘图

低级绘图命令line 有什么点就点哪里&#xff0c;然后连起来&#xff0c;没什么细节&#xff0c;不光滑&#xff0c;所以基本不会用到。 x0:0.2*pi:2*pi; ysin(x); line(x,y);%画一条sin函数线 line([-5,5],[2,2]);%画一条水平线 line([5,5],[0,2]);%画一条竖线 高级绘图命令…

一文搞懂MCU RAM的分配

一文搞懂MCU RAM的分配 文章目录 一文搞懂MCU RAM的分配1. 前言2. 数据段含义2.1 Program Size解析 3. 局部变量、全局变量、常量如何占用 RAM?3.1 栈大小Stack_Size 与 堆大小Heap_Size3.2 验证栈大小设置&#xff0c;对程序编译的影响3.3 验证局部变量RAM分配3.4 验证全局变…

Mac系统安装PicGo时打开报错:文件已损坏

目录 一、前言二、解决方案三、结尾 一、前言 我们在安装某些第三方开发者开发的应用时&#xff0c;无法在 Mac 上运行&#xff0c;提示已经损坏&#xff0c;报以下错误&#xff1a;Mac系统安装PicGo时打开报错&#xff1a;文件已损坏&#xff0c;您应该将它移到废纸篓 二、解决…

LeetCode 2807.在链表中插入最大公约数

【LetMeFly】2807.在链表中插入最大公约数 力扣题目链接&#xff1a;https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/ 给你一个链表的头 head &#xff0c;每个结点包含一个整数值。 在相邻结点之间&#xff0c;请你插入一个新的结点&#x…

DQL命令查询数据(三)

本课目标 掌握MySQL的多表查询 SQL语句的综合应用 多表连接查询 通过各个表之间共同列的关联性&#xff08;例如&#xff1a;外键&#xff09;来查询的 分类&#xff1a; 内连接(INNER JOIN) &#xff0c;可简写为 JOIN&#xff1b;左外连接(LEFT OUTER JOIN)&#xff0c;…

Java技术栈 —— Hadoop入门(一)

Java技术栈 —— Hadoop入门&#xff08;一&#xff09; 一、Hadoop第一印象二、安装Hadoop三、Hadoop解析3.1 Hadoop生态介绍3.1.1 MapReduce - 核心组件3.1.2 HDFS - 核心组件3.1.3 YARN - 核心组件3.1.4 其它组件3.1.4.1 HBase3.1.4.2 Hive3.1.4.3 Spark 一、Hadoop第一印象…

【Project】TPC-Online Module (manuscript_2024-01-07)

PRD正文 一、概述 本模块实现隧道点云数据的线上汇总和可视化。用户可以通过注册和登录功能进行身份验证&#xff0c;然后上传原始隧道点云数据和经过处理的数据到后台服务器。该模块提供数据查询、筛选和可视化等操作&#xff0c;同时支持对指定里程的分段显示和点云颜色更改…

小游戏实战丨基于PyGame的消消乐小游戏

文章目录 写在前面PyGame消消乐注意事项系列文章写在后面 写在前面 本期内容&#xff1a;基于pygame实现喜羊羊与灰太狼版消消乐小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700193 实验环境 python3.11及以上pycharmpygame 安装pygame…

回溯算法part01 算法

回溯算法part01 今日内容&#xff1a; ● 理论基础 ● 77. 组合 1.LeetCode77. 组合 https://leetcode.cn/problems/combinations/ 模板 //回溯算法模板void backtracking(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本层集合中元素&#xff08;树中节…

西电期末1027.判断同构数

一.题目 二.分析与思路 不用把他转成字符串再转成数字之类的&#xff0c;用数学解决就好&#xff01;找出一个数的最后位就是将其对求余啊&#xff0c;找一个数有几位以前也有过啊&#xff0c;那不就过了嘛&#xff01; 三.代码实现 #include<bits/stdc.h>//万能头 in…