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

【大模型基础_毛玉仁】5.4 定位编辑法:ROME


目录

    • 5.4 定位编辑法:ROME
      • 5.4.1 知识存储位置
        • 1)因果跟踪实验
        • 2)阻断实验
      • 5.4.2 知识存储机制
      • 5.4.3 精准知识编辑
        • 1)确定键向量
        • 2)优化值向量
        • 3)插入知识


5.4 定位编辑法:ROME

定位编辑:

  • 首先定位知识存储在神经网络中的哪些参数中,

  • 然后再针对这些定位到的参数进行精确的编辑

ROME(Rank-One Model Editing)是其中的代表性方法。

.

5.4.1 知识存储位置

通过对知识进行定位,可以揭示模型内部的运作机制,这是理解和编辑模型的关键步骤。

ROME 通过因果跟踪实验阻断实验发现知识存储于模型中间层的全连接前馈层

.

1)因果跟踪实验

ROME通过因果跟踪实验探究模型中不同结构与知识在推理过程中的相关性。实验包含三个步骤:

  • 正常推理:保存模型未受干扰时的内部状态,用于后续恢复。

  • 干扰推理:干扰模型的所有内部状态,作为基准线。

  • 恢复推理:逐步恢复内部状态,对比恢复前后的输出差异,评估每个模块与知识回忆的相关性。

最终目标是确定知识在模型中的具体位置。

实验中,每个知识被表示为知 识元组 t = (s, r, o),其中 s 为 主体, r 为 关系,o 为客体。输入问题为 q = (s, r),q^(i) 表示 q 的第 i 个 Token。我们期望模型在处理问题 q 时能 够输出对应的客体 o 作为答案。具体地,因果跟踪实验的步骤如下:

  • 正常推理:输入问题 q=(s,r),让其预测出 o。此过程,保存模型内部所有模块的正常输出。

  • 干扰推理:向 s 的嵌入层添加噪声,破坏输入向量,形成干扰状态。

  • 恢复推理:在干扰状态下,逐个恢复输入问题中每个 Token q^(i) 的输出向量至“干净”状态,并记录恢复前后模型对答案预测概率的增量(称为模块的因果效应),用于评估各模块对知识回忆的贡献。

以问题“斑马的肤色是”为例,其因果跟踪过程如下:

图 5.12: 正常推理
在这里插入图片描述

图 5.13: 干扰推理
在这里插入图片描述

图 5.14: 恢复推理
在这里插入图片描述

ROME在1000个知识陈述上对三种模块进行因果跟踪实验,发现:

  • 中间层Transformer在处理主体s的最后一个Token s⁻¹时,因果效应显著。

  • 末尾层Transformer在处理输入问题q的最后一个Token q⁻¹时,因果效应也很强,但这在意料之中。

  • 中间层Transformer在处理s⁻¹时的因果效应主要来自全连接前馈层。

  • 注意力层主要对末尾层Transformer处理q⁻¹产生贡献。

基于这些发现,ROME认为模型中间层的全连接前馈层可能是模型中存储知识的关键位置

.

2)阻断实验

为区分全连接前馈层和注意力层在 s^(−1) 处的因果效应中所起到的作用,并且验证全连接前馈层的主导性,ROME 对两种模型结构进行了阻断实验。

阻断实验原理

在恢复某一层Transformer处理s^(-1)的输出后,将后续的全连接前馈层(或注意力层)冻结为干扰状态,即隔离其计算,观察模型性能下降程度,从而明确各层的关键作用。

图 5.15: 阻断实验
在这里插入图片描述

实验分析

比较阻断前后的因果效应,ROME 发现:

  • 如果没后续全连接前馈层的计算,中间层在处理 s^(−1) 时就会失去因果效应,而末尾层的因果效应几乎不受全连接前馈层缺失的影响。

  • 而在阻断注意力层时,模型各层处理 s^(−1) 时的因果效应只有较小的下降

.

基于上述,ROME 认为在大语言模型中:

  • 知识存储于模型的中间层,其关键参数位于全连接前馈层

  • 而且特定中间层的全连接前馈层在处理主体的末尾 Token 时发生作用。

.

