当前位置: 首页 > news >正文

李宏毅机器学习笔记:【6.Optimization、Adaptive Learning Rate】

Optimization

  • 1.Adaptive Learning Rate
  • 2.不同的参数需要不同的学习率
  • 3.Root Mean Square
  • 4.RMSProp
  • 5.Adam
  • 6.learning rate scheduling
  • 7.warm up
  • 总结

critical point不一定是你在训练一个network时候遇到的最大的障碍。

1.Adaptive Learning Rate

也就是我们要给每个参数不同的Learning rate

往往在训练一个network的时候,你会把他的loss记录下来,随着你参数不断的update,你的loss呢不再下降了,就卡住了。。那多数时候这个时候大家就会猜说诶,那是不是走到了critical point,因为gradient等于零的关系,所以我们没有办法再更新参数。

当我们说走到critical point的时候,意味着gradient非常的小,但是你有确认过,当你的loss不再下降的时候,gradient真的很小吗?其实并不然。

下面这个例子,当我们的loss不再下降的时候,gradient的这个向量并没有真的变得很小,在最后训练的最终结的时候,loss几乎没有在减少了,但是gradient却突然还上升了一下。这个是我们的error surface,现在的gradient在error surface的两个谷壁间不断的来回的震荡,这个时候你的loss不会再下降,所以你会觉得看到这样子的状况,但是实际上他真的卡到了critical point、卡到了settle point、卡到了local minima吗?不是的。它的gradient仍然很大,只是loss不见得在减小了。

所以当你今天你训练个network,后来发现loss不再下降的时候,可能只是单纯的loss没有办法在下降,而不是卡在了那些点上。
在这里插入图片描述

我们在训练的时候其实很少卡到settle point或者是local minima,多数时候training在还没有走到critical point的时候,就已经停止了,但这并不代表说critical point不是一个问题,我们真正当你用gradient descent来做optimization的时候,你真正应该怪罪的对象往往不是critical point,而是其他的原因。
那为什么如果今天critical point不是问题的话,为什么我们的training会卡住呢,我这边举一个非常简单的例子。

你会发现说就连这种convex的error surface,形状这么简单的error surface,你用gradient descent都不见得能把它做好
学习率= 1 0 − 2 10^-2 102,时候,在震荡没有办法慢慢的滑到山谷里面,这时试着去调整了这个learning rate
学习率= 1 0 − 7 10^-7 107终于不再震荡了,终于从这个地方滑滑滑滑滑滑到山谷底,然后终于左转了,但是你发现说这个训练永远走不到终点,因为我的learning rate已经太小了,在这个很斜的地方,这个坡度很陡gradient的值很大,所以还能够前进一点,左转后的这个地方坡度已经非常的平滑了,这么小的learning rate根本没有办法再让我们的训练前进,,

gradient descent这个工具连这么简单的error surface都做不好,那如果难的问题,他又怎么有可能做好呢

在这里插入图片描述
那怎么把gradient descent做得更好呢?在之前我们的gradient descent里面,所有的参数都是设同样的learning rate,这显然是不够的,learning rate应该要为每一个参数特制化。

2.不同的参数需要不同的学习率

大原则:如果在某一个方向上gradient的值很小,在某一个方向上非常的平坦,那我们会希望learning rate调大一点;如果在某一个方向上非常的陡峭,某一个方向上坡度很大,那我learning rate可以设的小一点。
之前在讲gradient descent的时候,往往是讲所有参数update的式子,为了简化问题,我们现在只看一个参数,你完全可以把这个方法推广到所有参数的状况。
在这里插入图片描述
不同的参数我们要给它不同的sigma,同时他也是iteration dependent的,不同的iteration我们也会有不同的sigma。
如何计算这个sigma呢?
一个常见的类型是算gradient的Root Mean Square

3.Root Mean Square

在这里插入图片描述

