深度学习1-简介

人工智能(AI)旨在打造模仿智能行为的系统。它覆盖了众多方法,涵盖了基于逻辑、搜索和概率推理的技术。机器学习是 AI 的一个分支,它通过对观测数据进行数学模型拟合来学习决策制定。这个领域近年来迅猛发展,现在几乎(虽不完全准确)与 AI 同义。

深度神经网络是一类机器学习模型,将其应用到数据上的过程称为深度学习。目前,深度网络是最强大和最实用的机器学习模型之一,常见于日常生活中。我们常常用自然语言处理(Natural Language Processing)算法翻译文本、用计算机视觉(Computer Vision)系统搜索特定对象的图片,或通过语音识别(Speech Recognition)界面与数字助理交谈,这些都是深度学习的实际应用。

机器学习方法大体上分为三大类:监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning)。目前,这三大类的前沿方法均依赖于深度学习(见图 1.1)。

图 1.1 机器学习是人工智能的一个分支,它专注于将数学模型应用于观测数据。它主要分为三个类别:监督学习、非监督学习和强化学习。深度神经网络在这三个领域中均发挥着重要作用。

1.1 监督学习

监督学习模型建立了一种从输入数据到输出预测的关系。在后续几节中,我们会详细探讨输入、输出、模型本身,以及“训练”模型所指的含义。

1.1.1 回归和分类问题

图 1.2 回归和分类问题。a)这个回归模型使用描述房产特征的数字向量来预测其价格。b)这个多变量回归模型以化学分子的结构为输入,预测其熔点和沸点。c)这个二元分类模型接收餐厅评论,并将其划分为正面或负面。d)这个多类别分类问题将一段音频片段归类为 N 种音乐类型中的一种。e)第二个多类别分类问题中,模型根据图片可能包含的 N 种物体之一来分类图片。

图 1.2 展示了几个回归和分类问题的例子。在每个例子中,都有一个与现实世界相关的输入(如一个句子、一段声音文件、一幅图片等),这些输入被转换成数字向量。这个向量就是模型的输入。模型把这个输入映射到一个输出向量,随后这个输出向量被再次转换,变成一个具有现实意义的预测。目前,我们主要关注输入和输出,并把模型当作一个黑盒子,它接受一个数字向量并输出另一个数字向量。

图 1.2a 中的模型基于如房屋的平方米数和卧室数量等输入特征来预测房价。这是一个回归问题,因为模型返回的是一个连续数值(而非某个类别)。而图 1.2b 中的模型则以分子的化学结构为输入,预测其熔点和沸点。由于预测了多个数值,这是一个多变量回归问题。

图 1.2c 中的模型接收包含餐厅评论的文本字符串作为输入,并预测评论是正面的还是负面的。这是一个二元分类问题,因为模型试图将输入分配到两个不同的类别中。输出向量包含输入属于每个类别的概率。图 1.2d 和 1.2e 则展示了多类别分类问题。在这里,模型将输入分配到多于两个的类别中。第一个例子中,输入是一个音频文件,模型预测它包含的音乐类型。第二个例子中,输入是一幅图片,模型预测图片中包含的对象。在这些例子中,模型均返回一个包含各类别概率的大小为 N 的向量。

1.1.2 输入

图 1.2 中的输入数据类型各异。在房价预测例子中,输入是一个固定长度的向量,包含了描述房产特征的值。这是一种表格数据,它没有内在结构;如果我们改变输入值的顺序再构建一个新模型,预期模型的预测结果不会改变。

另一方面,在餐厅评论的例子中,输入是一段文本。这可能根据评论中的单词数而长度不同,且输入顺序很重要;例如,“我的妻子吃了鸡肉”与“鸡肉吃了我的妻子”意义截然不同。在传递给模型之前,文本必须被编码为数字形式。这里,我们使用一个包含 10,000 个词的固定词汇表,并将单词索引简单拼接起来。

在音乐分类的例子中,输入向量可能是固定大小的(比如 10 秒音频片段),但其维度非常高。数字音频通常以 44.1 kHz 采样并以 16 位整数表示,因此一个 10 秒的音频片段包含 441,000 个整数。显然,监督学习模型必须能够处理大量输入。图像分类例子中的输入(由每个像素的 RGB 值串联起来的)也非常庞大。而且,它的结构本质上是二维的;即使在输入向量中不相邻,上下相邻的两个像素也紧密相关。

