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

【深度学习—李宏毅教程笔记】Self-attention

目录

一、Self-attention 的引入

1、多样化的输入形式

2、典型的下游任务下游任务

3、传统“全连接 + 窗口”方法的局限

4、Self‑Attention 的引入

二、Self-attention 的架构

1、Self-attention层的框图表示

2、Self-attention 层的矩阵运算过程

三、Multi-head Self-attention

四、位置编码

五、Self-attention 的应用

1、在自然语言处理(NLP)中的典型应用

2、在语音信号处理中的应用

3、在计算机视觉中的应用

4、Self‑Attention 与卷积神经网络(CNN)的对比

5、Self‑Attention 与循环神经网络(RNN)的对比

6、在图结构数据(GNN)中的应用

7、高效 Transformer 与未来方向

8、总结


一、Self-attention 的引入

1、多样化的输入形式

对于常见的机器学习任务,输入形式是多样的:

  • 单向量(Vector)

    • 最基础的输入形式,例如将一段文本或一帧语音直接映射为实数向量。

  • 向量集合(Set of Vectors)

    • 句子中每个单词、语音信号中的每一帧、图结构中的每个节点,都可看作一个向量,模型的输入即这一组向量。而这种输入形式正是适合 Self-attention 的输入形式。

    • 例如:

      • 文本中单词的 one‑hot 编码或预训练词向量

      • 语音信号按帧提取的 MFCC 或滤波器组特征

      • 社交网络中每个用户节点的属性向量 ​

2、典型的下游任务下游任务

根据输入向量集合,模型的输出形式主要有以下几类:

  1. 逐向量标注(Sequence Labeling)

    • 对每个输入向量分别打标签,常见任务如词性标注(POS Tagging)、命名实体识别(NER)等。

  2. 序列级分类(Sequence Classification)

    • 对整个向量序列赋予一个标签,如情感分析、话者识别等。

  3. 动态标签数预测

    • 模型无需预先固定标签数量,例如聚类任务或机器翻译中的对齐机制。

  4. 序列到序列映射(Seq2Seq)

    • 输入和输出均为向量序列,典型应用为神经机器翻译 ​

3、传统“全连接 + 窗口”方法的局限

  • 全连接层(Fully‑Connected):只能将每个向量独立映射,缺乏上下文信息;

  • 滑动窗口(Window):虽然可引入局部邻域信息,但窗口大小有限,难以捕获远距离依赖;

  • 问题示例:单句“I saw a saw”,对第二个“saw”需要同时考虑前文的“I saw a”与后文的含义,但窗口方法可能覆盖不到全部上下文 ​

4、Self‑Attention 的引入

为了解决上述方法无法建模全局依赖的问题,在此处引入 Self‑Attention 概念:

  1. 核心思想

    • 在给定序列中,每个元素不仅与自身相关,还与序列中所有其他元素进行交互,通过计算相似度权重来聚合全局信息。

  2. 预期效果

    • 既能灵活捕捉长距离依赖,又能保留序列中各元素的相对位置信息(后续可结合位置编码)。

  3. 后续展开

    • 具体计算方式包括 Query/Key/Value 的映射、点积打分、缩放与 Softmax、加权求和,以及多头机制等。

                

二、Self-attention 的架构

1、Self-attention层的框图表示

Self-attention 的架构大体就上面的图片上的样子,有时在应用时可叠多层,如下图:

        ​​​​​​​        ​​​​​​​        

其中的每一个输出不仅仅只与对应的一个输入有关,其余的说有输入都影响到这个输出,比如 b^{1} 不仅仅与 a^{1} 有关,还受 a^{2},a^{3},a^{4} 的影响,如下图:

        ​​​​​​​          

在计算 b^{1} 时,可先建立  a^{2},a^{3},a^{4} 与 a^{1} 的联系,用 \alpha 表示,如下图:

        ​​​​​​​        