这样的话坡度比较大的时候learning rate就减小,坡度比较小的时候learning rate就放大。

坡度比较小的时候如 θ 1 \theta_1 θ1,g小–> σ \sigma σ小—>learning rate就大(你在update的时候的量啊就比较大)
坡度比较大的时候如 θ 2 \theta_2 θ2,g大–> σ \sigma σ大—>learning rate就小

所以有了 σ \sigma σ这一项以后,你就可以随着gradient的不同,每个参数gradient的不同,来自动的调整learning rate的大小
在这里插入图片描述
上面的这个参数不会随时间改变,我们刚才的假设是同一个参数,它的gradient的大小就会固定是差不多的值,如果来看这个新月型的error surface,考虑横轴的话,有的地方地方坡度比较平滑,有的地方地方坡度比较陡峭,所以就算是同个参数,同一个方向,我们也期待说learning rate是可以动态的调整的。
所以就有了RMSProp

在这里插入图片描述

4.RMSProp

这个方法没有论文。
这个方法的第一步跟刚才讲的算Root Mean Square一模一样
第二步算 σ 1 \sigma_1 σ1的方法和算Root Mean Square的时候不一样,上一个的每一个gradient都有同等的重要性,但在RMSProp你可以自己调整现在的这个gradient的重要性,
如果我 α \alpha α设很小趋近于零,就代表说我觉得g1相较于之前所算出来的gradient而言比较重要;如果我 α \alpha α设很大趋近于1,那就代表说我觉得现在算出来的g1比较不重要。

这个 α \alpha α就会决定现在刚算出来的 g t g_t gt它有多重要
在这里插入图片描述
如果你用RMSProp的话,你就可以动态调整 σ 1 \sigma_1 σ1这一项.
比如下面的黑线,是我们的error surface,开始小球一路平坦,说明G算出来很小,G算出来很小,就代表说这个 σ \sigma σ算出来很小, σ \sigma σ算出来很小,就代表说现在update参数的时候,我们会走比较大的步伐;
当滚到斜坡时候,我们gradient变大了,如果是Adam的话,它反应比较慢;但如果你用RMSProp,把 α \alpha α设小,就是让新看到的gradient影响比较大,那你就可以很快的让 σ \sigma σ的值变大,然后很快让你的步伐呢变小。
又走到平滑的地方时候,调整 α \alpha α,让他比较看重于最近算出来的gradient,所以你gradient变小,它的这个 σ \sigma σ的值变大值呢就变小了,然后呢你走的步伐呢就变大了。
在这里插入图片描述

5.Adam

最常用optimization的策略就是Adam:RMSProp+Momentum
在这里插入图片描述

我们再看开始的例子,用了第二个的方法后做起来是这个样子的。这个gradient都取平方,再平均再开根号,然后接下来在左转的时候,刚才我们update了10万次卡住了,现在可以继续走下去,因为这个左右的方向的这个gradient很小,所以learning rate会自动调整,左右这个方向learning rate会自动变大,所以这个步伐呢就可以变大。

但走着走着突然爆炸了,为什么走到这边突然爆炸了呢?因为我们在算这个 σ \sigma σ的时候是把过去所有看到的gradient都拿来做平均,所以这个纵轴的这个方向,这个纵轴的方向虽然在初始的这个地方感觉gradient很大,但是这边走了很长一段路以后,这个纵轴的方向gradient算出来都很小,所以纵轴的这个方向就累积了小的 σ \sigma σ,累积到一个地步以后,这个step就变很大,然后就暴走就喷出去了,,

不过喷出去后走到gradient比较大的地方以后, σ \sigma σ又慢慢的变大, σ \sigma σ变大以后,这个参数update的距离,update的这个步伐大小又慢慢的变小,所以就发现说诶走着走着突然往左右喷了一下,但是这个喷这个喷了一下,不会永远就是震荡,不会做简谐运动,他这个左这个这个力道会慢慢变小,让它慢慢的慢慢的又回到中间这个峡谷了。

