【大模型基础_毛玉仁】5.3 附加参数法:T-Patcher
目录
- 5.3 附加参数法:T-Patcher
- 5.3.1 补丁的位置
- 1)键值存储体
- 2)补丁设计
- 5.3.2 补丁的形式
- 5.3.3 补丁的实现
- 1)准确性
- 2)局部性
5.3 附加参数法:T-Patcher
附加参数法:通过引入可训练的额外参数实现模型知识编辑,在准确性、泛化性等方面表现优异。
其中,T-Patcher作为代表性方法,在Transformer模型的最后一个前馈层中添加"补丁"参数,通过训练这些参数实现特定知识编辑,且不改变原始模型架构。
该方法主要从补丁位置(如前馈层)、补丁形式(参数结构设计)及实现方式(训练策略) 三方面展开。
图 5.9: T-Patcher 方法 (图中紫色图块为补丁)
.
5.3.1 补丁的位置
T-Patcher选择在Transformer模型最后一个全连接前馈层添加补丁参数,将全连接前馈层视为键值存储体。通过向该层注入少量可训练参数形成新记忆单元,结合精确的激活控制机制,既能针对性修正特定输入的知识,又可避免干扰无关输入。这种设计因FFN结构简单而具备参数高效性,仅需少量参数即可实现有效编辑。
.
1)键值存储体
图 5.10: 键值存储体 (省略激活函数)
包含:键向量矩阵 W f c = [ k 1 , k 2 , . . . , k n ] W_{fc} = [k_1, k_2, . . . , k_n] Wfc=[k1,k2,...,kn] 及其偏置向量 b k b_k bk、激活函数 σ 和值向量矩阵 W p r o j = [ v 1 , v 2 , . . . , v n ] W_{proj} = [v_1, v_2, . . . , v_n] Wproj=[v1,v2,...,vn] 及其偏置向量 b v b_v bv。
-
键向量矩阵:对应输入文本中的特定模式。
-
值向量矩阵:关联模型输出的概率分布。
查询过程:输入 Token 的查询向量 q 与 Wfc 相乘计算激活值向量 a,然后与 Wproj 相乘得到输出结果。
a = σ ( q ⋅ W f c + b k ) F F N ( q ) = a ⋅ W p r o j + b v \begin{aligned} a = \sigma(q \cdot W_{fc} + b_k) \\ \\ FFN(q) = a \cdot W_{proj} + b_v \end{aligned} a=σ(q⋅Wfc+bk)FFN(q)=a⋅Wproj+bv
隐藏层维度:代表模型“记忆”的文本模式数量。
.
2)补丁设计
-
位置:在 Transformer 模型的最后一个全连接前馈层添加补丁。
-
作用:通过添加少量参数(键值对)插入新事实信息,实现模型编辑。
-
优势:参数高效,针对性强,避免干扰无关输入。
.
5.3.2 补丁的形式
补丁的形式如下图所示,主要包括一个键向量 k_p、一个值向量 v_p 和一个偏置项 b_p。
图 5.11: 补丁的形式
在添加补丁后,全连接前馈层的输出被调整为:
[ a a p ] = σ ( q ⋅ [ W f c k p ] + [ b k b p ] ) F F N p ( q ) = [ a a p ] ⋅ [ W p r o j v p ] ⊤ + b v = F F N ( q ) + a p ⋅ v p \begin{aligned} [a \quad a_p] &= \sigma(q \cdot [W_{fc} \quad k_p] + [b_k \quad b_p]) \\ \\ FFN_p(q) &= [a \quad a_p] \cdot [W_{proj} \quad v_p]^{\top} + b_v = FFN(q) + a_p \cdot v_p \end{aligned} [aap]FFNp(q)=σ(q⋅[Wfckp]+[bkbp])=[aap]⋅[Wprojvp]⊤+bv=FFN(q)+ap⋅vp
其中,
-
a_p 为补丁的激活值,代表补丁对输入查询的响应程度。
-
添加补丁后,a_p 与值向量 v_p 的乘积会形成偏置项叠加到全连接前馈层的原始输出之上,以调整模型的输出。
补丁就像一个很小的修正器,只会被相关的输入查询激活。
.
5.3.3 补丁的实现
T-Patcher 为每个需要编辑的 Token 都添加一个补丁,从而精确针对每个编辑需求进行调整。
最后,T-Patcher 从编辑的准确性和局部性两个角度出发对损失函数进行设计。接下来对其损失函数进行介绍。
.
1)准确性
对于补丁的准确性, T-Patcher 主要关注两个方面:
-
(1)确保补丁可以在目标输入下可以被激活;
-
(2)一 旦被激活,补丁应该能够准确地调整模型输出以符合预期的结果。
为此,T-Patcher 设计了准确性损失 L a c c L_{acc} Lacc,它包括激活损失 l a l_a la 和编辑损失 l e l_e le:
L A c c = l a ( k p , b p ) + α l e ( k p , v p , b p ) L_{Acc} = l_a(k_p, b_p) + \alpha l_e(k_p, v_p, b_p) LAcc=la(kp,bp)+αle(kp,vp,bp)
l a ( k p , b p ) = exp ( − q e ⋅ k p − b p ) l_a(k_p, b_p) = \exp(-q_e \cdot k_p - b_p) la(kp,bp)=exp(−qe⋅kp−bp)
l e ( k p , v p , b p ) = C E ( y e , p e ) l_e(k_p, v_p, b_p) = CE(y_e, p_e) le(kp,vp,bp)=CE(ye,pe)
其中,
-
q e q_e qe 是编辑样本在全连接前馈层处的查询向量,
-
y e y_e ye 是该补丁对应的目标 Token,
-
p e p_e pe 是模型在补丁作用下的预测输出,
-
CE 是交叉熵损失函数,
-
α 是激活损失 l a l_a la 的权重。
激活损失l_a
-
激活损失确保补丁在目标输入下被激活。
-
通过最大化编辑样本的查询向量 q_e 对补丁的激活值,确保补丁对特定编辑需求的响应。
编辑损失l_e
-
编辑损失确保补丁在被激活后能够将模型输出调整为目标 Token。
-
使用交叉熵损失函数评估补丁调整后的输出 p_e 与目标 Token y_e 的一致性,确保补丁的调整正确实现预期的修正效果。
.
2)局部性
为了保证编辑的局部性,T-Patcher 设计了特定的损失函数来限制补丁的激活范围,确保其只在相关的输入上被激活。具体而言,T-Patcher 通过以下方式实现:
记忆数据集 D M D_M DM:随机保留先前处理过的与当前编辑目标无关的查询向量,组成记忆数据集 D M = q i i = 1 ∣ D M ∣ D_M = {q_i}_{i=1}^{|D_M|} DM=qii=1∣DM∣
记忆损失 L m L_m Lm:定义了记忆损失 L m L_m Lm 来保证编辑的局部性,该损失包含 l m 1 l_{m1} lm1 和 l m 2 l_{m2} lm2 两项:
-
l m 1 l_{m1} lm1:确保记忆数据集中的查询向量在补丁上的激活值低于阈值 β \beta β
-
l m 2 l_{m2} lm2:确保记忆数据集中的查询向量与编辑样本的查询向量 q e q_e qe 在补丁上的激活差异低于阈值 γ \gamma γ。
L m = l m 1 ( k p , b p ) + l m 2 ( k p , b p , q e ) L_m = l_{m1}(k_p, b_p) + l_{m2}(k_p, b_p, q_e) Lm=lm1(kp,bp)+lm2(kp,bp,qe)
l m 1 ( k p , b p ) = 1 ∣ D M ∣ ∑ i = 1 ∣ D M ∣ ( max ( q i ⋅ k p + b p − β , 0 ) ) l_{m1}(k_p, b_p) = \frac{1}{|D_M|} \sum_{i=1}^{|D_M|} (\max(q_i \cdot k_p + b_p - \beta, 0)) lm1(kp,bp)=∣DM∣1i=1∑∣DM∣(max(qi⋅kp+bp−β,0))
l m 2 ( k p , b p ) = 1 ∣ D M ∣ ∑ i = 1 ∣ D M ∣ ( max ( ( q i − q e ) ⋅ k p + b p − γ , 0 ) ) l_{m2}(k_p, b_p) = \frac{1}{|D_M|} \sum_{i=1}^{|D_M|} (\max((q_i - q_e) \cdot k_p + b_p - \gamma, 0)) lm2(kp,bp)=∣DM∣1i=1∑∣DM∣(max((qi−qe)⋅kp+bp−γ,0))
将这些损失项整合,T-Patcher 的总损失函数 L_p 可以表达为:
L p = L A c c + β ⋅ L m = l e + α ⋅ l a + β ⋅ ( l m 1 + l m 2 ) L_p = L_{Acc} + \beta \cdot L_m = l_e + \alpha \cdot l_a + \beta \cdot (l_{m1} + l_{m2}) Lp=LAcc+β⋅Lm=le+α⋅la+β⋅(lm1+lm2)
通过这些损失函数,T-Patcher 确保补丁在无关输入上不会被激活,从而保证编辑的局部性。
T-Patcher 在 GPT-J 模型上表现出较好的准确性和泛化性,但也存在局限性,如在不同模型架构上性能波动较大,批量编辑时内存需求高,限制了其在资源受限环境下的应用。
相比之下,ROME 方法更加稳定,通过将知识编辑视为一个带有线性等式约束的最小二乘问题,实现了对模型特定知识的精确修改,在准确性、泛化性和局部性等方面表现出色。
.
其他参考:【大模型基础_毛玉仁】系列文章
声明:资源可能存在第三方来源,若有侵权请联系删除!
相关文章:
【大模型基础_毛玉仁】5.3 附加参数法:T-Patcher
目录 5.3 附加参数法:T-Patcher5.3.1 补丁的位置1)键值存储体2)补丁设计 5.3.2 补丁的形式5.3.3 补丁的实现1)准确性2)局部性 5.3 附加参数法:T-Patcher 附加参数法:通过引入可训练的额外参数实…...
【19期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股实时交易数据及接口API说明文档
在量化分析领域,实时且准确的数据接口是成功的基石。经过多次实际测试,我将已确认可用的数据接口分享给正在从事量化分析的朋友们,希望能够对你们的研究和工作有所帮助,接下来我会用Python、JavaScript(Node.js&…...
RSA 简介及 C# 和 js 实现【加密知多少系列_4】
〇、简介 谈及 RSA 加密算法,我们就需要先了解下这两个专业名词,对称加密和非对称加密。 对称加密:在同一密钥的加持下,发送方将未加密的原文,通过算法加密成密文;相对的接收方通过算法将密文解密出来原文…...
Koordinator-Metric查询
以CollectAllPodMetricsLast()举例,看看koordinator怎样使用tsdb进行查询。 CollectAllPodMetricsLast() GenerateQueryParamsLast()传入metric采集间隔2倍时间调用CollectAllPodMetrics()func CollectAllPodMetricsLast(statesInformer statesinformer.StatesInformer, metr…...
LeetCode1两数之和
**思路:**懒得写了,如代码所示 /*** Note: The returned array must be malloced, assume caller calls free().*/ struct hashTable {int key;//存值int val;//存索引UT_hash_handle hh; }; int* twoSum(int* nums, int numsSize, int target, int* re…...
AOA与TOA混合定位,MATLAB例程,三维空间下的运动轨迹,滤波使用EKF,附下载链接
本文介绍一个MATLAB代码,实现基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络&am…...
Java算法模板
合并区间 统计不同区间的元素个数 //合并区间List<Integer> result new ArrayList<>();int start intervals.get(0)[0];int end intervals.get(0)[1];for(int i1;i<intervals.size();i){int[] curr intervals.get(i);if(curr[0]>end){//不能合并&…...
软件架构设计中的软件过程模型初识
软件架构设计中的软件过程模型是指导软件开发过程的框架,它们定义了软件开发的不同阶段、活动、任务和角色。结合具体的使用场景,可以更好地理解这些模型如何在实际项目中应用。以下将详细介绍几种常见的软件过程模型,并结合典型场景进行讲解…...
征程 6E mipi tx 系列之方案介绍
MIPI TX 到车机显示系统设计指南 IDE 介绍 征程 6 IDE 架构图 IDE(Image Display Engine)包含图像显示单元(Image Display Unit)、图像数据输出模块(MIPI CSI2 Device 和 MIPI DSI)。通过 IDU 从内存中读…...
std::reference_wrapper 和 std::function的详细介绍
关于 std::reference_wrapper 和 std::function 的详细介绍及具体测试用例: 1. std::reference_wrapper(引用包装器) 核心功能 包装引用:将引用转换为可拷贝、可赋值的对象支持隐式转换:可自动转换为原始引用类型容器…...
【day4】数据结构刷题 树
6-1 二叉树的遍历 函数接口定义: void InorderTraversal( BinTree BT ); void PreorderTraversal( BinTree BT ); void PostorderTraversal( BinTree BT ); void LevelorderTraversal( BinTree BT ); 其中BinTree结构定义如下: typedef struct TNode *Po…...
基于Selenium的IEEE Xplore论文数据爬取实战指南
基于Selenium的IEEE Xplore论文数据爬取实战指南 一、项目背景与目标 IEEE Xplore作为全球知名的学术资源平台,收录了大量高质量科技文献。本教程将演示如何通过Python的Selenium库实现: 自动化获取指定领域论文列表(以"构音障碍"为例)完整提取论文标题、摘要、…...
Vue2 项目将网页内容转换为图片并保存到本地
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
flutter 专题 七十一 Flutter 自定义单选控件
在Flutter 应用开发中,经常会遇到各种单选效果,虽然官方提供了Radio组件,但是并不能满足我们实际的开发需求,所以往往还需要自定义控件才能满足平时的开发需求。下面就平时开发中用到的单选进行介绍: 自定义SegmentBa…...
质因数个数--欧拉函数中统计纯素数
和互质数不同,这里统计的是纯素数部分 就是x/i那一部分 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<ll,int> PII; int n,m,k; ll eular(ll x) { ll an0;ll px;for(ll i2;i*i<x;i){if(x%i…...
RAG基建之PDF解析的“无OCR”魔法之旅
PDF文件转换成其他格式常常是个大难题,大量的信息被锁在PDF里,AI应用无法直接访问。如果能把PDF文件或其对应的图像转换成结构化或半结构化的机器可读格式,那就能大大缓解这个问题,同时也能显著增强人工智能应用的知识库。 嘿,各位AI探险家们!今天我们将踏上了一段奇妙的…...
Web开发:数据的加密和解密
一、常见通用术语解析 加盐:在密码中加入随机数据,提高安全性。摘要:固定长度的输出,用于数据完整性验证。加密:将数据转换为不可读形式,确保安全。撞库:通过暴力破解比对常见密码的攻击方式。…...
从零开始研发GPS接收机连载——15、使用新射频成功打卡日本地标
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 从零开始研发GPS接收机连载——15、使用新射频成功打卡日本地标 前言MAX2771配置测试MAX2771完整程序测试 前言 话说笔者花了一笔巨资买了一个指甲盖般大小的MAX2771射频板&…...
linux压缩指令
今天我们来了解一下linux压缩指令,压缩是我们文件传输的一种重要手段,对此,我们是必须学习压缩指令的,那么话不多说,来看. 1.grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。 基本语法&#x…...
智能提示词生成器:助力测试工程师快速设计高质量测试用例
在软件测试中,测试用例设计方法的选择和实施是确保软件质量的重要步骤。测试工程师经常需要根据不同的测试场景、参数维度和业务需求,设计出覆盖率高且有效的测试用例。然而,设计测试用例并非易事,特别是在面对复杂的业务逻辑时。 为了帮助测试工程师高效生成测试用例提示…...
QML中使用Image显示图片和使用QQuickItem显示图片
在QML中显示图片时,Image元素和自定义QQuickItem有不同的特性和适用场景。以下是两者的详细对比及性能分析: 1. Image 元素 优点: 声明式语法:简单直观,适合静态图片或简单动态需求 Image {source: "image.png&…...
若依赖前端处理后端返回的错误状态码
【背景】 后端新增加了一个过滤器,用来处理前端请求中的session 若依赖存放过滤器的目录:RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\ 【问题】 后端返回了一个状态码为403的错误,现在前端需要处理这…...
C++23:现代C++的模块化革命与零成本抽象新高度
以下代码为伪代码,仅供参考 一、标准库的范式突破 1. std::expected:类型安全的错误处理 std::expected<DataPacket, ErrorCode> parsePacket(ByteStream& stream) {if (stream.header_valid()) return decode_packet(stream);elsereturn s…...
【嵌入式学习3】TCP服务器客户端 - UDP发送端接收端
目录 1、TCP TCP特点 TCP三次握手(建立TCP连接): TCP四次握手【TCP断开链接的时候需要经过4次确认】: TCP网络程序开发流程 客户端开发:用户设备上的程序 服务器开发:服务器设备上的程序 2、UDP 为…...
《Spring Cloud Eureka 高可用集群实战:从零构建高可靠性的微服务注册中心》
从零构建高可用 Eureka 集群 | Spring Cloud 微服务架构深度实践指南 本文核心内容基于《Spring Cloud 微服务架构开发》第1版整理,结合生产级实践经验优化 实验环境:IntelliJ IDEA 2024 | JDK 1.8| Spring Boot 2.1.7.RELEASE | Spring Cloud Greenwich…...
Dust3r、Mast3r、Fast3r
目录 一.Dust3r 1.简述 2.PointMap与ConfidenceMap 3.模型结构 4.损失函数 5.全局对齐 二.Mast3r 1.简述 2.MASt3R matching 3.MASt3R sfm 匹配与标准点图 BA优化 三.Fast3r 1.简述 2.模型结构 3.损失函数 三维重建是计算机视觉中的一个高层任务,包…...
HTML5 Web SQL 数据库学习笔记
HTML5 的 Web SQL 数据库曾是一种用于在浏览器客户端存储数据的技术,但目前已被废弃。尽管如此,了解其基本概念和操作方法仍具有一定的学习价值。以下是关于 Web SQL 数据库的学习笔记。 一、Web SQL 数据库概述 1.1 状态与替代方案 Web SQL API 已被…...
Plastiform复制胶泥:高精度表面复制与测量的高效工具
在工业制造和质量检测领域,表面复制和测量是确保产品质量的关键环节。Plastiform复制胶泥作为一种创新材料,凭借其出色的性能和多样化的应用,为用户提供了可靠的解决方案。它能够快速捕捉复杂表面的细节,确保测量结果的准确性&…...
安装 `torch-sparse` 和 `torch-cluster`
✅ 安装 torch-sparse 和 torch-cluster 请直接运行下面这条 一行命令 来装 PyG 剩余依赖(适配我已装好的 PyTorch 2.5.1cpu): pip install torch-sparse torch-cluster -f https://data.pyg.org/whl/torch-2.5.1cpu.html✅ 或者自己去官网…...
Linux之基础知识
目录 一、环境准备 1.1、常规登录 1.2、免密登录 二、Linux基本指令 2.1、ls命令 2.2、pwd命令 2.3、cd命令 2.4、touch命令 2.5、mkdir命令 2.6、rmdir和rm命令 2.7man命令 2.8、cp命令 2.9、mv命令 2.10、cat命令 2.11、echo命令 2.11.1、Ctrl r 快捷键 2…...
[mlr3] Bootstrap与交叉验证k-fold cross validation
五折交叉验证因其无放回分层抽样和重复验证机制,成为超参数调优的首选; 而Bootstrap因有放回抽样的重复性和验证集的不稳定性,主要服务于参数估计(置信区间的计算)而非调优。 实际应用中,可结合两者优势&am…...
自动化构建攻略:Jenkins + Gitee 实现 Spring Boot 项目自动化构建
Jenkins Gitee 实现 Spring Boot 项目自动化构建 环境准备安装配置jdk安装配置maven安装git安装配置Jenkins 测试构建测试自动化触发 环境准备 云服务器环境: 系统版本:Ubuntu 24.04 64位ecs规格:4核(vCPU)8 GiB公网带宽:10Mbi…...
Python 中的不可变数据类型的解析
# Python 中的不可变数据类型的解析 在 Python 的世界里,数据类型扮演着至关重要的角色。根据数据是否可以在创建后被修改,Python 数据类型可分为可变和不可变两类。本文将聚焦于不可变数据类型,详细介绍它们的特点,并结合具体实例…...
【Kafka】分布式消息队列的核心奥秘
文章目录 一、Kafka 的基石概念主题(Topic)分区(Partition)生产者(Producer)消费者(Consumer) 二、Kafka 的架构探秘Broker 集群副本机制 三、Kafka 的卓越特性高…...
基于Promise链式调用的多层级请求性能优化
代码优化-循环嵌套关联请求 1. 背景 在实际开发中,我们经常会遇到需要嵌套关联请求的场景,比如: 获取项目列表获取项目详情获取项目进度 2. 问题 在这种场景下,我们可能会遇到以下问题: 串行请求瀑布流ÿ…...
RuoYi基础学习
1 若依搭建 前后端分离版本:RuoYi-Vue利用SpringBoot作为后端开发框架,与Vue.js结合,实现了前后端分离的开发模式。这种架构有助于提高开发效率,前后端可以独立开发和部署,更适合现代化的Web应用开发。 RuoYi-Vue3&a…...
解决关于原生gmssl无法直接输出sm2私钥明文的问题
解决关于原生gmssl无法直接输出sm2私钥明文的问题 问题描述解决方法解决方法一解决方法二 问题描述 通过gmssl生成sm2公私钥对时,输出的是加密的sm2私钥,无法获取到SM2私钥明文。 解决方法 解决方法一 手动解密: 解决方法二 修改源码&…...
AT24Cxx移植第三方库到裸机中使用
简介 MCU : STM32F103C8T6 库: HAL库裸机开发 EEPROM : AT24C02, 256Byte容量,I2C接口 电路图 AT24C02 电路图 电路图引用 逻辑直接读写 // 写入数据到 EEPROM HAL_StatusTypeDef EEPROM_WriteByte(uint16_t MemAddress, uint8_t Data) {// 发送数据uint8_t …...
【落羽的落羽 C++】内存区域、C++的内存管理
文章目录 一、内存区域二、C的内存管理1. new和delete2. new和delete的特点3. 实现的原理 一、内存区域 C语言和C中,我们常把计算机的内存分为不同的区域,有各自不同的功能: 栈区:存放函数的局部变量、参数、返回地址等。堆区&a…...
星际旅行(去年蓝桥杯省赛b组-第7题)
题目链接: 蓝桥账户中心 朋友分享给我一道题,我刚开始其实先用dfs写,但是直接就超时了(很大的一部分原因是截图中没有数据范围) #include<bits/stdc.h> using namespace std; const int MAXN 1e97; vector<int> graph[MAXN]; bool visite…...
转发和重定向的区别详解
转发(Forward)和重定向(Redirect)是 Web 开发中两种常用的请求处理方式,主要用于将客户端请求从一个资源转移到另一个资源。它们在实现机制、行为表现和应用场景上有显著区别,以下是对两者的详细解析&#…...
HarmonyOS NEXT——【鸿蒙相册图片以及文件上传Picker封装】
1、鸿蒙系统文件/图片上传base64: 鸿蒙应用需要上传图片或者文件时,由于更高的安全性与更严谨的访问权限,通常无法直接从系统相册或文件管理中直接上传,因此我们可以通过picker对象去拉起相册访问的能力,引导用户选择…...
Java中文件copy的5种方式
Java中文件copy的5种方式 传统字节流缓冲流jdk7 Files.copy通道(零拷贝)内存映射对比 传统字节流 缓冲流 jdk7 Files.copy 通道(零拷贝) 内存映射 对比...
Nacos Client 模块的作用是什么?是如何与 Server 端通信的?
Nacos Client 模块是 Nacos 架构中的重要组成部分,它负责与 Nacos Server 端进行交互,实现服务注册、服务发现、配置管理等核心功能。 可以将 Nacos Client 理解为 Nacos 提供给应用程序使用的 SDK。 Nacos Client 模块的主要作用: 服务注册 (Service R…...
c中的变量命名规则
在 C 中,变量命名需要遵循一定的规则和约定,以确保代码的可读性和合法性。以下是 C 变量命名的详细规则: 1. 基本规则 字母开头:变量名必须以字母(a-z 或 A-Z)或下划线(_)开头&…...
DDR(Double Data Rate)详解
一、DDR的定义与核心特性 DDR(双倍数据率同步动态随机存取存储器) 是一种 基于时钟上升沿和下降沿传输数据的高速内存技术,广泛应用于计算机、嵌入式系统、移动设备等领域。其核心特性包括: 双倍数据率:每个时钟周期传…...
aocache:AOCache 新增功能深度解析:从性能监控到灵活配置的全方位升级
最近对aocache 进行了重要升级,最新版本0.6.0增加了几项新功能:性能分析日志,AOCache性能分析工具,切入点自定义配置,全局配置,本文详细说明这几项目新功能的作用和使用方式。 一、性能分析日志 需求背景…...
IsaacLab最新2025教程(7)-引入IK solver控制机器人
机器人控制可以直接给定关节角进行驱动实现功能,完成任务,但是关节角不是很直观而且做teleoperation或者是结合VLA模型时候,用eef pose会更符合直觉一些,isaacsim用的是LulaKinematics,因为IsaacLab现在是ETHZ的团队在…...
【测试】每日3道面试题 3/30
每日更新,建议关注收藏点赞。 白盒测试逻辑覆盖标准?哪种覆盖标准覆盖率最高? 5种。语句覆盖、分支/判定覆盖、条件覆盖、条件组合覆盖【覆盖率最高,所有可能条件组合都验证】、路径覆盖【理论上最高,但实际很难实现】…...
矩阵中对角线的遍历问题【C++】
1,按对角线进行矩阵排序 题目链接:3446. 按对角线进行矩阵排序 - 力扣(LeetCode) 【题目描述】 对于一个m*n的矩阵grid,要求对该矩阵进行 变换,使得变换后的矩阵满足: 主对角线右上的所有对角…...