每一个输入都有一个自己的 Query、Key、Value,(Value后续用到)。Query、Key、Value都由相应的输入和一个参数矩阵 W^{q}W^{k}W^{v} 相乘得到,对于每一个输入,用的参数矩阵  W^{q}W^{k}W^{v}  都是相同的。

得到了 各个输入之间的关系 \alpha ^{1,1},\alpha ^{1,2},\alpha ^{1,3},\alpha ^{1,4} ,后将他们送到softmax层进行归一化,再与各个输入的 Value 相乘后加一起,就得到了 b^{1},如下图:

        ​​​​​​​        ​​​​​​​        

        ​​​​​​​        ​​​​​​​       

这就是 Self-attention 层从输入到输出的过程。所有的输出都是并行的

2、Self-attention 层的矩阵运算过程

步骤一:

一个 Self-attention 层的参数就只有三个矩阵: W^{q}W^{k}W^{v}  ,它们三个的任务是与输入分别相乘得到每个输入对应的 Query、Key、Value ,具体如下:​​​​​​​

步骤二:

接着由矩阵  k=\begin{bmatrix} k^{1}\\ k^{2}\\ k^{3}\\ k^{4} \end{bmatrix} 和矩阵 q=\begin{bmatrix} q^{1} &q^{2} &q^{3} & q^{4} \end{bmatrix} 相乘得到矩阵 A =\begin{bmatrix} \alpha _{1,1} & \alpha _{2,1} & \alpha _{3,1} & \alpha _{4,1}\\ \alpha _{1,2} & \alpha _{2,2} & \alpha _{3,2} & \alpha _{4,2}\\ \alpha _{1,3} & \alpha _{2,3} & \alpha _{3,3} & \alpha _{4,3}\\ \alpha _{1,4} & \alpha _{2,4} & \alpha _{3,4} & \alpha _{4,4} \end{bmatrix} ,再经过softmax得到 {A}'=\begin{bmatrix} {\alpha}' _{1,1} & {\alpha}'_{2,1} & {\alpha}' _{3,1} & {\alpha}' _{4,1}\\ {\alpha}' _{1,2} & {\alpha}' _{2,2} & {\alpha}' _{3,2} & {\alpha}' _{4,2}\\ {\alpha}'_{1,3} & {\alpha}'_{2,3} &{\alpha}' _{3,3} &{\alpha}' _{4,3}\\ {\alpha}' _{1,4} & {\alpha}'_{2,4} & {\alpha}'_{3,4} & {\alpha}'_{4,4} \end{bmatrix}  

步骤三:

然后再由矩阵 V=\begin{bmatrix} v^{1} &v^{2} & v^{3} & v^{4} \end{bmatrix} 和矩阵 {A}' 相乘得到 输出矩阵 O=\begin{bmatrix} b^{1} &b^{2} &b^{3} & b^{4} \end{bmatrix}



可更清晰得表示为

步骤一:

                 ​​​​​​​        

        ​​​​​​​      

步骤二:

      

步骤三:

        ​​​​​​​        



即全流程为:

三、Multi-head Self-attention

再普通 Self-attention 的基础上 添加多个注意力矩阵的运算,通过多头注意力找到输入之间的多种不同的相关性,即:

        ​​​​​​​        ​​​​​​​        

        ​​​​​​​        ​​​​​​​        

得到 b^{1}=\begin{bmatrix} b^{1,1} &b^{2,1} &b^{3,1} & b^{4,1} \end{bmatrix} 和 b^{2}=\begin{bmatrix} b^{1,2} &b^{2,2} & b^{3,2} & b^{4,2} \end{bmatrix} ,再将它两个乘上一个矩阵变成一个,即  b=W^{O}\cdot \begin{bmatrix} b^{1}\\ b^{2} \end{bmatrix}=W^{O}\cdot \begin{bmatrix} b^{1,1} &b^{2,1} &b^{3,1} & b^{4,1} \\ b^{1,2} &b^{2,2} & b^{3,2} & b^{4,2} \end{bmatrix}