这样怎么办呢?有一个方法也许可以解决这个问题,这个叫做learning rate schedule

在这里插入图片描述

6.learning rate scheduling

我们这个式子还有个参数 η \eta η,他要是跟时间有关的,我们不要把它当成一个常数。

最常见的策略啊叫做learning rate decay,也就是说随着时间不断的进行,随着参数不断的update,我们这个 η \eta η让它越来越小,让这个learning rate越来越小。
为什么要让这个learning rate越来越小呢?因为一开始我们距离终点很远,随着参数不断update,我们距离终点越来越近,我们参数的更新要能够慢慢的慢下来。

所以刚才那个状况,如果加上learning rate decay的话,我们就可以很平顺的走到终点。因为在后面这个 η \eta η已经变得非常的小了,虽然说他本来想要左右乱喷,但是会乘上这个非常小的 η \eta η,那就停下来了,就可以慢慢的走到终点。
在这里插入图片描述
除了learning rate decay以外,还有另外一个经典非常常用的learning rate schedule的方式叫做warm up。

7.warm up

这个warm up的方法是说我们这个learning rate要先变大后变小

在这里插入图片描述
Residual Network这边特别注明它反其道而行,一开始要设0.01,接下来设0.1,还特别加个注解
在这里插入图片描述
同时warm up在transformer里面也用一个式子提了它好,你实际上把它的把这个方程画出来,就会发现它就2learning rate会先增加,然后接下来再递减。

所以发现说warm up这个技术,在很多知名的network里面都有被当做一个黑科技,就论文里面不解释说为什么要用这个,但就偷偷在一个小地方,你没有注意到。

在这里插入图片描述
那为什么需要warm up呢?这个仍然是今天一个可以研究的问题了。

这边有一个可能的解释是说,当我们在用Adam、RMSProp时候,我们要计算 σ \sigma σ,这个sigma它是一个统计的结果,告诉我们说某一个方向他到底有多陡或者是多平滑,那这个统计的结果要看了够多笔数据以后,这个统计才精准,所以我们一开始呢 σ \sigma σ不精准,所以开始不要让我们的参数走离初始的地方太远,一开始让learning rate比较小,是让他探索搜集一些有关error surface的情报,等sigma统计比较精准以后,再把让learning ray呢慢慢的爬升,这是一个解释为什么我们需要warm up的可能性。

如果你想要学更多有关warm up的东西的话,可以看RAdam。

在这里插入图片描述

总结

有关optimization的部分,我们从最原始的gradient descent进化到下面这个版本
在这里插入图片描述

这个版本我们有momentum,也就是说我们现在不是完全顺着这个时间点算出来gradient的方向来更新参数的,而是把过去所有算出来的规定的方向做一个加总,当做update方向,这个是momentum。
那接下来到底应该要update多大的步伐呢?我们要除掉gradient的root mean square。

疑问:这个momentum是考虑过去所有的gradient,这个 σ \sigma σ也是考虑过去所有的gradient,一个放在分子,一个放在分母,都考虑过去所有的gradient不就是正好抵消了吗?

其实这个momentum和 σ \sigma σ他们在使用过去所有gradient的方式是不一样的。
momentum是直接把所有的gradient通通都加起来,他有考虑方向,考虑gradient的正负号,考虑gradient是往左走还是往右走。
但是root mean square,它不考虑gradient的方向了,它只考虑gradient的大小,我们在算 σ \sigma σ时候都要取平方向,把gradient取一个平方向,是把平方的结果加起来,所以我们只考虑gradient的大小,不考虑它的方。
所以momentum跟这个 σ \sigma σ算出来的结果并不会互相抵消掉。

最后我们还会加上一个learning rate的schedule。
这种optimizer除了Adam以外还有各式各样的变形.
在这里插入图片描述

相关文章:

李宏毅机器学习笔记:【6.Optimization、Adaptive Learning Rate】

Optimization 1.Adaptive Learning Rate2.不同的参数需要不同的学习率3.Root Mean Square4.RMSProp5.Adam6.learning rate scheduling7.warm up总结 critical point不一定是你在训练一个network时候遇到的最大的障碍。 1.Adaptive Learning Rate 也就是我们要给每个参数不同的…...

计算机组成原理—— 外围设备(十三)

记住,伟大的成就往往诞生于无数次尝试和失败之后。每一次跌倒,都是为了让你学会如何更加坚定地站立;每一次迷茫,都是为了让你找到内心真正的方向。即使前路漫漫,即使困难重重,心中的火焰也不应熄灭。它代表…...

React简介

React简介 A Brief Introduction to React By JacksonML 1. 关于React React是一个知名的Web框架。众所周知,jQuery, Angular, Vue等框架都曾闪亮登场,并且,都仍然在全球市场占有一席之地。React这个颇有担当的新锐,也进入到我…...

Linux-C/C++《七、字符串处理》(字符串输入/输出、C 库中提供的字符串处理函数、正则表达式等)

字符串处理在几乎所有的编程语言中都是一个绕不开的话题,在一些高级语言当中,对字符串的处理支 持度更是完善,譬如 C、 C# 、 Python 等。若在 C 语言中想要对字符串进行相关的处理,譬如将两个字符串进行拼接、字符串查找、两个…...

哈希动态规划dp_5

一.哈希 哈希(Hashing)是计算机科学中一种非常重要的技术,用于将输入的数据映射到固定大小的值(哈希值)上。哈希算法和哈希数据结构广泛应用于各种领域,包括数据查找、加密、缓存、数据库索引等。我们来详…...

电商分布式场景中如何保证数据库与缓存的一致性?实战方案与Java代码详解

文章目录 一、缓存一致性问题的本质写后读不一致:更新数据库后,缓存未及时失效并发读写竞争:多个线程同时修改同一数据缓存与数据库事务不同步:部分成功导致数据错乱 二、5大核心解决方案与代码实现方案1:延迟双删策略…...

DeepSeek-R1 大模型本地部署指南

文章目录 一、系统要求硬件要求软件环境 二、部署流程1. 环境准备2. 模型获取3. 推理代码配置4. 启动推理服务 三、优化方案1. 显存优化技术2. 性能加速方案 四、部署验证健康检查脚本预期输出特征 五、常见问题解决1. CUDA内存不足2. 分词器警告处理3. 多GPU部署 六、安全合规…...

【数据结构】 栈和队列

在计算机科学的世界里,数据结构是构建高效算法的基础。栈(Stack)和队列(Queue)作为两种基本且重要的数据结构,在软件开发、算法设计等众多领域都有着广泛的应用。今天,我们就来深入探讨一下栈和…...

用Python构建Mad Libs经典文字游戏

前言 Mad Libs 是一种经典的文字游戏,其中一名玩家向其他玩家询问各种词汇,如名词、动词、形容词等,而不提供任何上下文。然后将这些提示词插入到一个充满空白的故事模板中,从而创造出一个搞笑或荒谬的故事,供玩家大声朗读以获取乐趣。 自1950年代发明以来,Mad Libs 一…...

ReactiveSwift模拟登录功能

通过使用ReactiveSwift模拟一个简单的登录功能&#xff0c;该功能如下要求&#xff1a; 账号不能为空密码必须大于6位 登录按钮方可点击 LoginViewModel&#xff1a; import ReactiveSwiftclass LoginViewModel {// 创建两个信号let userName MutableProperty<String&g…...

亲测有效!使用Ollama本地部署DeepSeekR1模型,指定目录安装并实现可视化聊天与接口调用