5.4.2 知识存储机制

基于在此之前研究成果,ROME 结合知识定位实验中的结论,推测知识以键值映射的形式等价地存储在任何一个中间层的全连接前馈层中,并对知识存储机制做出假设:

  • 首先,起始的 Transformer 层中的注意力层收集主体 s 的信息,将其汇入至主体的最后一个 Token 的向量表示中。

  • 接着,位于中间层的全连接前馈层对这个编码主体的向量表示进行查询,将查询到的相关信息融入残差流(Residual Stream)中。

  • 最后,末尾的注意力层捕获并整理隐藏状态中的信息,以生成最终的输出。

.

5.4.3 精准知识编辑

与 T-Patcher 相似,ROME 同样将全连接前馈层视为键值存储体。不同的是:

  • T-patcher 将上投影矩阵的参数向量看作键向量,将下投影矩阵的参数向量看作值向量,

  • 而 ROME 则是将下投影矩阵的输入向量看作键向量,将其输出向量看作值向量。

具体地,ROME 认为上投影矩阵 W f c W_{fc} Wfc 和激活函数 σ 能够计算出键向量 k∗,而下投影矩阵 W p r o j W_{proj} Wproj 会与键向量运算并输出值向量 v∗,类似信息的查询。

为了实现模型编辑,ROME 通过因果跟踪实验定位编辑位置,然后确定键向量,优化值向量,并通过插入新的键值对完成知识更新。其核心步骤包括:1. 确定键向量;2. 优化值向量;3. 插入知识

图 5.16: ROME 模型编辑方法
在这里插入图片描述

.

1)确定键向量

首先,需要确定 s (−1) 在被编辑的全连接前馈层中的向量表示 k*。

键向量 k* **是通过将 s 输入模型并读取其在全连接前馈层激活函数后的向量表示来确定的。

为了提高泛化性,会在 s 前拼接随机的不同前缀文本,多次推理后计算平均向量作为 k*。

键向量的计算公式如下:
k ∗ = 1 N ∑ j = 1 N k ( x j + s ) k^* = \frac{1}{N} \sum_{j=1}^N k(x_j + s) k=N1j=1Nk(xj+s)
其中:

  • N 为样本数量,

  • j 为前缀文本索引,

  • x_j 为随机前缀文本,

  • k(x_j + s) 代表在拼接前缀文本 x_j 时,s 的末尾 Token 在被编辑的全连接前馈层中的激活函数输出,即下投影矩阵 W p r o j W_{proj} Wproj 的输入。

.

2)优化值向量

然后,需要确定一个值向量 v∗,作为下投影矩阵 W p r o j W_{proj} Wproj 与 k∗ 运算后的期望结果。ROME 通过优化全连接前馈层的输出向量获得 v∗。

训练过程中,ROME 通过设计损失函数 L(v) = L1(v) + L2(v) 以确保编辑的准确性和局部性,如图 5.18。其中 v 是优化变量,用于替换全连接前馈层的输出。

图 5.18: 优化值向量

在这里插入图片描述

