李沐-《动手学深度学习》-- 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 . 微调

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式③ :生成实例

文章目录 一、前言二、Singleton 模式1. 介绍2. 应用3. 总结 三、Prototype 模式1. 介绍2. 应用3. 总结 四、Builder 模式1. 介绍2. 应用3. 总结 五、Abstract Factory 模式1. 介绍2. 应用3. 总结 参考内容 一、前言 有时候不想动脑子,就懒得看源码又不像浪费时间所…

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

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

ASP.NET Core基础之图片文件(二)-WebApi图片文件上传到文件夹

阅读本文你的收获: 了解WebApi项目保存上传图片的三种方式学习在WebApi项目中如何上传图片到指定文件夹中 在ASP.NET Core基础之图片文件(一)-WebApi访问静态图片文章中,学习了如何获取WebApi中的静态图片,本文继续分享如何上传图片。 那么…

基于机器视觉的车牌检测-边缘检测因子的选择

车牌检测概述 车牌识别在检测报警、汽车出入登记、交通违法违章以及移动电子警察方面应用广泛。车牌识别过程为:首先通过摄像头获取包含车牌的彩色图像;然后进行车牌边缘检测,先粗略定位到车牌位置,再精细定位;最后根…

你真的会用 Postman 吗?

1. 场景 提到 Postman,大部分的人可能只停留在使用 Postman「 模拟网络请求 」这单一功能上面。 事实上,Postman 的功能很强大,下面将罗列出几个比较少用,但实用的功能。 2. 抓包及拦截器 除了 Fiddler 和 Charles&#xff0c…

深入浅出Nacos的原理

前言 本文来讲一讲nacos作为底层注册中心的实现原理。那么就有这几个问题? 临时实例和永久实例是什么?有什么区别? 服务实例是如何注册到服务端的? 服务实例和服务端之间是如何保活的? 服务订阅是如何实现的&#…

idea怎么设置作者信息(详细)

目录 一:在Java类的开头自动注释作者名字和日期等信息 二:给Java的方法注释作者名字和日期等信息 1. 不可修改的模板:Postfix Completion 2. 可修改的模板:Live Templates tips:首先给大家推荐两款好用的免费软件&…

C语言汇总(持续更新)

大家好,这里是争做图书馆扫地僧的小白。非常感谢各位的支持,也期待着您的关注。 目前博主有着C语言、C、linux以及数据结构的专栏,内容正在逐步的更新。 希望对各位朋友有所帮助同时也期望可以得到各位的支持,有任何问题欢迎私信与…

IM即时通讯如何引领数字化时代的沟通革命?

在当今数字化时代,高效的即时通讯成为了企业无法缺少的工具。作为一款出色的IM即时通讯工具,WorkPlus以其卓越性能和创新功能,成为了最好的选择。 WorkPlus之所以被赞誉为优秀的IM即时通讯工具,首先在于其出色的性能。WorkPlus提供…

【强力推荐】GitCode AI开源搜索,面向开发者的专业AI搜索

一、GitCode AI开源搜索是什么? GitCode AI开源搜索 是面开发者的 AI 开源搜索工具,目的是为了帮助开发者快速寻找开源项目代码、解决开发问题和快速寻找答案,帮助开发者提升效率的同时利用代码仓托管能力建立自己个人知识库。 二、GitCode…

代码整洁之道:一个提升代码可读性的小技巧

写在开头 如何写好代码,一千个人眼中有一千个哈姆雷特,但是我认为有一点的是写好代码的公理,不可撼动,即对代码可读性的追求。最近在工作中面对了太多可读性不佳的代码,使得对于旧有代码的维护和分析困难重重&#xf…

Priors in Deep Image Restoration and Enhancement: A Survey

深度图像恢复和增强中的先验:综述 论文链接:https://arxiv.org/abs/2206.02070 项目链接:https://github.com/VLIS2022/Awesome-Image-Prior (Preprint. Under review) Abstract 图像恢复和增强是通过消除诸如噪声、模糊和分辨率退化等退化…

c语言的一些题(2024_1_7)

变种水仙花数 #include <stdio.h>int main() {int a 10000;for (; a < 100000; a){if ((a / 10000) * (a % 10000) (a / 1000) * (a % 1000) (a / 100) * (a % 100) (a / 10) * (a % 10) a)printf("%d ", a);}return 0; } //变种水仙花数 - Lily Num…

详细全面的postman接口测试实战教程

基本介绍 postman是一款流程的接口调试工具&#xff0c;其特点就是使用简单&#xff0c;功能强大。使用角色也非常广泛&#xff0c;后端开发&#xff0c;前端人员&#xff0c;测试人员都可以使用它进行接口调试或测试。 基本框架 如果把postman去其内容只保留框架的话&#…

vim/vi 模式切换和常用快捷键

vim/vi 切换模式&#xff1a; vim/vi 常用快捷键&#xff1a; 一般模式&#xff1a; gg&#xff1a;文件开头、G&#xff1a;文件结尾 shift^ &#xff1a;光标当前行首、shift^&#xff1a;光标当前行尾 yy&#xff1a;复制、p&#xff1a;粘贴、dd&#xff1a;删除当前行、…

JVM实战篇:内存调优

Java虚拟机进行生产环境线上问题解决以及性能问题的优化。 一.内存泄漏 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情…

【Flutter 开发实战】Dart 基础篇:常见的数据类型

Dart 支持许多数据类型&#xff0c;包括我们常见的 Numbers&#xff08;数值类型&#xff09;、Strings&#xff08;字符串类型&#xff09;、Booleans&#xff08;布尔类型&#xff09;&#xff0c;也支持一些包括 Collections&#xff08;集合类型&#xff09;、Records&…

大数据毕业设计:新闻情感分析系统 舆情分析 NLP 机器学习 爬虫 朴素贝叶斯算法(附源码+论文)✅

毕业设计&#xff1a;2023-2024年计算机专业毕业设计选题汇总&#xff08;建议收藏&#xff09; 毕业设计&#xff1a;2023-2024年最新最全计算机专业毕设选题推荐汇总 &#x1f345;感兴趣的可以先收藏起来&#xff0c;点赞、关注不迷路&#xff0c;大家在毕设选题&#xff…

asp网站代码层面实现防cc攻击

CC主要是用来攻击页面的.大家都有这样的经历&#xff0c;就是在访问论坛时&#xff0c;如果这个论坛比较大&#xff0c;访问的人比较多&#xff0c;打开页面的速度会比较慢&#xff0c;对不?!一般来说&#xff0c;访问的人越多&#xff0c;论坛的页面越多&#xff0c;数据库就…

【攻防世界】Reverse——secret-galaxy-300 writeup

由main函数查看相关代码&#xff0c;但是代码中并没有直接的关于flag的信息&#xff1a; int __cdecl main(int argc, const char **argv, const char **envp) {__main();fill_starbase(&starbase);print_starbase((int)&starbase);return 0; } void __cdecl fill_sta…