文章目录 一、引言二、准备工作&#xff08;Ollama 工具介绍与下载&#xff09;2.1 Ollama介绍2.2 Ollama安装 三、指定目录安装 DeepSeek R1四、Chatbox 可视化聊天搭建4.1 Chatbox下载安装4.2 关联 DeepSeek R1 与 Chatbox 的步骤 五、使用 Ollama 调用 DeepSeek 接口5.1 请求…...

【第11章:生成式AI与创意应用—11.3 AI艺术创作的实现与案例分析:DeepArt、GANBreeder等】

凌晨三点的画室里,数字艺术家小美盯着屏幕上的GANBreeder界面——她将梵高的《星月夜》与显微镜下的癌细胞切片图进行混合,生成的新图像在柏林电子艺术展上引发轰动。这场由算法驱动的艺术革命,正在重写人类对创造力的定义。 一、机器视觉的觉醒之路 1.1 数字艺术的三次浪…...

MySQL的基本使用

MySQL 是一个强大且广泛使用的开源关系型数据库管理系统&#xff0c;适用于各种规模的应用程序。无论是初学者还是经验丰富的开发者&#xff0c;掌握 MySQL 的基本操作都是至关重要的。本文将带你了解 MySQL 的基础概念&#xff0c;并通过实例介绍如何执行一些常见的数据库操作…...

WEB安全--SQL注入--PDO与绕过

一、PDO介绍&#xff1a; 1.1、原理&#xff1a; PDO支持使用预处理语句&#xff08;Prepared Statements&#xff09;&#xff0c;这可以有效防止SQL注入攻击。预处理语句将SQL语句与数据分开处理&#xff0c;使得用户输入的数据始终作为参数传递给数据库&#xff0c;而不会直…...

微信小程序image组件mode属性详解

今天学习微信小程序开发的image组件&#xff0c;mode属性的属性值不少&#xff0c;一开始有点整不明白。后来从网上下载了一张图片&#xff0c;把每个属性都试验了一番&#xff0c;总算明白了。现总结归纳如下&#xff1a; 1.使用scaleToFill。这是mode的默认值&#xff0c;sc…...

大模型炼丹基础--GPU内存计算

一、摘要 选择合适的GPU对成本和效率都至关重要&#xff0c;合理分析GPU 二、硬件计算基础 1 个字节可以表示零&#xff08;00000000&#xff09;和 255&#xff08;11111111&#xff09;之间的数字 模型参数常用的数据类型如下&#xff1a; float&#xff08;32 位浮点&a…...

istio入门篇(一)

一、背景 一直以来“微服务”都是一个热门的词汇&#xff0c;在各种技术文章、大会上&#xff0c;关于微服务的讨论和主题都很多。对于基于 Dubbo、SpringCloud 技术体系的微服务架构&#xff0c;已经相当成熟并被大家所知晓&#xff0c;但伴随着互联网场景的复杂度提升、业务…...

Ubuntu 24.04.1 LTS 本地部署 DeepSeek 私有化知识库

文章目录 前言工具介绍与作用工具的关联与协同工作必要性分析 1、DeepSeek 简介1.1、DeepSeek-R1 硬件要求 2、Linux 环境说明2.1、最小部署&#xff08;Ollama DeepSeek&#xff09;2.1.1、扩展&#xff08;非必须&#xff09; - Ollama 后台运行、开机自启&#xff1a; 2.2、…...

沃德校园助手系统php+uniapp

一款基于FastAdminThinkPHPUniapp开发的为校园团队提供全套的技术系统及运营的方案&#xff08;目前仅适配微信小程序&#xff09;&#xff0c;可以更好的帮助你打造自己的线上助手平台。成本低&#xff0c;见效快。各种场景都可以自主选择服务。 更新日志 V1.2.1小程序需要更…...

Visual Studio Code使用ai大模型编成

1、在Visual Studio Code搜索安装roo code 2、去https://openrouter.ai/settings/keys官网申请个免费的配置使用...

工业软件测试方案