最后,考虑预测分子熔点和沸点的模型的输入。一个分子可能包含不同数量且连接方式各异的原子。在这种情况下,模型需要同时考虑分子的几何结构和组成原子。

1.1.3 机器学习模型

图 1.3 机器学习模型。该模型表示一系列关系,将输入(儿童年龄)与输出(儿童身高)联系起来。通过训练数据(橙色点,包括输入/输出对)来选定具体的关系。在训练模型过程中,我们寻找能够很好描述数据的关系。这里,经过训练的模型是青色曲线,可以用来计算任何年龄的儿童身高。

到目前为止,我们把机器学习模型当作一个黑盒子,它接受输入向量并返回输出向量。但这个黑盒子里面究竟是什么呢?考虑一个根据孩子年龄来预测身高的模型(见图 1.3)。机器学习模型其实是一个数学方程,描述了平均身高如何随年龄变化(图 1.3 中的青色曲线)。当我们把年龄输入这个方程,它就会返回相应的身高。例如,如果年龄是 10 岁,我们预测身高为 139 厘米。

更精确地说,这个模型代表了一系列方程,用于将输入映射到输出(即不同的青色曲线)。特定的方程(曲线)是根据训练数据(输入和输出对的示例)来选择的。在图 1.3 中,这些对由橙色点表示,我们可以看到模型(青色线条)合理地描述了这些数据。当我们谈到训练或拟合一个模型时,我们的意思是在可能的方程(青色曲线)中寻找一个最能准确描述训练数据的关系。

因此,图 1.2 中的模型需要标记好的输入/输出对来进行训练。例如,音乐分类模型需要大量音频片段,这些片段已由人类专家确定了各自的音乐类型。这些输入/输出对在训练过程中起到了教师或监督者的作用,这就是“监督学习”这个术语的由来。

1.1.4 深度神经网络

深度神经网络是一种特别有效的机器学习模型。它们是方程,能够代表输入和输出之间极其广泛的关系,并且在这些关系中寻找描述训练数据的关系特别容易。

深度神经网络可以处理非常大、变化多端的输入,并且能够包含各种内部结构。它们能输出单个实数(回归)、多个数值(多变量回归)或两个或更多类别的概率(分别对应二元和多类别分类)。正如我们在下一节中将看到的,它们的输出也可能非常大、变长,并且包含内部结构。想象具有这些特性的方程可能很困难,读者应努力暂时搁置怀疑。

1.1.5 结构化输出