损失函数 L ( v ) \mathcal{L}(v) L(v) 的公式如下:
L ( v ) = L 1 ( v ) + L 2 ( v ) \mathcal{L}(v) = \mathcal{L}_1(v) + \mathcal{L}_2(v) L(v)=L1(v)+L2(v)
L 1 ( v ) = 1 N ∑ j = 1 N − log ⁡ P M ′ ( o ∣ x j + p ) \mathcal{L}_1(v) = \frac{1}{N} \sum_{j=1}^N -\log \mathbb{P}_{M'}(o \mid x_j + p) L1(v)=N1j=1NlogPM(oxj+p)
L 2 ( v ) = D K L ( P M ′ ( x ∣ p ′ ) ∣ ∣ P M ( x ∣ p ′ ) ) \mathcal{L}_2(v) = D_{KL}(\mathbb{P}_{M'}(x \mid p') ||\mathbb{P}_M(x \mid p')) L2(v)=DKL(PM(xp)∣∣PM(xp))

其中:

  • M 为原始模型;

  • M’ 为优化 v 时的模型;

  • o 为客体,即目标答案;

  • p 为所编辑的目标问题 prompt;

  • D K L D_{KL} DKL 为 KL 散度;

  • p’ 是有关 s 的含义的 prompt。

图 5.19: 值向量损失函数
在这里插入图片描述

如图 5.19, 在 L(v) 中:

  • 为了确保准确性,L1(v) 旨在最大化 o 的概率,通过优化 v 使网络对所编辑的问题 prompt p 做出正确的预测,与计算 k∗ 时相同,也会在 p 之前拼接不同前缀文本;

  • 为了确保局部性,L2(v) 在 p′ =“{s} 是”这种 prompt 下,最小化 M′ 与 M 输出的 KL 散度,以避免模型对 s 本身的理解发生偏移, 从而确保局部性。

.

3)插入知识

确定了知识在编辑位置的向量表示 k∗ 和 v∗ 之后,ROME 的目标是调整全连接前馈层中的下投影矩阵 W p r o j W_{proj} Wproj,使得 W p r o j k ∗ = v ∗ W_{proj} k^∗ = v^∗ Wprojk=v,从而将新知识插入到全连接前馈层中。

然而,在插入新知识的同时,需要尽量避免影响 W p r o j W_{proj} Wproj 中的原有信息。

过程可抽象为一个带约束的最小二乘问题,其形式如下:
确保最小影响: min ⁡ ∥ W ^ K − V ∥ 确保最小影响:\quad \min \| \hat{W} K - V \| 确保最小影响:minW^KV
满足 W p r o j k ∗ = v ∗ 关系: s.t. W ^ k ∗ = v ∗ 满足W_{proj} k^∗ = v^∗关系:\quad \text{s.t.} \quad \hat{W} k^* = v^* 满足Wprojk=v关系:s.t.W^k=v
该问题可推导出闭式解为:
W ^ = W + Λ ( C − 1 k ∗ ) T \hat{W} = W + \Lambda (C^{-1} k^*)^T W^=W+Λ(C1k)T
其中:

  • Λ = v ∗ − W k ∗ ( C − 1 k ∗ ) T k ∗ \Lambda = \frac{v^* - W k^*}{(C^{-1} k^*)^T k^*} Λ=(C1k)TkvWk

  • W 为原始的权重矩阵

  • W ^ \hat{W} W^ 为更新后的权重矩阵

  • C = K K T C = K K^T C=KKT 是一个预先计算的常数,基于维基百科中的大量文本样本 k 的去中心化协方差矩阵进行估计

利用这一简代数方法,ROME 能直接插入代表知识元组的键值对 (k*, v*),实现对模型知识的精确编辑。

.


其他参考:【大模型基础_毛玉仁】系列文章


声明:资源可能存在第三方来源,若有侵权请联系删除!

相关文章:

【大模型基础_毛玉仁】5.4 定位编辑法:ROME

目录 5.4 定位编辑法:ROME5.4.1 知识存储位置1)因果跟踪实验2)阻断实验 5.4.2 知识存储机制5.4.3 精准知识编辑1)确定键向量2)优化值向量3)插入知识 5.4 定位编辑法:ROME 定位编辑:…...

Using SAP an introduction for beginners and business users

Using SAP an introduction for beginners and business users...

Android学习总结之RecyclerView补充篇

在 Android 开发中,列表数据更新的性能一直是关键痛点。传统的 notifyDataSetChanged() 会触发全量刷新,导致不必要的界面重绘。而 DiffUtil 作为 Android 提供的高效差异计算工具,能精准识别数据变化,实现局部更新,成…...

mapbox基础,使用geojson加载cluster聚合图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️circle点图层样式二、🍀使用geojson加…...

函数:static和extern

0.前言 在正式开始之前先说作用域和生命周期 作用域: 作用域有分为局部变量和全局变量 局部变量:一个变量仅在其中一段代码内起作用 全局变量:所有的代码都可以使用这个变量 生命周期: 生命周期是一个代码从运行开始到结束…...

【QT】练习1

1、设计一个颜色选择器,可以输入RGB的颜色值,点击确认,可以把主界面的背景颜色改成设置的颜色 修改背景颜色:setStyleSheet(“background-color 红绿蓝颜色值”); // mainwindow.cpp #include "mainwindow.h" #include…...