四、位置编码

        对于上面的 Self-attention ,其中忽略了输入之间的位置信息,但这并不能说位置信息就丢失了,在学习过程中,位置信息会被学到,但如果提前加入位置信息,那么对于位置信息,模型就能更轻易的得到,相当于帮助了模型对位置信息的学习,也可以说对位置信息提前加入了先验,效果更好。所以说就有了位置编码。

位置编码的方式:

给输入 a^{i} 加上一个向量 e^{i} ,即:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  

向量 e^{i} 长什么样子呢?最早的论文中的向量 e^{i} 如下图:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        每个列都代表一个向量,从左到右依次是 e^{1}e^{2}e^{3}\cdot \cdot \cdot ,黑色框里的是 e^{4} .

        在论文 《All attention is you need》中它的位置向量是通过一个固定的规则所产生的,这个规则是一个很神奇的 sin cos 的函数所产生的。

        更多的位置编码:

  

        第一个图的位置向量是横着看的,是用 sin 函数产生的,第二个图是学出来的,即位置向量通过学习得到的,

五、Self-attention 的应用

1、在自然语言处理(NLP)中的典型应用

  • Transformer 与 BERT

    • Transformer 架构首次将全局自注意力引入序列建模,实现了并行化训练和长距离依赖捕捉。

    • BERT 在预训练阶段使用双向自注意力,有效地学习上下文表示,推动了阅读理解、文本分类等任务性能大幅提升。 ​


2、在语音信号处理中的应用

  • 长序列带来的挑战:语音信号通常以 10ms 为帧长,序列长度极大,直接计算全局注意力矩阵代价高。

  • 截断自注意力(Truncated Self‑Attention):仅对固定窗口或范围内的帧计算注意力,减少计算复杂度;

  • 局部范围内的注意力:结合局部上下文,有助于捕捉短时特征,同时兼顾部分全局信息。 ​


3、在计算机视觉中的应用

  • Self‑Attention GAN(SAGAN)

    • 在生成对抗网络中加入自注意力模块,增强远距离像素间的信息交互,提高生成图像的细节一致性。

  • Detection Transformer(DETR)

    • 将检测任务形式化为集合预测,引入全局自注意力取代传统的区域建议或锚框策略,实现端到端目标检测。 ​


4、Self‑Attention 与卷积神经网络(CNN)的对比

  • 感受野

    • CNN:固定且局部的感受野,由卷积核大小决定。

    • Self‑Attention:学习到的注意力权重即可视作可调节的“感受野”,可跨越全局。

  • 表达能力

    • Self‑Attention 是带可学习权重的复杂版本,能够灵活建模任意位置间的关系;CNN 是其简化形式。


5、Self‑Attention 与循环神经网络(RNN)的对比

  • 并行性

    • RNN 串行处理,难以并行;Self‑Attention 并行度高,训练速度快。

  • 依赖建模

    • Self‑Attention 天然捕捉长距离依赖;RNN 随序列长度增长易产生梯度消失。

  • 记忆机制

    • 自注意力通过键值对存储中间信息,类似可扩展的外部记忆。 ​


6、在图结构数据(GNN)中的应用

  • 图注意力网络(GAT)

    • 对图中的每条边应用自注意力,仅在相邻节点间计算注意力分数,实现节点特征的加权聚合。

  • 优势:更灵活地建模异质图结构中的节点关系,提升节点分类、链路预测等任务性能。 ​


7、高效 Transformer 与未来方向

  • Efficient Transformers(《Efficient Transformers: A Survey》)

    • 梳理了各种降低注意力复杂度的方法,如稀疏注意力、分块注意力、低秩分解等。

  • Long Range Arena 基准

    • 提供了对比不同高效 Transformer 在多种长序列任务上的表现,为后续模型设计提供评测标准。 ​