一、方案概述 本测试方案致力于全面、系统地评估工业仿真软件的综合性能&#xff0c;涵盖性能表现、功能完整性以及用户体验层面的易用性。同时&#xff0c;将其与行业内广泛应用的MATLAB进行深入的对比分析&#xff0c;旨在为用户提供极具价值的参考依据&#xff0c;助力其在…...

红队视角出发的k8s敏感信息收集——Kubernetes API 扩展与未授权访问

针对 Kubernetes API 扩展与未授权访问 的详细攻击视角分析&#xff0c;聚焦 Custom Resource Definitions (CRD) 和 Aggregated API Servers 的潜在攻击面及利用方法&#xff1a; ​ 攻击链示例 1. 攻击者通过 ServiceAccount Token 访问集群 → 2. 枚举 CRD 发现数据库配…...

一种 SQL Server 数据库恢复方案:解密、恢复并导出 MDF/NDF/BAK文件

方案特色 本方案可以轻松恢复和导出SQL数据库&#xff1a;MDF、NDF 和 BAK 文件。 恢复和导出SQL数据库&#xff1a;主&#xff08;MDF&#xff09;&#xff0c;辅助&#xff08;NDF&#xff09;和备份&#xff08;BAK&#xff09;文件分析 SQL Server LOG 数据库事务日志将 …...

Pygame中自定义事件处理的方法2-1

1 Pygame事件处理流程 Pygame中的事件处理流程如图1所示。 图1 Pygame中事件处理流程 系统事件包括鼠标事件和键盘事件等&#xff0c;当用户点击了鼠标或者键盘时&#xff0c;这些事件会自动被放入系统的事件队列中。用户自定义事件需要通过代码才能被放入事件队列中。Pygame…...

langchain学习笔记之消息存储在内存中的实现方法

langchain学习笔记之消息存储在内存中的实现方法 引言背景消息存储在内存的实现方法消息完整存储&#xff1a;完整代码 引言 本节将介绍 langchain \text{langchain} langchain将历史消息存储在内存中的实现方法。 背景 在与大模型交互过程中&#xff0c;经常出现消息管理方…...

HarmonyOS组件之Tabs

Tabs 1.1概念 Tabs 视图切换容器&#xff0c;通过相适应的页签进行视图页面的切换的容器组件每一个页签对应一个内容视图Tabs拥有一种唯一的子集元素TabContent 1.2子组件 不支持自定义组件为子组件&#xff0c;仅可包含子组件TabContent&#xff0c;以及渲染控制类型 if/e…...

【C++】基础入门(详解)

&#x1f31f; Hello&#xff0c;我是egoist2023&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; 目录 输入&输出 缺省参数(默认参数) 函数重载 引用 概念及定义 特性及使用 const引用 与指针的关系 内联inline和nullptr in…...

bps是什么意思

本文来自DeepSeek "bps" 是 "bits per second" 的缩写&#xff0c;表示每秒传输的比特数&#xff0c;用于衡量数据传输速率。1 bps 即每秒传输 1 比特。 常见单位 bps&#xff1a;比特每秒 Kbps&#xff1a;千比特每秒&#xff08;1 Kbps 1,000 bps&am…...

OceanBase使用ob-loader-dumper导出表报ORA-00600

执行下面的语句导出表报错&#xff0c;同样的语句之前都没有报错。 ob-loader-dumper-4.2.8-RELEASE/bin/obdumper -h xxx.xxx.xxx.xxx -P 2883 -p 密码 --column-splitter| --no-sys-t gzuat_ss#ob8&#xff08;集群&#xff09; -D 数据库名 --cut --table teacher --no-ne…...

JUC并发总结一

大纲 1.Java集合包源码 2.Thread源码分析 3.volatile关键字的原理 4.Java内存模型JMM 5.JMM如何处理并发中的原子性可见性有序性 6.volatile如何保证可见性 7.volatile的原理(Lock前缀指令 + 内存屏障) 8.双重检查单例模式的volatile优化 9.synchronized关键字的原理 …...