图1.4 具有结构化输出的监督学习任务。a) 这个语义分割模型把 RGB 图像映射到一个二元图像,用于指示每个像素是属于背景还是牛(改编自 Noh 等人,2015年)。b) 这个单目深度估计模型将 RGB 图像映射到一个输出图像,每个像素代表深度(改编自 Cordts 等人,2016年)。c) 这个音频转录模型将音频样本映射到音频中所说话语的文字转录。d) 这个翻译模型将英语文本字符串映射到其对应的法语翻译。e) 这个图像合成模型将文字描述映射到一幅图像(示例来自 https://openai.com/dall-e-2/ )。在每个案例中,输出都具有复杂的内部结构或语法。在某些情况下,与输入相兼容的输出可能有多个。

图 1.4a 展示了一个用于语义分割的多变量二元分类模型。在这里,输入图像的每个像素都被分配一个二元标签,指示它是属于牛还是背景。图 1.4b 展示了一个多变量回归模型,输入是街景图像,输出是每个像素的深度。在这两种情况下,输出都是高维且有结构的。然而,这种结构与输入紧密相关,可以被利用;如果一个像素被标记为“牛”,那么具有相似 RGB 值的邻近像素可能有相同的标签。

图 1.4c-e 描述了三个输出具有与输入不太紧密相关的复杂结构的模型。图 1.4c 展示了一个模型,输入是音频文件,输出是文件中的转录词。图 1.4d 是一个翻译模型,输入是英文文本,输出是法文翻译。图 1.4e 描述了一个极具挑战性的任务,输入是描述性文本,模型需要生成与这个描述匹配的图像。

原则上,这三个后续任务可以在标准监督学习框架下解决,但它们更为困难,原因有二。首先,输出可能确实模糊不清;从英语到法语有多种有效翻译,任何描述都可能对应多种图像。其次,输出包含大量结构;并非所有单词串都能构成有效的英语和法语句子,也不是所有 RGB 值的组合都能构成合理的图像。除了学习映射,我们还必须遵循输出的“语法”。

幸运的是,这种“语法”可以在不需要输出标签的情况下学习。例如,我们可以通过学习大量文本数据的统计信息来学习构建有效的英语句子。这为无监督学习模型部分提供了一个联系。

1.2 无监督学习

从没有对应输出标签的输入数据中构建模型被称为无监督学习;缺乏输出标签意味着不存在“监督”。无监督学习的目标不是学习输入到输出的映射,而是描述或理解数据的结构。就像监督学习一样,数据可能具有非常不同的特点;它可能是离散或连续的,低维或高维的,长度固定或变化的。

1.2.1 生成式模型

生成式无监督模型,这类模型学习如何合成新的数据实例,使其在统计上与训练数据难以区分。一些生成式模型明确描述了输入数据的概率分布,并通过从这个分布中抽样来生成新实例。其他模型则仅学习生成新实例的机制,而不直接描述其分布。

图1.5 图像生成式模型。左图:两幅图像由训练有素的猫图模型生成。这些不是真正的猫,而是概率模型生成的样本。右图:两幅图像由专门训练的建筑图模型生成。改编自 Karras 等人 (2020b)。

当我到达森林边缘时,月亮已经升起,树木间筛下的光线银白而冷冽。我不由自主地颤抖起来,虽然我并不觉得冷,我加快了脚步。我从未离开过村庄这么远,对于接下来会发生什么,我心中毫无底。我已经走了数小时,感到疲惫和饥饿。我匆忙出发,连食物都没带,更别提武器了。在这个陌生的地方,我手无寸铁,孤身一人,不知所措。我走了这么长时间,以至于完全失去了时间感。我不知道自己究竟走了多远,我只知道我必须继续前进。我必须找到她。我感觉我已经很接近了。她就在附近,而且她正处于危险之中。我必须找到她,并在一切为时已晚之前救助她。

图1.6 文本数据生成式模型合成的短篇故事。该模型描述了一个为每个输出字符串分配概率的概率分布。通过从模型中抽样,可以创造出遵循训练数据(这里是短篇故事)统计特性的字符串,这些字符串之前从未出现过。

图1.7 图像修复。原始图像(左图)中,男孩被金属缆绳遮挡。不需要的区域(中图)被移除,生成式模型在其余像素保持不变的约束下合成了新图像(右图)。改编自 Saharia 等人 (2022a)。

在巴斯大学进行的第一场讲座前,我有些紧张。教室里坐满了看似成百上千的学生,他们的目光让人畏惧。我走上讲台,刚要开口,却发生了一件奇怪的事情。突然,教室里回荡着震耳欲聋的噪声,宛如巨兽的咆哮。声音太大了,我不得不捂住耳朵,什么都听不见了。我看到学生们惊慌失措地四处张望。然而,就像它来得那么突然,噪声又迅速消失,教室恢复了寂静。我愣在那里,试图弄清楚刚才发生了什么。然后我意识到,所有学生都在等着我说话。我本想说些风趣或聪明的话,但脑海一片空白。于是我只好说:“嗯,那真奇怪”,接着开始我的讲座。

图1.8 条件性文本合成。给定一段初始文本(第一段),文本生成式模型可以通过合成“缺失”的剩余部分来合理地继续这段文字。由 GPT3 生成(Brown 等人,2020)。

最先进的生成式模型能够合成极为逼真但与训练实例不同的实例。它们在生成图像(见图 1.5)和文本(见图 1.6)方面特别成功。这些模型还可以在某些输出预先确定的约束下合成数据(称为条件生成)。例如,包括图像修复(见图 1.7)和文本补全(见图 1.8)在内的应用。事实上,现代文本生成模型非常强大,以至于它们看起来几乎具有智能。给定一段文本后接一个问题,模型通常能通过生成文档最可能的补全来“填补”缺失的答案。然而,实际上,模型只了解语言的统计特性,并不真正理解其答案的含义。

1.2.2 潜变量

一些生成式模型(但不是所有)利用了这样一个观点:数据的维度可以比原始观测变量的数量更小。例如,有效且有意义的英语句子的数量远少于随机组合单词形成的字符串数量。同样,真实世界的图像只占通过随机赋予每个像素 RGB 值能创建的图像的一小部分。这是因为图像是由物理过程生成的(见图 1.9)。

图1.9 人脸的变化。人脸大约包含 42 块肌肉,因此可以用大约 42 个数字来描述同一个人在相同光照条件下的图像中的大部分变化。一般而言,图像、音乐和文本的数据集可以用相对较少的潜在变量来描述,尽管通常更难将这些变量与特定的物理机制联系起来。图像来自 Dynamic FACES 数据库(Holland 等人,2019)。

这就引出了一个想法,即我们可以使用较少的潜在变量来描述每个数据实例。在这里,深度学习的作用是描述这些潜变量与数据之间的映射关系。这些潜变量通常被设计为具有简单的概率分布。通过从这个分布中抽样并将结果通过深度学习模型传递,我们可以创造新的样本(见图 1.10)。

图1.10 潜变量。潜变量在许多生成模型中扮演关键角色,这些模型利用深度学习来揭示低维潜变量与观测到的高维数据之间的联系。潜变量按设计拥有简易的概率分布。因此,通过从这些潜变量的简单分布中采样,再利用深度学习模型将采样结果映射到观测数据空间,我们便能创造出新的样本。

这些模型为操纵真实数据提供了新的方法。例如,考虑找出支持两个真实实例的潜变量。我们可以通过在它们的潜在表示之间插值,并将中间位置映射回数据空间,从而在这些实例之间进行插值(见图 1.11)。

图1.11 图像插值。图像插值是一种有趣的应用。在每一行的图像中,左右两侧为真实图像,中间三张则是生成模型创造的插值序列。这些生成模型学习到了所有图像均可通过一组潜在变量来生成的原理。通过确定这两张真实图像的潜变量,对它们的值进行插值,然后用这些中间变量生成新图像,我们能创造出既视觉上合理,又融合了两张原始图像特征的中间图像。上排图片改编自 Sauer 等人 (2022),下排图片改编自 Ramesh 等人 (2022)。

1.2.3 结合监督学习与无监督学习

具有潜变量的生成式模型也可以促进输出具有结构的监督学习模型的发展(见图 1.4)。例如,考虑学习如何预测与描述相对应的图像。我们可以学习文本的潜变量与图像的潜变量之间的关系,而不是直接将文本输入映射到图像上。

这种方法有三个优点。首先,由于输入和输出维度较低,我们可能需要更少的文本/图像对来学习这种映射。其次,我们更有可能生成看起来合理的图像;潜变量的任何合理值都应该产生像是一个可信的示例。第三,如果我们在两组潜变量之间的映射或潜变量到图像的映射中引入随机性,那么我们可以生成多个都与描述相匹配的图像(见图 1.12)。

图1.12 从“时代广场上的滑板泰迪熊”这个标题出发,DALL·E-2(Ramesh 等人,2022)生成了多张图片。

1.3 强化学习

机器学习的最后一个领域是强化学习。这个范畴引入了代理(agent)的概念,代理生活在一个世界中,在每个时间步骤中可以执行特定行动。行动会改变系统的状态,但这种改变不一定是确定性的。执行行动还可能产生奖励,强化学习的目标是让代理学会选择能够平均获得高奖励的行动。

一个复杂点是奖励可能在行动后一段时间才出现,因此把奖励与特定行动关联起来并不直接。这被称为时间性信用分配问题。在学习过程中,代理必须在探索(寻找新的可能性)和利用(使用已知的策略)之间做出平衡;也许代理已经学会了如何获得适度的奖励,它应该继续遵循这个策略(利用现有知识),还是尝试不同的行动以寻找改进的机会(探索新的可能性)?

1.3.1 两个例子

考虑教一个类人机器人如何行走。机器人在特定时间可以执行有限的行动(如移动各种关节),这些行动会改变世界的状态(即它的姿态)。我们可以通过设立障碍赛道上的检查点来奖励机器人。为了到达每个检查点,它必须执行许多行动,但当收到奖励时,很难确定哪些行动对奖励有贡献,哪些是无关紧要的。这就是时间性信用分配问题的一个实例。

第二个例子是学习下棋。同样,代理在任何时刻都有一组有效的行动(棋子移动)。然而,这些行动以非确定性的方式改变系统状态;对于任何行动选择,对手可能以多种不同的方式回应。这里,我们可以根据捕获棋子来设定奖励结构,或者在游戏结束时赢得比赛来获得单一奖励。在后者情况下,时间性信用分配问题非常严重;系统必须学习在众多走法中哪些是成功或失败的关键。

探索与利用的权衡在这两个例子中也很明显。机器人可能已经发现,通过侧躺并用一条腿推动可以前进。这种策略虽然能让机器人移动并获得奖励,但比最优解——站立行走——要慢得多。因此,它面临一个选择,是利用已知的策略(沿地面滑行)还是探索其他可能的行动(可能实现更快的移动)。在下棋例子中也是如此,代理可能学到了一系列合理的开局走法。它应该利用这些知识,还是探索不同的开局序列?

深度学习如何融入强化学习框架可能不那么明显。有几种可能的方法,其中一种是使用深度网络构建从观察到的世界状态到行动的映射。这被称为策略网络。在机器人的例子中,策略网络会学习从传感器测量到关节运动的映射。在下棋的例子中,网络将学习从棋盘的当前状态到走法选择的映射(见图 1.13)。

图1.13 在强化学习中使用策略网络是一种创新。通过深度神经网络,我们可以定义从状态(例如棋盘上的位置)到动作(可能的移动)的映射。这种映射即为所谓的“策略”。

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

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

相关文章

​ ​【Linux】-----工具篇(多模式编辑器vim介绍及配置)

目录 认识常用三种模式 基本操作 Ⅰ、进入/打开vim Ⅱ、模式转换 Ⅲ、退出vim 命令集 Ⅰ、命令模式下 移动光标 删除文字 复制 替换 撤销 批量化注释 批量化去注释 Ⅱ、底行模式下 列出行号 跳转至指定行 查找字符 保存文件 退出vim 查看文件 分屏操作 vim的简…

论文阅读:面向自动驾驶场景的多目标点云检测算法

论文地址:面向自动驾驶场景的多目标点云检测算法 概要 点云在自动驾驶系统中的三维目标检测是关键技术之一。目前主流的基于体素的无锚框检测算法通常采用复杂的二阶段修正模块,虽然在算法性能上有所提升,但往往伴随着较大的延迟。单阶段无锚框点云检测算法简化了检测流程,…

微信小程序:vant-weapp 组件库、css 变量

vant-weapp 组件库 前往 vant-weapp 官网 npm 使用限制:不支持依赖于 Node.js 内置库、浏览器内置对象、C 插件 的包。 安装 vant-weapp # 通过 npm 安装 npm i vant/weapp -S --production# 通过 yarn 安装 yarn add vant/weapp --production# 安装 0.x 版本 npm i…

Mac环境报错 error: symbol(s) not found for architecture x86_64

Mac 环境Qt Creator报错 error: symbol(s) not found for architecture x86_64 错误信息 "symbol(s) not found for architecture x86_64" 通常是在编译或链接过程中出现的问题。这种错误提示通常涉及到符号未找到或者是因为编译器没有找到适当的库文件或函数定义。 …

powe bi界面认识及矩阵表基本操作 - 1

powe bi界面认识及矩阵表操作 1. 界面认识1.1 选择数据源1.2 选择相关表及点击加载1.3 表字段显示位置1.4 表属性按钮位置1.5 界面布局按钮认识 2. 矩阵表基本操作2.1 选择矩阵表2.2 创建矩阵表2.3 设置字体大小2.4 行填充:修改高度2.5 列宽:设置列的宽度…

【Python实战因果推断】55_因果推理概论5

目录 Consistency and Stable Unit Treatment Values Violations Causal Quantities of Interest Consistency and Stable Unit Treatment Values 在上述方程中,隐含着两个基本假设。第一个假设意味着潜在结果与处理是一致的:当时,。换句…

Vue3相比于Vue2进行了哪些更新

1、响应式原理 vue2 vue2中采用 defineProperty 来劫持整个对象,然后进行深度遍历所有属性,给每个属性添加getter和setter,结合发布订阅模式实现响应式。 存在的问题: 检测不到对象属性的添加和删除数组API方法无法监听到需要对…

Shader笔记1:基础概念

有相当一部分来自shader圣经 Base of CG Concepts Tangent, Normal and Binormal N:法线(Normal, N)垂直于表面 T:切线(Tangent, T)与U方向同向 B:副切线(BiTangent, B&#xff09…

ADS 使用教程(十六)Using Sliders for Data Processing

上一篇:ADS 使用教程(十五)Multi-Dimensional Data Processing in ADS 在这一节,我们来谈论一下如何在进行多维数据处理时使用滑块(Sliders)来进行数据处理和分析。通过该方法,我们可以通过拖动…

python-docx 如何将列表中的值提取到段落中的run以及保存为多个文档?

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…

Clion开发STM32——移植FreeModbus

STM32型号 :STM32H743VIT6 FreeModbus版本 :1.6 使用工具:stm32cubeMX,Clion 使用STM32作从机,模式:RTU 网上用keil的比较多,用Clion的比较少,如果你也用Clion,那么希望…

【LLM】-07-提示工程-聊天机器人

目录 1、给定身份 1.1、基础代码 1.2、聊天机器人 2、构建上下文 3、订餐机器人 3.1、窗口可视化 3.2、构建机器人 3.3、创建JSON摘要 利用会话形式,与具有个性化特性(或专门为特定任务或行为设计)的聊天机器人进行深度对话。 在 Ch…

鸿蒙仓颉语言【cryptocj 库】(介绍与SHA、MD5、HMAC摘要算法)

cryptocj 库 介绍 cryptocj 是一个安全的密码库,包括常用的密码算法、常用的密钥生成和签名验证。 该库是对 C 语言的 openSSL 封装的仓颉加密算法 1 提供SHA、MD5、HMAC摘要算法。 前置条件:NA 场景: OHOS, Linux&#xff…

经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章

近日,2024年国家级芜湖经开区汽车零部件生态大会成功举行,经纬恒润受邀出席,与行业各伙伴齐聚经开区,同绘发展蓝图,助力经开区汽车产业高质量发展。会上,经纬恒润与奇瑞汽车签署合作协议,成为奇…

Superset二次开发之筛选器native Filters 水平布局

引言 Apache Superset作为一个功能强大的开源数据探索和可视化平台,提供了丰富的配置选项来定制化用户体验。其中,HORIZONTAL_FILTER_BAR 是一个重要的配置项,专注于优化和改进Superset中的筛选器条布局与交互。 什么是HORIZONTAL_FILTER_B…

免费【2024】springboot stone音乐播放器的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

【数据库】数据库设计规范文件(Word)

方便业务功能实现、业务功能扩展;方便设计开发、增强系统的稳定性和可维护性;保证数据完整性和准确性;提高数据存储效率,在满足业务需求的前提下,使时间开销和空间开销达到优化平衡。资料获取:本文本个人名…

江科大/江协科技 STM32学习笔记P9-11

文章目录 OLED1、OLED硬件main.c EXTI外部中断1、中断系统2、中断执行流程图3、STM32中断4、中断地址的作用5、EXTI6、EXTI基本结构7、AFIO复用IO口8、EXTI框图或门和与门 9、旋转编码器介绍10、硬件电路 OLED 1、OLED硬件 SCL和SDA是I2C的通信引脚,需要接在单片机…

机器学习的运作原理和算法分类,让机器学习更加通俗易懂

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

微信扫码登陆验证在Go系统开发时的应用与实践

微信扫码登录实现 登录流程 总体来说,就是三步: 点击微信登录,跳转到微信页面微信扫码登录,确认登陆微信跳转回来 这里,我们就得,明确两个问题: 跳到微信界面,跳过去的 URL 是什…