GreenPlum学习

简介 Greenplum是一个面向数据仓库应用的关系型数据库,因为有良好的体系结构,所以在数据存储、高并发、高可用、线性扩展、反应速度、易用性和性价比等方面有非常明显的优势。Greenplum是一种基于PostgreSQL的分布式数据库,其采用sharednothi…...

张量-pytroch基础(2)

张量-pytroch网站-笔记 张量是一种特殊的数据结构,跟数组(array)和矩阵(matrix)非常相似。 张量和 NumPy 中的 ndarray 很像,不过张量可以在 GPU 或其他硬件加速器上运行。 事实上,张量和 Nu…...

Linux多线程编程的艺术:封装线程、锁、条件变量和信号量的工程实践

目录 📌这篇博客能带给你什么? 🔥为什么需要封装这些组件? 一、线程封装 框架设计 构造与析构 1.线程创建 2.线程分离 3.线程取消 4.线程等待 二、锁封装 框架设计 构造与析构 1.加锁 2.解锁 3.RAII模式 三、条件…...

2025年智慧能源与控制工程国际学术会议(SECE 2025)

官网:www.ic-sece.com 简介 2025年智慧能源与控制工程国际学术会议(SECE 2025)将于2025年4月18日线上会议形式召开,这是一个集中探讨全球智慧能源和控制工程领域创新和挑战的国际学术平台。旨在汇集全球领域内的学者、研究人员、…...

Android 16开发实战指南|锁屏交互+Vulkan优化全解析

一、环境搭建与项目初始化 1. 安装Android Studio Ladybug 下载地址:Android Studio官网关键配置: # 安装后立即更新SDK SDK Manager → SDK Platforms → 安装Android 16 (Preview) SDK Manager → SDK Tools → 更新Android SDK Build-Tools至34.0.0 # 通过命令行安装SDK组…...

sscanf() 用法详解