hive:分区>>静态分区,动态分区,混合分区

分区表 使用场景&#xff1a;数据量庞大且经常用来做查询的表 特点&#xff1a;将数据分别存储到不同的目录里 优点&#xff1a;避免全盘扫描&#xff0c;提高查询效率 分区的类型 它们的默认值分别是: false, strict, 要求至少有一个静态分区列&#xff0c;而 nonstr…...

深入解析PID控制算法:从理论到实践的完整指南

前言 大家好&#xff0c;今天我们介绍一下经典控制理论中的PID控制算法&#xff0c;并着重讲解该算法的编码实现&#xff0c;为实现后续的倒立摆样例内容做准备。 众所周知&#xff0c;掌握了 PID &#xff0c;就相当于进入了控制工程的大门&#xff0c;也能为更高阶的控制理论…...

linux--关于GCC、动态库静态库

gcc和g的异同 他们是不同的编译器&#xff0c; 在linux中&#xff0c;生成可执行文件不像和windows一样。 linux中是以**.out作为可执行文件**的 无论是什么系统&#xff0c;生成可执行文件分为4步&#xff1a; 预处理–>编译–>汇编–>链接。 从.c/.cpp–>.i文件…...

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Pygame中自定义事件处理的方法2-2

在《Pygame中自定义事件处理的方法2-1》中提到了处理自定义事件的方法。通过处理自定义事件&#xff0c;可以实现动画等效果。 1 弹跳小球程序 通过处理自定义事件&#xff0c;可以实现弹跳小球程序&#xff0c;如图1所示。 图1 弹跳小球程序 2 弹跳小球程序原理 实现弹跳小…...

B. Longest Divisors Interval

time limit per test 2 seconds memory limit per test 256 megabytes Given a positive integer nn, find the maximum size of an interval [l,r][l,r] of positive integers such that, for every ii in the interval (i.e., l≤i≤rl≤i≤r), nn is a multiple of ii. …...

什么是服务的雪崩、熔断、降级的解释以及Hystrix和Sentinel服务熔断器的解释、比较

1.什么是服务雪崩&#xff1f; 定义&#xff1a;在微服务中&#xff0c;假如一个或者多个服务出现故障&#xff0c;如果这时候&#xff0c;依赖的服务还在不断发起请求&#xff0c;或者重试&#xff0c;那么这些请求的压力会不断在下游堆积&#xff0c;导致下游服务的负载急剧…...

从驾驶员到智能驾驶:汽车智能化进程中的控制与仿真技术

在汽车技术持续演进的历程中&#xff0c;人类驾驶员始终是一个极具研究价值的智能控制系统“原型”。驾驶员通过视觉感知、行为决策与操作执行的闭环控制&#xff0c;将复杂的驾驶任务转化为车辆的实际动作&#xff0c;同时动态适应道路环境的变化。这一过程不仅体现了高度的自…...

mysql和minio

在现代应用架构中&#xff0c;Word 文档、PPT 等文件通常存储在对象存储服务&#xff08;如 MinIO&#xff09;中&#xff0c;而不是直接存储在关系型数据库&#xff08;如 MySQL&#xff09;中。以下是具体的分工和原因&#xff1a; 为什么选择对象存储&#xff08;如 MinIO&a…...

java练习(24)

PS:练习来自力扣 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2&#xff0c;另有两个整数 m 和 n &#xff0c;分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中&#xff0c;使合并后的数组同样按 非递减顺序 排列。 注意&am…...

Android的Activity生命周期知识点总结,详情

一. Activity生命周期 1.1 返回栈知识点 二. Activity状态 2.1 启动状态 2.2 运行状态 2.3 暂停状态 2.4 停止状态 2.5 销毁状态 三. Activity生存期 3.1 回调方法 3.2 生存期 四. 体验Activity的生命周期 五. Activity被回收办法 引言&#xff1a; 掌握Acti…...