8、总结

        Self‑Attention 作为一种通用的关系建模机制,已广泛渗透到 NLP、语音、视觉、图神经网络等领域。其核心优势在于并行化训练、长距离依赖捕捉与可学习的全局感受野;同时,面对序列长度过大时,也催生了各类高效变体(如截断、稀疏、分层注意力)来平衡性能与计算资源。

相关文章:

【深度学习—李宏毅教程笔记】Self-attention

目录 一、Self-attention 的引入 1、多样化的输入形式 2、典型的下游任务下游任务 3、传统“全连接 窗口”方法的局限 4、Self‑Attention 的引入 二、Self-attention 的架构 1、Self-attention层的框图表示 2、Self-attention 层的矩阵运算过程 三、Multi-head Self…...

PHP腾讯云人脸核身获取Access Token

参考腾讯云官方文档: 人脸核身 获取 Access Token_腾讯云 public function getAccessToken(){$data [appId > , //WBappid,https://cloud.tencent.com/document/product/1007/49634secret > ,grant_type > client_credential, //授权类型version > 1…...

pytorch基本操作2

torch.clamp 主要用于对张量中的元素进行截断(clamping),将其限制在一个指定的区间范围内。 函数定义 torch.clamp(input, minNone, maxNone) → Tensor 参数说明 input 类型:Tensor 需要进行截断操作的输入张…...

Linux服务器配置Anaconda环境、Pytorch库(图文并茂的教程)

引言:为了方便后续新进组的 师弟/师妹 使用课题组的服务器,特此编文(ps:我导从教至今四年,还未招师妹) ✅ NLP 研 2 选手的学习笔记 笔者简介:Wang Linyong,NPU,2023级&a…...

idea 许可证过期

今天打开IDEA写代码突然提示:Your idea evaluation has expired. Your session will be limited to 30 minutes 评估已过期,您的会话将限制为 30 分钟。也就是说可以使用,但30min就会自动关闭 1 下载 ide-eval-resetter-2.1.6.zip https…...

Git常用命令分类汇总

Git常用命令分类汇总 一、基础操作 初始化仓库git init添加文件到暂存区git add file_name # 添加单个文件 git add . # 添加所有修改提交更改git commit -m "提交描述"查看仓库状态git status二、分支管理 创建/切换分支git branch branch_name …...

归并排序:数据排序的高效之道

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

分布式训练(记录)

为什么要分布式训练? 单机训练有物理上限: 显存不够(大模型根本放不下) 单机计算慢(数据量一多就耗时太长) 多卡并行性不高 分布式训练的常见方式 Data Parallel(数据并行) 每个G…...

vue3中使用拖拽组件vuedragable@next

vue3中使用拖拽组件vuedragablenext 官网传送门 下载 npm install vuedraggablenext基本使用 <script setup> import draggable from vuedraggable import { ref } from vue const list ref([{ id:1,name:第一个 },{ id:2,name:第二个 },{ id:3,name:第三个 }, ]) <…...

Oracle、MySQL、PostgreSQL三大数据库对比分析

Oracle、MySQL、PostgreSQL 三大数据库的对比分析&#xff0c;结合 Java SpringBoot 项目开发 的实际场景&#xff0c;重点说明分库分表、主从复制的实现难度及案例。 一、数据库核心对比 1. 核心区别与适用场景 维度OracleMySQLPostgreSQL定位企业级商业数据库轻量级开源数据…...

java八股之并发编程

1.java线程和操作系统线程之间的区别&#xff1f; 现在java线程本质上是操作系统线程&#xff0c;java中采用的是一对一的线程模型&#xff08;一个用户线程对应一个内核进程&#xff09; 2.什么是进程和线程&#xff1f; 1.进程是操作系统一次执行&#xff0c;资源分配和调度的…...

Qt 入门 5 之其他窗口部件

Qt 入门 5 之其他窗口部件 本文介绍的窗口部件直接或间接继承自 QWidget 类详细介绍其他部件的功能与使用方法 1. QFrame 类 QFrame类是带有边框的部件的基类。它的子类包括最常用的标签部件QLabel另外还有 QLCDNumber、QSplitter,QStackedWidget,QToolBox 和 QAbstractScrol…...

Linux系统之----冯诺依曼结构

1.简要描述 冯诺依曼体系结构是现代计算机的基本设计思想&#xff0c;其核心理念是将计算机的硬件和软件统一为一个整体&#xff0c;通过存储程序的方式实现计算。冯诺依曼体系结构的核心思想是通过存储程序实现自动计算&#xff0c;其五大部件协同工作&#xff0c;奠定了现代…...

C++11新特性

目录 引入 C11新特性 统一的初始化列表 一切皆可{}初始化 std::initializer_list 统一的声明 auto decltype nullptr 范围for STL新增容器 STL新增容器接口 左值引用和右值引用 左值和右值 左值引用和右值引用 右值引用的优势(移动语义) 右值引用的使用场景 …...

492Q 型气缸盖双端面铣削组合铣床总体设计

一、引言 492Q 型气缸盖是发动机的重要组成部分&#xff0c;其双端面的加工精度对发动机的性能和可靠性有着重要影响。设计一款适用于 492Q 型气缸盖双端面铣削的组合铣床&#xff0c;能够提高加工效率和质量&#xff0c;满足发动机生产的需求。 二、总体设计要求 加工精度&…...

《软件设计师》复习笔记(4.2)——关系代数、函数依赖、范式

目录 一、关系代数 基本运算 笛卡尔积&#xff08;&#xff09; 投影&#xff08;π&#xff09; 选择&#xff08;σ&#xff09; 自然连接&#xff08;⋈&#xff09; 真题示例&#xff1a; 二、函数依赖 基本概念 Armstrong公理系统 键与约束 三、范式&#xff…...

IO流(二)

一、字符流 使用字节流可以读取文件中的字节数据。但是如果文件中有中文使用字节流来读取&#xff0c;就有可能读到半个汉字的情况&#xff0c;这样会导致乱码。虽然使用读取全部字节的方法不会出现乱码&#xff0c;但是如果文件过大又不太合适。 所以Java专门为我们提供了另…...

#Linux动态大小裁剪以及包大小变大排查思路

1 动态库裁剪 库分为动态库和静态库&#xff0c;动态库是在程序运行时才加载&#xff0c;静态库是在编译时就加载到程序中。动态库的大小通常比静态库小&#xff0c;因为动态库只包含了程序需要的函数和数据&#xff0c;而静态库则包含了所有的函数和数据。静态库可以理解为引入…...

天梯赛数据结构合集

1.集合操作&#xff1a;PTA | 程序设计类实验辅助教学平台 主要是注意set的取交集操作&#xff0c;AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int n,m,k; set<int> a[60]; int main(){cin>>n;for(int i1;i<n;i){cin>>m;for…...

pdfjs库使用记录1

import React, { useEffect, useState, useRef } from react; import * as pdfjsLib from pdfjs-dist; // 设置 worker 路径 pdfjsLib.GlobalWorkerOptions.workerSrc /pdf.worker.min.js; const PDFViewer ({ url }) > { const [pdf, setPdf] useState(null); const […...

LIMS引领综合质检中心数字化变革,赋能质量强国战略

在质量强国战略的深入推进下&#xff0c;我国综合质检机构迎来了前所未有的发展机遇&#xff0c;同时也面临着诸多严峻挑战。随着检测领域从传统的食品药品监督向环境监测、新材料检测等新兴领域不断拓展&#xff0c;跨领域协同管理的复杂度呈指数级增长。作为提升产品质量的关…...

MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复20250418

MySQLRedis实战教程&#xff1a;从Docker安装部署到自动化备份与数据恢复 一、前言 在企业应用中&#xff0c;对MySQL和Redis运维的要求越来越高&#xff1a; 不能仅是启动就算部署运行稳定、隔离、访问控制、备份恢复、安全可靠&#xff0c;才是 企业级的基本功能 本文将手…...

嵌入式音视频开发指南:从MPP框架到QT实战全解析

嵌入式音视频开发指南:从MPP框架到QT实战全解析 一、音视频技术全景概述 1.1 技术演进里程碑 2003-2010年:标清时代(H.264/AVC + RTMP)2011-2018年:高清时代(H.265/HEVC + WebRTC)2019-至今:智能时代(AV1 + AI编解码 + 低延迟传输)1.2 现代音视频技术栈 #mermaid-s…...

如何使用Python进行自动化的系统管理?

Python已经成为系统管理员最流行的编程语言之一&#xff0c;因为它简单、灵活&#xff0c;并且广泛支持各种系统管理任务。无论您是自动执行重复性任务&#xff0c;管理文件和目录&#xff0c;还是处理用户权限&#xff0c;Python都提供了一组强大的工具来简化您的工作流程。 …...

拆机装机,通电主板亮灯风扇不转无法开机解决办法

电源开机线 重启线 usb耳机模块 灯线 看来电源没问题 参考https://zhidao.baidu.com/question/83939532/answer/2321171868.html 买了个新主板过几天到看看会不会好...

IntelliSense 已完成初始化,但在尝试加载文档时出错

系列文章目录 文章目录 系列文章目录前言一、原因二、使用步骤 前言 IntelliSense 已完成初始化&#xff0c;但在尝试加载文档时出错 File path: E:\QtExercise\DigitalPlatform\DigitalPlatform\main\propertyWin.ui Frame GUID:96fe523d-6182-49f5-8992-3bea5f7e6ff6 Frame …...

SuperMap iClient3D for WebGL 如何加载WMTS服务

在 SuperMap iClient3D for WebGL 中加载WMTS服务时&#xff0c;参数配置很关键&#xff01;下面我们详细介绍如何正确填写参数&#xff0c;确保影像服务完美加载。 一、数据制作 对于上述视频中的地图制作&#xff0c;此处不做讲述&#xff0c;如有需要可访问&#xff1a;Onl…...

[密码学实战]基于Python的国密算法与通用密码学工具箱

引言 在当今数字化浪潮中&#xff0c;信息安全已成为个人隐私保护与商业机密守护的核心议题。作为一位在密码学领域深耕多年的技术实践者&#xff0c;我深谙密码学工具在构建数字安全防线中的关键作用。正是基于这份认知与责任&#xff0c;我倾力打造了一款全方位、高性能的密…...

[密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案

[密码学实战]详解gmssl库与第三方工具兼容性问题及解决方案 引言 国密算法&#xff08;SM2/SM3/SM4&#xff09;在金融、政务等领域广泛应用&#xff0c;但开发者在集成gmssl库实现SM2签名时&#xff0c;常遇到与第三方工具&#xff08;如OpenSSL、国密网关&#xff09;验证不…...

LIB-ZC, 一个跨平台(Linux)平台通用C/C++扩展库, stream 流操作

LIB-ZC, 一个跨平台(Linux)平台通用C/C扩展库, stream 流操作 lib-zc 封装了流操作命名空间 zcc基础类 stream(基类), iostream(io流封装) class stream 介绍 连接相关 // 都是虚函数, 为 iostream 等做准备virtual inline bool connect(const char *destination) { return …...

从零开始解剖Spring Boot启动流程:一个Java小白的奇幻冒险之旅

大家好呀&#xff01;今天我们要一起探索一个神奇的话题——Spring Boot的启动流程。我知道很多小伙伴一听到"启动流程"四个字就开始头疼&#xff0c;别担心&#xff01;我会用最通俗易懂的方式&#xff0c;带你从main()方法开始&#xff0c;一步步揭开Spring Boot的…...

概率多假设跟踪(PMHT):多目标跟踪中的概率软关联与高效跟踪算法解析

一、PMHT 的起源与核心定位 &#xff08;一&#xff09;背景 在多目标跟踪中&#xff0c;传统算法面临以下瓶颈&#xff1a; JPDA&#xff1a;单帧局部最优关联&#xff0c;无法处理跨帧长时间断联&#xff0c;且假设目标数固定&#xff08;如雷达跟踪中预设目标数范围&…...

4.信号和槽|存在意义|信号和槽的连接方式|信号和槽断开|lambda表达式|信号和槽优缺点(C++)

信号和槽存在意义 所谓的信号槽&#xff0c;终究要解决的问题&#xff0c;就是响应用户的操作 信号槽&#xff0c;其实在GUI开发的各种框架中&#xff0c;是一个比较有特色的存在 其他的GUI开发框架&#xff0c;搞的方式都要更简洁一些&#xff5e;~ 网页开发 (js dom api) 网…...

电脑 BIOS 操作指南(Computer BIOS Operation Guide)

电脑 BIOS 操作指南 电脑的BIOS界面&#xff08;应为“BIOS”&#xff09;是一个固件界面&#xff0c;允许用户配置电脑的硬件设置。 进入BIOS后&#xff0c;你可以进行多种设置&#xff0c;具体包括&#xff1a; 1.启动配置 启动顺序&#xff1a;设置从哪个设备启动&#x…...

Scrapeless Scraping Browser: A high-concurrency automation solution for AI

介绍&#xff1a;升级无缝抓取浏览器的并发能力 作为 Scrapeless 的开发者和创始团队&#xff0c;我们对人工智能自动化的未来充满真诚的热情。我们的使命是创建一个真正为 AI 设计的自动化浏览器。在过去的几年中&#xff0c;从 Browserless.io 到众多云服务供应商推出的“浏…...

Java项目—— 拼图小游戏(进阶版)

项目需求 在拼图小游戏基础版的基础上&#xff0c;完成下列要求&#xff1a; 一、实现更换拼图图片功能 1&#xff0c;给美女&#xff0c;动物&#xff0c;运动菜单按钮添加单击事件&#xff08;动作监听&#xff09; 2&#xff0c;当我们点击了美女之后&#xff0c;就会从13…...

解析:深度优先搜索、广度优先搜索和回溯搜索

一、深度优先搜索&#xff08;DFS&#xff09; 1. 原理 思想&#xff1a;从起始节点出发&#xff0c;顺着一条路径不断深入&#xff0c;直到到达目标或无路可走&#xff0c;然后回溯到最近的分支点&#xff0c;继续探索其他分支。 应用场景&#xff1a;路径查找、连通性检测、…...

探索大语言模型(LLM):循环神经网络的深度解析与实战(RNN、LSTM 与 GRU)

一、循环神经网络&#xff08;RNN&#xff09; 1.1 基本原理 循环神经网络之所以得名&#xff0c;是因为它在处理序列数据时&#xff0c;隐藏层的节点之间存在循环连接。这意味着网络能够记住之前时间步的信息&#xff0c;并利用这些信息来处理当前的输入。 想象一下&#xf…...

从零开始开发 MCP Server

作者&#xff1a;张星宇 在大型语言模型&#xff08;LLM&#xff09;生态快速演进的今天&#xff0c;Model Context Protocol&#xff08;MCP&#xff09;作为连接 AI 能力与真实世界的标准化协议&#xff0c;正逐步成为智能体开发的事实标准。该协议通过定义 Resources&#…...

Oracle日志系统之重做日志和归档日志

Oracle日志系统之重做日志和归档日志 重做日志归档日志 本文讨论Oracle日志系统中对数据恢复非常重要的两个日志&#xff1a;重做日志和归档日志。 重做日志 重做日志&#xff0c;英文名Redo Log&#xff0c;顾名思义&#xff0c;是用来数据重做的&#xff0c;主要使用场景是事…...

嵌入式开发--STM32G4系列硬件CRC支持MODBUS和CRC32

需求 在项目中&#xff0c;需要用到MODBUS CRC16校验&#xff0c;也要用到CRC32的校验&#xff0c;出于效率的考虑&#xff0c;准备用硬件CRC。 CRC 16的参数模型有很多种&#xff0c;我这里用的是MODBUS&#xff0c;对于不同的参数模型&#xff0c;会有不同的参数设置和初值&a…...

基于尚硅谷FreeRTOS视频笔记——4—多任务处理

目录 多任务处理 任务调度 任务的调度策略 优先级不同 优先级相同 多任务处理 通俗来讲就是 能够在同一时间 同时 进行多个任务的处理&#xff0c;这就时多任务处理。 但是&#xff0c;单核处理器一次只能处理一个任务&#xff0c;就是说在while中&#xff0c;任务们只能…...

中小型及初创企业如何实现数字化转型?

在当今动态的商业环境中&#xff0c;财务团队开始肩负起推动企业数字化转型的重任&#xff0c;即从传统的财务规划系统稳步迈向基于商业智能平台和以创新技术为驱动的解决方案领域。这些举措有望提高运营和分析效率&#xff0c;同时依托数据驱动的决策机制&#xff0c;帮助企业…...

java输出、输入语句

先创建一个用于测试的java 编写程序 #java.util使java标准库的一个包&#xff0c;这里拉取Scanner类 import java.util.Scanner;public class VariableTest {public static void main(String[] args) {#创建一个 Scanner 对象Scanner scanner new Scanner(System.in);System.…...

Python基础知识语法归纳总结(数据类型-1)

Python基础知识&语法归纳总结&#xff08;数据类型&#xff09; 一、Python基本数据类型 尤其注意&#xff0c;Python中的变量不需要特定的去声明&#xff0c;每个变量在使用前都必须对其进行赋值&#xff0c;它没有类型&#xff0c;我们所说的“类型”是变量所指的内存中对…...

Spring数据访问全解析:ORM整合与JDBC高效实践

目录 一、Spring ORM集成深度剖析 &#x1f31f; ORM模块架构设计 核心集成特性&#xff1a; 整合MyBatis示例配置&#xff1a; 二、Spring JDBC高效实践指南 &#x1f31f; 传统JDBC vs Spring JDBC对比 &#x1f31f; JdbcTemplate核心操作示例 批量操作优化&#xf…...

哪种电脑更稳定?Mac?Windows?还是云电脑? 实测解密

随着科技的发展进步&#xff0c;电脑已成为当下各类群体的必备产品之一&#xff0c;它的妙用有很多&#xff0c;无论是学生党、打工人还是已经退休的人群或都离不开它的存在。然而&#xff0c;电脑虽好却也差异很大、不同品牌、不同系统、不同配置、不同价位的统统都会有区别。…...

【AI模型学习】关于写论文——论文的审美

文章目录 一、“补丁法”&#xff08;Patching&#xff09;1.1 介绍1.2 方法论1.3 实例 二、判断工作的价值2.1 介绍2.2 详细思路2.3 科研性vs工程性 三、novelty以及误区3.1 介绍3.2 举例 看了李沐老师的读论文系列后&#xff0c;总结三个老师提到的有关课题研究和论文写作的三…...

【面经】杭州产链数字科技一面

1.介绍一下自己 面试官您好&#xff01;我叫***&#xff0c;目前是就读于****计算机科学与技术专业的一名学生。我平时在学校也自学了编程相关的知识&#xff0c;比如Java基础、Springboot、SpringCloud&#xff0c;关系型数据库Mysql&#xff0c;非关系型数据库Redis&#xff…...

微信小程序调用yolo目标检测模型

目录 后端 前端微信小程序 完整代码 后端 利用Flask&#xff0c;调用目标检测模型&#xff0c;后端代码如下。 # flask_yolo.py from flask import Flask, request, jsonify from ultralytics import YOLO from PIL import Imageapp Flask(__name__) model_path best.p…...