sscanf() 是 scanf() 的变体,它用于从字符串中提取格式化数据,常用于解析输入字符串。 1️⃣ sscanf() 语法 int sscanf(const char *str, const char *format, ...); str:要解析的字符串(必须是 const char*,可以用…...

0基础入门scrapy 框架,获取豆瓣top250存入mysql

一、基础教程 创建项目命令 scrapy startproject mySpider --项目名称 创建爬虫文件 scrapy genspider itcast "itcast.cn" --自动生成 itcast.py 文件 爬虫名称 爬虫网址 运行爬虫 scrapy crawl baidu(爬虫名) 使用终端运行太麻烦了,而且…...

Linux常见操作命令(2)

(一)复制和移动 复制和移动都分为文件和文件夹,具体的命令是cp和mv。 1.复制文件(复制的文件要是已创建) 格式:cp 源文件 目标文件。 示例:把filel.txt复制一份得到file2.txt。 那么对应的命令就是&#x…...

谷歌将 Android OS 完全转变为 “内部开发”

2025 年 3 月 27 日,据 Android Authority 报道,谷歌证实将从下周开始完全在内部分支机构闭门开发安卓操作系统。相关信息如下: 背景:多年来,谷歌同时维护着两大安卓主要分支,一是面向公众开放的 “安卓开源…...

移动端六大语言速记:第2部分 - 控制结构

移动端六大语言速记:第2部分 - 控制结构 本文继续对比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift这六种移动端开发语言的控制结构,帮助开发者快速掌握各语言的语法差异。 2. 控制结构 2.1 条件语句 各语言条件语句的语法对比: …...

【 Vue 2 中的 Mixins 模式】

Vue 2 中的 Mixins 模式 在 Vue 2 里,mixins 是一种灵活的复用代码的方式,它能让你在多个组件间共享代码。借助 mixins,你可以把一些通用的选项(像 data、methods、computed 等)封装到一个对象里,然后在多…...

STM32F103_LL库+寄存器学习笔记13 - 梳理外设CAN与如何发送CAN报文(串行发送)

导言 CAN总线因其高速稳定的数据传输与卓越抗干扰性能,在汽车、机器人及工业自动化中被广泛应用。它采用分布式网络结构,实现多节点间实时通信,确保各控制模块精准协同。在汽车领域,CAN总线连接发动机、制动、车身系统&#xff0c…...

DataPlatter:利用最少成本数据提升机器人操控的泛化能力

25年3月来自中科院计算所的论文“DataPlatter: Boosting Robotic Manipulation Generalization with Minimal Costly Data”。 视觉-语言-动作 (VLA) 模型在具身人工智能中的应用日益广泛,这加剧对多样化操作演示的需求。然而,数据收集的高成本往往导致…...

受控组件和非受控组件的区别

在 React 中,​受控组件(Controlled Components)​ 和 ​非受控组件(Uncontrolled Components)​ 是处理表单元素的两种不同方式,它们的核心区别在于 ​数据管理的方式 和 ​与 React 的交互模式。 受控组件…...

Mhand Pro 多节点动作捕捉手套:一副手套多场景应用

随着动作捕捉技术的发展,动捕手套的出现为虚拟现实交互、VR游戏开发、机器臂/灵巧手遥操作等方面带来了更加便捷可行的方案。 广州虚拟动力作为一家在动作捕捉领域深耕多年的公司,基于传感器技术而研发的多节点惯性动作捕捉手套,兼具VR交互与…...

Kafka消息丢失全解析!原因、预防与解决方案

作为一名高并发系统开发工程师,在使用消息中间件的过程中,无法避免遇到系统中消息丢失的问题,而Kafka作为主流的消息队列系统,消息丢失问题尤为常见。 在这篇文章中,将深入浅出地分析Kafka消息丢失的各种情况&#xf…...

BERT与Transformer到底选哪个-上部

一、先理清「技术家谱」:BERT和Transformer是啥关系? 就像「包子」和「面食」的关系——BERT是「Transformer家族」的「明星成员」,而GPT、Qwen、DeepSeek这些大模型则是「Transformer家族」的「超级后辈」。 1.1 BERT:Transfor…...

【Unity】记录TMPro使用过程踩的一些坑

1、打包到webgl无法输入中文,编辑器模式可以,但是webgl不行,试过网上的脚本,还是不行 解决方法:暂时没找到 2、针对字体asset是中文时,overflow的效果模式处理奇怪,它会出现除了overflow模式以…...

数据处理的两种范式:深入解析OLTP与OLAP系统

目录 前言1. OLTP:业务运作的基石1.1 OLTP的核心定义与价值1.2 OLTP的技术架构特点1.3 OLTP的典型应用场景 2. OLAP:决策支持的大脑2.1 OLAP的基本概念与作用2.2 OLAP的技术实现方式2.3 OLAP的应用实践 3. OLTP与OLAP的对比与融合3.1 核心差异的深度解析…...

本地飞牛NAS快速部署WordPress个人网站并一键上线公网远程访问

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress ​ 推荐 ​ 前些天发现了一个巨牛的人工智能学习网站,通俗…...

windows环境下的cmake使用

创建一个目录testcmake 进入目录 创建一个文件main.cpp : #include <iostream> using namespace std; int main(){cout<<"what is going on?"<<endl;return 0; }再创建一个cmakelists.txt set(CMAKE_CXX_STANDARD 20) add_executable(test2 mai…...

多线程(多线程案例)(续~)

目录 一、单例模式 1. 饿汉模式 2. 懒汉模式 二、阻塞队列 1. 阻塞队列是什么 2. 生产者消费者模型 3. 标准库中的阻塞队列 4. 自实现阻塞队列 三、定时器 1. 定时器是什么 2. 标准库中的定时器 欢迎观看我滴上一篇关于 多线程的博客呀&#xff0c;直达地址&#xf…...

同步SVPWM调制策略的初步学习记录

最近项目需要用到一些同步调制SVPWM相关的内容&#xff08;现在的我基本都是项目驱动了&#xff09;&#xff0c;因此对该内容进行一定的学习。 1 同步SVPWM调制的背景 我们熟知的一些知识是&#xff1a;SVPWM&#xff08;空间矢量脉宽调制&#xff09;是一种用于逆变器的调制…...

权重参数矩阵

目录 1. 权重参数矩阵的定义与作用 2. 权重矩阵的初始化与训练 3. 权重矩阵的解读与分析 (1) 可视化权重分布 (2) 统计指标分析 4. 权重矩阵的常见问题与优化 (1) 过拟合与欠拟合 (2) 梯度问题 (3) 权重对称性问题 5. 实际应用示例 案例1&#xff1a;全连接网络中的…...

堆叠虚拟化

各厂商叫法不同&#xff1a;思科 VSS 锐捷 VSU 华为 Stack 华三 IRF 虚拟化为一台设备进行管理&#xff0c;从而实现高可靠性。当任意交换机故障时&#xff0c;都能实现设备、链路切换&#xff0c;保护客户业务稳定运行 传统的园区网高可靠性技术出现故障时切换时间很难做到毫…...

3.31-4 性能面试题

面试题 1、性能问题的六个特征&#xff1a; &#xff08;1&#xff09;、持续缓慢&#xff1a; &#xff08;2&#xff09;、随着时间推进越来越慢、 &#xff08;3&#xff09;、随着负载增加越来越慢、 &#xff08;4&#xff09;、零星挂起或异常错误、 &#xff08;5…...

2025年最新自动化/控制保研夏令营预推免面试真题分享(东南/浙大/华科清华)

笔者来2021级本科自动化专业&#xff0c;以下部分将介绍我在夏令营以及预推免期间发生经历和问题 东南大学自动化学院 东南大学&#xff1a; 东南大学面试有一个十分明显的特点&#xff0c;就是极其注重专业课&#xff0c;基本上就是在面试的时候电脑上会有几个文件夹&#x…...

freecad手动装插件 add on

python工作台输入 FreeCAD.ConfigGet("UserAppData") 在返回的地址上新建文件夹&#xff1a;Mod #like /home/chen/snap/freecad/common 进入Mod #like /home/chen/snap/freecad/common/Mod git clone 你要的项目 #like git clone https://github.com/looooo/f…...

mysql 主从搭建步骤

主库&#xff1a; 开启log-bin参数&#xff0c;log-bin 参数修改需要重启服务器 --You can change the server_id value dynamically by issuing a statement like this:SET GLOBAL server_id 2;--to enable binary logging using a log file name prefix of mysql-bin, and c…...

从AI大模型到MCP中台:构建下一代智能服务的核心架构

从AI大模型到MCP中台&#xff1a;构建下一代智能服务的核心架构 引言&#xff1a;AI大模型带来的服务重构革命 在ChatGPT掀起全球AI热潮的今天&#xff0c;大模型展现出的惊人能力正在重塑整个软件服务架构。但鲜为人知的是&#xff0c;真正决定AI服务成败的不仅是模型本身&a…...

31天Python入门——第18天:面向对象三大特性·封装继承多态

你好&#xff0c;我是安然无虞。 文章目录 面向对象三大特性1. 封装2. 继承3. 多态4. 抽象基类5. 补充练习 面向对象三大特性 面向对象编程&#xff08;Object-Oriented Programming, 简称OOP&#xff09;有三大特性, 分别是封装、继承和多态.这些特性是面向对象编程的基础, …...

css_z-index属性

z-index 工作原理及层叠上下文&#xff08;Stacking Context&#xff09; 在 CSS 中&#xff0c;z-index 主要用于控制元素的堆叠顺序&#xff0c;决定哪些元素显示在上层&#xff0c;哪些元素在下层。它的工作原理涉及 层叠上下文&#xff08;Stacking Context&#xff09;&a…...

ros2--xacro

什么是xacro 在ROS 2中&#xff0c;Xacro&#xff08;XML Macros&#xff09;是一种基于XML的宏语言&#xff0c;专门用于简化URDF&#xff08;Unified Robot Description Format&#xff09;文件的编写。它通过宏定义、变量替换和代码复用等功能&#xff0c;让机器人模型的描…...

Nordic 新一代无线 SoC nRF54L系列介绍

目录 概述 1 nRF54L系列特点 1.1 内存 1.2 芯片封装 2 增强的多协议支持 3 其他特性 4 nRF54L系列MCU特性 4.1 多协议无线电 4.2 安全性 4.3 存储空间 4.4 工作参数 4.5 调试接口 4.6 外设 概述 全新 nRF54L 系列的所有三款器件均将 2.4 GHz 无线电和 MCU 功能 (包括…...

力扣HOT100之矩阵:240. 搜索二维矩阵 II

这道题直接暴力AC的&#xff0c;虽然也能过&#xff0c;但是耗时太长了。 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int edge min(matrix.size(), matrix[0].size()) - 1; //先在edge * edge的矩阵中搜索for…...

一个判断A股交易状态的python脚本

最近在做股票数据相关的项目&#xff0c;需要用到判断某一天某个时刻A股的状态&#xff0c;比如休市&#xff0c;收盘&#xff0c;交易中等&#xff0c;发动脑筋想了一下&#xff0c;这个其实还是比较简单的&#xff0c;这里我把实现方法分享给大家。 思路 当天是否休市 对于某…...

为什么package.json里的npm和npm -v版本不一致?

这个情况出现是因为package.json里的 npm 版本和系统实际使用的 npm 版本是两个不同的概念。让我来解释一下&#xff1a; 原因解释 全局 npm vs 项目依赖&#xff1a; npm -v显示的是系统全局安装的 npm 版本&#xff08;位于/usr/bin/npm或类似路径&#xff09;package.jso…...

Rust 有问有答之 use 关键字

use 是什么# use 是 Rust 编程语言的关键字。using 是 编程语言 C# 的关键字。 关键字是预定义的保留标识符&#xff0c;对编译器有特殊意义。 using 关键字有三个主要用途&#xff1a; using 语句定义一个范围&#xff0c;在此范围的末尾将释放对象。 using 指令为命名空间创…...

[skip]CBAM

论文题目:CBAM: Convolutional Block Attention Module 中文题目:CBAM: 注意力卷积模块 0摘要 我们提出了卷积块注意力模块(CBAM),一个简单而有效的前馈卷积神经网络注意力模块。给定一个中间特征图,我们的模块沿着两个独立的维度(通道和空间)顺序推断注意力图,然后…...

突破反爬困境:SDK开发,浏览器模块(七)

声明 本文所讨论的内容及技术均纯属学术交流与技术研究目的&#xff0c;旨在探讨和总结互联网数据流动、前后端技术架构及安全防御中的技术演进。文中提及的各类技术手段和策略均仅供技术人员在合法与合规的前提下进行研究、学习与防御测试之用。 作者不支持亦不鼓励任何未经授…...

在MFC中使用Qt(四):使用属性表(Property Sheet)实现自动化Qt编译流程

前言 首先回顾下前面文章介绍的&#xff1a; 在MFC中使用Qt&#xff08;一&#xff09;&#xff1a;玩腻了MFC&#xff0c;试试在MFC中使用Qt&#xff01;&#xff08;手动配置编译Qt&#xff09; 在MFC中使用Qt&#xff08;二&#xff09;&#xff1a;实现Qt文件的自动编译流…...

相机镜头景深

文章目录 定义影响因素实际应用特殊情况 参考&#xff1a;B站优致谱视觉 定义 景深是指在摄影机镜头或其他成像器前沿着能够取得清晰图像的成像器轴线所测定的物体距离范围。简单来说&#xff0c;就是在一张照片中&#xff0c;从前景到背景&#xff0c;能够保持清晰锐利的区域…...

HTML实现图片上添加水印的工具

HTML实现图片上添加水印的工具 本文介绍两种实现方式&#xff1a;图片上添加文字水印和图片上添加图片水印。部分源码参照自网络。 一、图片上添加文字水印 先看效果图&#xff1a; 源码如下&#xff1a; <!DOCTYPE html> <html lang"zh"> <head&…...

mysql JSON_ARRAYAGG联合JSON_OBJECT使用

父表数据&#xff08;表名&#xff1a;class&#xff09; idname1一年级2二年级3三年级 子表数据&#xff08;表名&#xff1a;students&#xff09; idnameclassId11张三112李四113小明3 sql查询&#xff08;推荐使用方法一&#xff09; 方法一 (使用IFNull判断子表数据是否…...