李沐-《动手学深度学习》-- 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.rhkb.cn/news/232723.html

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

相关文章

知识付费平台搭建?找明理信息科技,专业且高效

明理信息科技知识付费saas租户平台 在当今数字化时代,知识付费已经成为一种趋势,越来越多的人愿意为有价值的知识付费。然而,公共知识付费平台虽然内容丰富,但难以满足个人或企业个性化的需求和品牌打造。同时,开发和…

群晖NAS+DMS7.0以上版本+无docker机型安装zerotier

测试机型:群晖synology 218play / DSM版本为7.2.1 因218play无法安装docker,且NAS系统已升级为7.0以上版本,按zerotier官网说法无法安装zerotier, 不过还是可以通过ssh终端和命令方式安装zerotier。 1、在DSM新建文件夹 用于存放zerotier脚…

2023我的编程之旅-地质人的山和水

引言 大家好,我是搞地质的。外行人有的说我们游山玩水,有的说我们灰头土脸,也有的说我们不是科学。 而我说,这是一门穷极一生青春,值得奉献的行业。这是一门贴近民生,又拥抱自然的学科。他的真理性在于探…

进阶学习——Linux系统安全及应用

目录 一、系统安全加固 1.账号安全基本措施 1.1系统账号清理 1.1.1延伸 1.2密码安全控制 1.3命令历史限制 1.4终端自动注销 二、使用su命令切换用户 1.用途及用法 2.密码验证 3.限制使用su命令的用户 4.查看su操作记录 5.sudo(superuse do)…

stable diffusion 人物高级提示词(一)头部篇

一、女生发型 prompt描述推荐用法Long hair长发一定不要和 high ponytail 一同使用Short hair短发-Curly hair卷发-Straight hair直发-Ponytail马尾high ponytail 高马尾,一定不要和 long hair一起使用,会冲突Pigtails2条辫子-Braid辫子只写braid也会生…

数据库开发必备神器:DataGrip 工具安装指南

DataGrip是一款强大的跨平台数据库集成开发环境,全能数据库工具,支持多种数据库系统,包括MySQL,PostgreSQL,Oracle等;提供智能代码编辑功能,包括语法高亮、代码补全等,提升开发效率。…

Qt/QML编程学习之心得:Linux下Thread线程创建(26)

GUI设计中经常为了不将界面卡死,会用到线程Thread,而作为GUI设计工具,Qt也提供了一个这样的类,即QThread。 QThread对象管理程序中的一个控制线程。线程QThread开始在run()中执行。默认情况下,run()通过调用exec()启动事件循环,并在线程内运行Qt事件循环。 也可以通过…

YTM32的低功耗PowerDown模式及唤醒管理器WKU模块

文章目录 Introduction专门的唤醒源管理器WKU外部的唤醒引脚内部的触发信号 进入PowerDown模式的操作流进入低功耗模式配合使用的其他模块 性能指标低功耗电流唤醒时间 Conclusion Introduction YTM32的低功耗系统中有设计了多种工作模式,功耗从高到低,…

Spring之 国际化:i18n

1、i18n概述 国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国…

2.6 KERNEL LAUNCH

图2.15在vecAdd函数中显示最终主机代码。此源代码完成了图2.6.中的骨架。2.12和2.15共同说明了一个简单的CUDA程序,该程序由主机代码和设备内核组成。该代码是硬接的,每个线程块使用256个线程。然而,使用的线程块的数量取决于向量&#xff08…

java基于SSM的游戏商城的设计与实现论文

基于SSM的游戏商城的设计与实现 摘 要 当下,正处于信息化的时代,许多行业顺应时代的变化,结合使用计算机技术向数字化、信息化建设迈进。以前相关行业对于游戏信息的管理和控制,采用人工登记的方式保存相关数据,这种以…

【C++】- 类和对象(!!C++类基本概念!this指针详解)

类和对象 引入类类的定义类的访问限定操作符类的作用域类的实例化类对象模型this指针 引入类 在 C中,引入了一个新的定义----------类。类是一种用户自定义的数据类型,用于封装数据和行为。类可以看作是一个模板或蓝图,描述了一组相关的数据和…

Android 集成vendor下的模块

Android 集成vendor下的模块 ,只需要在 PRODUCT_PACKAGES 加上对应的模块名,编译的时候就会执行对应模块的bp文件,集成到系统中 PRODUCT_PACKAGES \WallpaperPicker \Launcher3 \com.nxp.nfc Android11 Framework Vendor下自定义系统…

SpringBoot 如何 返回页面

背景 RestController ResponseBody Controller Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。 Mapping ResponseBody 也会出现同样的问题。 解…

nginx访问路径匹配方法

目录 一:匹配方法 二:location使用: 三:rewrite使用 一:匹配方法 location和rewrite是两个用于处理请求的重要模块,它们都可以根据请求的路径进行匹配和处理。 二:location使用: 1:简单匹配…

SSH 密钥身份验证和管理

安全外壳协议(Security Shell Protocol)是一种应用于计算机网络的安全通信协议,其提供的服务可用于保护网络上的连接和数据传输安全性,其核心思想是为网络上的两台计算机之间搭建一个安全的外壳,以保护数据传输的安全性…

Python中的装饰器

顾名思义,函数装饰器就是对这个函数进行了装饰,比如在函数的前后进行日志打印等。在Python中,装饰器是一种特殊的语法,用于简化函数或方法的定义和调用。装饰器允许你在不修改原始函数代码的情况下,通过在其上应用装饰…

Ubuntu本地快速搭建web小游戏网站,公网用户远程访问

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

css文本溢出处理——单行、多行

日常开发中,经常会遇到需要展示的文本过长,这种情况下,为了提高用户的使用体验,最常见的处理方式就是把溢出的文本显示成省略号。 处理文本的溢出的方式:1)单行文本溢出; 2)多行文本…

TIA Portal 各版本安装指南

TIA Portal下载链接 https://pan.baidu.com/s/1Jat53vGz1rXfLm7kTldz-Q?pwd0531 1.鼠标右击【TIA portal V19 (64bit)】压缩包(先点击“显示更多选项”)选择【解压到 TIA portal V19 (64bit)】。 2.打开解压后的文件夹,鼠标右击【NoRestart…