STM32——HAL库开发笔记19(串口中断接收实验)(参考来源:b站铁头山羊)

本实验&#xff0c;我们以中断的方式使得串口发送数据控制LED的闪烁速度&#xff0c;发送1&#xff0c;慢闪&#xff1b;发送2&#xff0c;速度正常&#xff1b;发送3&#xff0c;快闪。 一、电路连接图 二、实现思路&CubeMx配置 1、实现控制LED的闪烁速度 uint32_t bli…...

基于腾讯云TI-ONE 训练平台快速部署和体验 DeepSeek 系列模型

引言 在前两篇文章中&#xff0c;我们通过腾讯云的HAI部署了DeepSeek-R1&#xff0c;并基于此进行了一系列实践。 腾讯云HAI DeepSeek 腾讯云AI代码助手 &#xff1a;零门槛打造AI代码审计环境 基于腾讯云HAI DeepSeek 快速开发中医辅助问诊系统 这些尝试不仅帮助我们理解…...

python的类装饰器

装饰器不仅可以用于函数&#xff0c;还能作用于类。将装饰器应用于类时&#xff0c;其核心原理与作用于函数类似&#xff0c;都是通过接收一个类作为输入&#xff0c;然后返回一个新的类或者修改后的原类&#xff0c;以此来为类添加额外的功能 简单的类装饰器 def add_method…...

C++17中的LegacyContiguousIterator(连续迭代器)

文章目录 特点内存连续性与指针的兼容性更高的性能 适用场景与C接口交互高性能计算 支持连续迭代器的容器示例代码性能优势缓存局部性指针算术优化 注意事项总结 在C17标准里&#xff0c;LegacyContiguousIterator&#xff08;连续迭代器&#xff09;是一类特殊的迭代器。它不仅…...

Linux-文件IO

1.open函数 【1】基本概念和使用 #include <fcntl.h> int open(const char *pathname&#xff0c;int flags); int open(const char *pathname&#xff0c;int flags&#xff0c;mode_t mode); 功能: 打开或创建文件 参数: pathname //打开的文件名 f…...

DeepSeek-R1 + Cherry Studio 本地部署打造个人 AI 知识库

ChatGPT 爆火的时候&#xff0c;我心里就燃起了一个想法&#xff1a;打造一个专属于自己的AI知识库&#xff0c;它就像我的第二大脑一样&#xff0c;能记住我生活里的点点滴滴。 我随口一问“去年5月我做了什么”&#xff0c;它不仅能精准找到记录&#xff0c;还能帮我回忆起那…...

《红色警戒:兵临城下》 游戏软件安装步骤与百度网盘链接

软件简介&#xff1a; 《红色警戒&#xff1a;兵临城下》&#xff08;Command & Conquer: Red Alert&#xff09;是一款经典的即时战略游戏&#xff0c;由Westwood Studios开发&#xff0c;于1996年首次发行。它是《命令与征服》系列的衍生作品&#xff0c;以其独特的世界…...

25/2/16 <算法笔记> DirectPose

DirectPose 是一种直接从图像中预测物体的 6DoF&#xff08;位姿&#xff1a;6 Degrees of Freedom&#xff09;姿态 的方法&#xff0c;包括平移和平面旋转。它在目标检测、机器人视觉、增强现实&#xff08;AR&#xff09;和自动驾驶等领域中具有广泛应用。相比于传统的位姿估…...

第32周:文献阅读

目录 摘要 Abstract 文献阅读 问题引入 研究问题 研究意义 研究方法 集成方法 随机森林&#xff08;RF&#xff09; 支持向量机&#xff08;SVM&#xff09; 简单循环神经网络&#xff08;SimpleRNN&#xff09; 长短期记忆网络&#xff08;LSTM&#xff09; 创…...