体系结构论文(七十一):Quantifying the Impact of Data Encoding on DNN Fault Tolerance
Quantifying the Impact of Data Encoding on DNN Fault Tolerance
研究动机
-
深度神经网络(DNN)在硬件运行时可能遇到位翻转(bit-flip)错误,特别是在能效和面积敏感的平台上(如边缘设备、移动端)。
-
虽然DNN具有一定的天然容错性,但其容错能力随模型、层、数据表示方式的不同而显著变化。
-
研究者提出可以通过数据编码方式(data encoding)设计来增强神经网络的容错能力。
核心发现
-
编码方式影响容错性:
-
将权重从传统的二进制补码(two’s complement)改为符号-幅度编码(sign-magnitude, SM)后,
-
模型能容忍的最大位错误率(Bit Error Rate, BER)提升了多达10倍。
-
在某些模型中,SM编码的容错能力几乎等同于“理想情况下保护符号位(oracle sign protection)”。
-
-
训练实例之间的容错差异显著:
-
即使是使用相同的超参数、模型架构和数据集进行训练,不同随机种子下的模型,其容错能力也会有多达5倍的差异。
-
在实际应用(如自动驾驶)中,假设重训练模型的容错性一致是不安全的假设。
-
-
SM编码能减少模型间容错波动:
-
SM编码相比二进制补码,在多次训练中表现出更小的容错性差异(variance),尤其是在10%精度下降容差阈值下,SM的方差比补码低6倍。
-
一、研究动机和背景
1. DNN 容错性的研究意义
-
DNN 在数据中心、移动端、边缘设备广泛部署,不同硬件平台面临不同的软错误风险(如 bit-flip 错误)。
-
与传统 CPU 工作负载相比,DNN 天然具有更高的容错能力。
-
有研究表明,DNN 在允许一定精度损失的情况下可以忍受更高的比特错误率(BER),从而换取功耗、面积和速度的提升。
2. 现有研究的不足
-
当前大多数容错研究假设模型训练一次即可代表其容错性,但本文发现:即使相同模型结构与超参数,容错性也可能变化很大。
-
此外,研究多聚焦于模型结构对容错性的影响,而对权重数据的编码方式(如补码或符号-幅度编码)对容错性的影响缺乏系统研究。
本文核心贡献
作者主要有三点关键发现:
编号 | 贡献内容 |
---|---|
1️⃣ | 相比于传统的补码(Two's Complement)编码,符号-幅度(Sign-Magnitude, SM) 编码可将DNN的容错性提高最多10倍,效果几乎等同于“只保护符号位”的理想方案(Oracle Sign Protection)。 |
2️⃣ | 在使用相同网络结构和训练超参数的情况下,不同随机种子训练出的模型,其容错能力差异可能高达 5倍。 |
3️⃣ | 与补码相比,SM 编码使模型容错性的波动性降低约 4 倍,更适用于实际部署。 |
实验平台:Ares 框架升级(对应表1)
作者在实验中使用的工具是 Ares(一个开源的 DNN 容错注入工具),并在原有基础上做了增强:
功能 | 原始版本(Ares) | 新版本(本文) |
---|---|---|
框架支持 | 仅 Keras | 新增 PyTorch(可GPU注入) |
注入类型 | 仅权重 | + 激活值、梯度 |
支持模型 | VGG16、ResNet50 | + MobileNet、InceptionV3 |
数据编码 | 固定编码 | 可切换为 2c、SM、Float |
GPU注入支持 | 仅激活值 | + 权重、梯度 |
二、数据编码对DNN容错性的影响
1. 编码方式与比特翻转的关系
-
核心观点:权重的**存储格式(如补码 vs 符号-幅度)**决定了在发生bit-flip时,值变化的严重程度。
-
在二进制补码(Two’s Complement)中,符号位(最高位)代表正负号。如果这个位发生翻转,会造成数值从正最大跳变为负最大,对神经网络权重的数值影响极大。
-
举例来说,CiFar10-VGG12 中,99.9999%以上的权重值在 -1.5 ~ +1.5之间。一旦符号位出错,原本接近0的小数值会突变成一个非常大的负数或正数——导致计算结果失真。
2. 模拟:理想符号位保护(Oracle Sign Bit Protection)
颜色 | 表示 |
---|---|
🔴 红色 | 二进制补码(Two’s complement) |
🔵 蓝色 | 理想符号位保护(Oracle sign protect) |
🟢 绿色 | 符号-幅度编码(Sign-magnitude) |
解读要点:
在所有模型中,红色柱子都最低,说明补码编码下容错性最差。
绿色柱子(SM编码)多数情况下和蓝色(理想保护)接近,说明SM 在不额外硬件代价的情况下,几乎达到了理想符号位保护的容错效果。
ResNet50、CiFar10-VGG 差距尤为明显,SM编码使容错性提高达 10 倍。
-
使用Ares工具对六种基准模型(MNIST FC/LeNet5, ImageNet VGG16/ResNet50, CiFar10 VGG12, TIDIGITS GRU)进行模拟实验。
-
方法是:
-
对量化后的权重在 [10⁻⁹, 10⁻³] 范围内注入bit-flip。
-
每个bit error rate(BER)运行20次,记录平均的推理误差。
-
找到误差上升不超过0.5%时可容忍的最大BER,作为容错能力的衡量指标。
-
-
结果:
-
如果只保护权重的符号位(理想情况),DNN的容错能力提升了接近一个数量级(10x)(见图1中蓝色柱状)。
-
3. 使用符号-幅度编码(Sign-Magnitude)实现等效保护
-
作者提出:不一定要额外保护符号位,可以改用SM编码,即可自然规避符号位错误的巨大影响。
-
SM编码中,符号位单独表示正负,值部分表示绝对值,翻转符号位相当于从
x → -x
,不会导致巨大跳变。 -
数学上,如果
x
的绝对值小于最大值一半(M/2),则 SM下符号翻转的误差明显小于2C。
4. 实验数据验证:CiFar-VGG12 为例
-
对于 CiFar-VGG12 来说,权重服从均值约为0、标准差<0.02的正态分布。
-
在2C编码中,99.9%的权重一旦符号位翻转,其数值变化比SM大10倍以上。
-
换句话说:越靠近0的值,符号位出错越致命,而SM天然在这种场景下更安全。
5. 评估结果:SM编码 vs 补码 vs 理想保护
-
对所有六个模型再次测试,只是将编码方式换成 SM:
-
对于 CiFar10-VGG、ImageNet ResNet50、TiDigits GRU,SM 编码下的容错性与 Oracle sign protection 几乎一致。
-
对于 MNIST FC、LeNet5、ImageNet VGG16,SM 容忍BER略低一些,但仍在 Oracle 的80%以上。
-
-
因此结论是:
-
使用SM编码几乎可以等效于特殊保护符号位,且不需要额外的硬件代价(如使用冗余存储技术保护符号位)。
-
同时它和2C一样使用同样位宽,不会引入额外存储开销,是一种设计性价比极高的容错增强方案。
-
内容 | 对应结论 |
---|---|
问题 | DNN权重的符号位极易受bit-flip影响,在2C编码下尤其严重 |
方案 | 用SM替代2C,无需额外硬件即可“等效保护符号位” |
效果 | 容错能力可提升至原来的10倍,且误差随BER变化更加平滑 |
意义 | 适用于边缘计算、自适应部署等对可靠性敏感的实际场景 |
三、同配置下模型实例间容错性存在显著差异(Fault Tolerance Variability)
1. 核心问题陈述
-
即使固定:
-
数据集(如CIFAR10)
-
模型架构(如VGG12)
-
超参数(如lr=0.1, L2=5e-4)
-
-
只改变训练的随机种子,也会导致容错能力出现高达16倍的差异!
2. 图 2 解读:误差退化趋势
图2展示了对20个训练实例,在不同BER(bit error rate)下的推理错误率变化
线条颜色 | 表示 |
---|---|
蓝色 | 二进制补码编码(2C) |
橙色 | 符号-幅度编码(SM) |
图中可观察到:
-
2C在BER达到10⁻⁶时误差开始剧烈上升,变异范围大。
-
SM在更高BER下才出现快速上升,退化更慢、曲线更平滑。
-
颜色阴影区域代表min/max范围,表明SM的误差方差更小。
结论:SM不仅容错性更强,而且更稳定,适合对精度敏感的部署。
3. 图 3 :模型间误差方差的来源与度量方法
图3说明了如何量化模型实例之间的容错差异,使用了两种标准:
左图(相对误差) | 每个实例相对于自己 base error(无注入) |
---|---|
右图(绝对误差) | 所有实例相对于最差实例 base error |
红色柱状图表示:在不同精度退化阈值(0.5% ~ 10%)下 BER 的标准差
观察结果:
-
在 0.5% / 1% 容差下,容错差异(BER方差)非常大,>1.5。
-
但随着容忍误差提升到 10%,差异显著缩小,收敛性增强。
工程含义:
-
在低容忍度场景(如关键任务系统),需考虑不同实例的“最坏情况”
-
在更宽容场景(如图像推荐),可以利用“收敛性”做系统容错优化
4. 图 4 解读:编码方式对容错波动的影响
图4展示了 不同编码方式下容错阈值的方差比较(几何标准差):
颜色 | 表示 |
---|---|
红色 | Sign-magnitude(SM) |
蓝色 | Two’s complement(2C) |
观察发现:
-
在低误差阈值(0.5%)时两者相差不大
-
在 10% 精度下降容忍度下:
-
SM 的容错能力波动比 2C 小 约6倍
-
即模型之间的性能更一致、更易于部署
-
结论:SM编码不仅平均容错能力强,其模型间的一致性(低方差)也更优秀。
相关文章:
体系结构论文(七十一):Quantifying the Impact of Data Encoding on DNN Fault Tolerance
Quantifying the Impact of Data Encoding on DNN Fault Tolerance 研究动机 深度神经网络(DNN)在硬件运行时可能遇到位翻转(bit-flip)错误,特别是在能效和面积敏感的平台上(如边缘设备、移动端࿰…...
学习笔记十一——零基础搞懂 Rust 函数式编程
🧠 零基础搞懂 Rust 函数式编程:到底什么是 “函数式”? Rust 是一门多范式语言,既可以像 C/Java 那样写“命令式代码”,也支持“函数式编程”。但很多刚入门的小伙伴可能会有这些疑问: 函数不就是函数吗&…...
Spark-SQL2
利用IDEA开发Spark-SQL 自定义函数 UDF: UDAF(自定义聚合函数) 强类型的 Dataset 和弱类型的 DataFrame 都提供了相关的聚合函数, 如 count(),countDistinct(),avg(),max(),min()。…...
python实战案例:玩具销售数据分析
原创 IT小本本 IT小本本 2025年04月12日 22:45 北京 本文将通过一个玩具销售数据的分析案例,展示如何利用 Python 和数据可视化工具从原始数据中提取有价值的商业洞察。将从数据加载、预处理到可视化分析,逐步揭示玩具销售的规律和趋势。 数据准备与加…...
模拟浏览器指纹:生成与定制特定属性
在现代网络环境中,浏览器指纹是一种强大的标识技术,用于区分不同的浏览器实例。通过收集浏览器的各种属性(如用户代理、Canvas 指纹、WebGL 特性等),可以生成一个独特的指纹,用于跟踪用户行为或防止欺诈。本…...
vue+vite 减缓首屏加载压力和性能优化
vuevite 减缓首屏加载压力和性能优化 1、预加载项目必需的组件2、模块加载优化3、HMR 热更新优化4 、环境配置优化5、代码模式优化6、高级优化技巧7、架构级优化打包压缩配置 在vuevite构建的工程里面,性能优化分为开发环境和打包后的生产环境,作为开发首…...
狂神SQL学习笔记十三:Delete 和 Truncate 详解
1、删除 保留表的结构不变,清空表的数据 truncate重新设置 自增列 计数器会归零,如果用delete删除,则自增不会变,重新插入数据时自增会从原来的地方开始...
封装实用的时间选择器组件
<template><!-- 使用该时间选择器组件,重置搜索表单的时候,注意得使用async await让重置表单操作完成后再发起请求 --><div class"dateTimePickerSelectWrap"><el-date-pickerv-model"arr":type"dateType…...
关于Blade框架对数字类型的null值转为-1问题
关于Blade框架对数字类型的null值转为-1问题 问题:最近项目遇到了一个问题,SpringBoot项目后端Long类型的数据,如果是NULL的话,返回给前端的时候是-1。如下图: 分析 是由于使用了 blade 框架,项目启动的…...
如何安全地管理固定功能设备?
什么是固定功能设备? 固定功能设备是指具有特定、单一或有限功能的设备,其功能在设计和制造时就被固定下来,通常难以进行大规模的功能扩展或修改。固定功能设备只需要运行特定的应用程序。自动取款机、销售商家用机器、支付站点以及其他专门…...
AttributeError: ‘NoneType‘ object has no attribute ‘pydev_do_not_trace‘
目录 问题描述1. **IDE缓存损坏**(此办法帮我解决问题)2. **PyCharm版本过旧**3. **Python解释器配置问题**4. **第三方库或插件冲突**5. **重置调试配置**其他建议问题原因分析 问题描述 print(ok) Traceback (most recent call last):File "D:\pycharm\PyCharm Communi…...
协享云图分析--3用户模块
用户表 -- 用户表 create table if not exists user (id bigint auto_increment comment id primary key,userAccount varchar(256) not null comment 账号,userPassword varchar(512) not null comment 密码…...
visual studio 如何在 release 模式下调试
在 Visual Studio 中,在 Release 模式下进行调试, 以下是具体步骤: 一、修改项目属性: 右键点击解决方案资源管理器中的项目,选择“属性”。 在“生成”选项卡中,找到“定义 DEBUG 常量”和“定义 TRACE 常量”&…...
课堂总结。
第三章第六节 Spark-SQL核心编程(五)自定义函数:UDF:val sparkConf new SparkConf().setMaster("local[*]").setAppName("SQLDemo")//创建SparkSession对象val spark :SparkSession SparkSession.builder()…...
JDBC 初认识、速了解
目录 一. JDBC的简介 1. 数据的持久化 2. 什么是JDBC 二. JDBC中常用的类和接口 1. Driver 接口 2. DriverManager 类 3. Connection 接口 4. Statement 接口 5. PreparedStatement接口 6. ResultSet 接口 三. 总结 前言 从现在开始就来讲解JDBC的相关知识了 本文的…...
双指针算法
引入 双指针顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是位置,在树、图结构中指向的是节点,通过或同向移动,或相向移动来维护、统计信息。 ——OI Wiki 接下来我们来看双指针的几个具体使用方法。 板子…...
关于TD算法的笔记【时间差分】
1. TD算法逻辑:TD算法即时间差分算法,结合了蒙特卡洛方法和动态规划思想,通过当前估计值和下一个时间步观测值更新状态价值估计,无需完整episode或环境完整信息。 2. 下一时刻估计值计算:下一时刻估计值为 r_{t 1}\g…...
计算斐波那契数列
1.对于斐波那契数列的理解: (1)常规 该数列由兔子繁衍的想法产生,故又“兔子数列” 其数值为:1、1、2、3、5、8、13、21、34 从数学定义上走:F(0)1,F(1)1, F(n)F(n - 1)F(n - 2)(n ≥ 2,n ∈…...
Oracle REGEXP_SUBSTR
在 Oracle 数据库中,REGEXP_SUBSTR 是一个基于正则表达式的字符串处理函数,用于从目标字符串中提取符合特定模式的子串。它比传统的 SUBSTR 函数更灵活,适用于复杂的模式匹配需求。以下是其核心原理、参数解析及实际案例详解: 一…...
无人机自主导航与路径规划技术要点!
一、自主导航与路径规划技术要点 1. 传感器融合 GPS/北斗定位:提供全局定位,但在室内或遮挡环境下易失效。 惯性测量单元(IMU)**:通过加速度计和陀螺仪实时追踪姿态,弥补GPS信号丢失时的定位空缺。 …...
DDS波形发生器仿真及技术原理
1. 引言 在现代数字信号处理、电路设计以及通信系统中,直接数字频率合成(DDS)技术因其高速、精细的频率分辨率以及连续相位输出等优点而得到广泛应用。本文主要探讨在DE2-115开发板平台上基于DDS技术实现波形发生器的设计与实践。通过该设计…...
Java使用ANTLR4解析IDL文件
文章目录 前言解析IDL文件准备两个IDL文件准备一个IDL Grammar文件maven配置生成Lexer Parser Listener Visitor代码新建实体类IDL解析遍历器单元测试 参考 前言 接着上篇:Java使用ANTLR4对Lua脚本语法校验,介绍了什么是ANTLR?/ 举了一个hel…...
04-Seata 深度解析:从分布式事务原理到 Seata 实战落地
Seata 深度解析:从分布式事务原理到 Seata 实战落地 一、分布式事务核心理论与挑战 1.1 分布式事务的本质难题 在微服务架构中,一次业务操作可能涉及多个服务的数据库操作,传统单体事务(ACID)无法跨越服务边界&…...
2025企业增长新引擎:AI Agent驱动人效跃迁|白皮书2.0发布
2025年伊始,一款名为DeepSeek-R1的国产AI大模型以其高性能、低成本等核心优势成功霸榜热搜,在全国乃至全球掀起一场以AI为核心的技术革新与管理变革。 面对这样极具颠覆性的革新命题,易路人力资源科技王天扬先生自2022年起就率团队持续专注于…...
IJCV-2025 | 深圳大学记忆增强的具身导航!ESceme:基于情景记忆的视觉语言导航
作者:Qi Zheng 1 , 2 ^{1,2} 1,2, Daqing Liu 3 ^{3} 3, Chaoyue Wang 3 ^{3} 3, Jing Zhang 2 ^{2} 2, Dadong Wang 4 ^{4} 4, Dacheng Tao 2 ^{2} 2单位: 1 ^{1} 1深圳大学电子与信息工程学院, 2 ^{2} 2悉尼大学计算机科学学院,…...
[第十六届蓝桥杯 JavaB 组] 真题 + 经验分享
A:逃离高塔(AC) 这题就是简单的签到题,按照题意枚举即可。需要注意的是不要忘记用long,用int的话会爆。 📖 代码示例: import java.io.*; import java.util.*; public class Main {public static PrintWriter pr ne…...
《分布式软总线:网络抖动下的数据传输“定海神针”》
在当下,智能设备之间的互联互通已成为生活与工作的刚需。分布式软总线作为实现这一愿景的关键技术,正日益凸显其重要性。然而,网络环境的复杂性,尤其是网络抖动频繁的情况,给分布式软总线的数据传输带来了严峻挑战。如…...
C++函数
函数 为什么要使用函数 已经有main函数,为什么还要自定义函数?:“避免重复制造轮子”,提高开发效率 函数的定义 函数的设计方法:先确定函数的功能、确定函数的参数、是否需要参数,参数的个数,…...
FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现
目录 1. 实现空闲任务 1.1 定义空闲任务的栈 1.2 定义空闲任务的任务控制块 1.3 创建空闲任务 2. 实现阻塞延时 2.1 vTaskDelay()函数 2.2 修改 vTaskSwitchContext()函数 3. SysTick 中断服务函数 4. SysTick 初始化函数 通过之前我们了解知道,任…...
PCIe 学习笔记(一)
系列文章目录 【PCIe】链路测试,数字工程师也要会看高速信号眼图! 【PCIe】链路训练状态机(LTSSM) - PCIe链路建立过程概述 【PCIe】PCIe设备的BDF与系统枚举过程 文章目录 系列文章目录PCIe LTSSM**1. 链路训练状态(Training States&#…...
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——LED、按键测试
1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试4.1 LED…...
深度为16,位宽8bit的单端口SRAM——学习记录
链接: 【Verilog HDL 训练】第 13 天(存储器、SRAM)-云社区-华为云 module sram #(parameter ADDR_BITS4)(input clk,input [ 7:0] addr,input [ 7:0] din,input ce,input we,output reg [ 7:0] dout);localparam MEM_DEPTH 1<<ADDR_…...
面向对象编程
在面向对象编程中,除了通过创建类的实例来访问其属性和方法外,还可以通过在一个类里创建另一个类的属性(本质上也是持有另一个类的实例引用)的方式来访问该类的属性和方法。下面为你详细解释这两种方式: 1. 通过创建实…...
远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态?
远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态? 查看Linux发行版信息 查看发行版名称和版本: cat /etc/*-release或 lsb_release -a查看内核版本&#…...
简单socket通信,回显 服务器程序与客户端程序之间的通信。
Socket 通信编程是一种基于网络的通信方式,允许不同主机上的程序通过网络进行数据交换。 实现结构try catch: 前情了解: 1.如何创建服务器端 定义ServerSocket套接字,需要等待客户端连接,阻塞,直到接入连接…...
C# 基类型和派生类型之间的转型
1.什么是基类型和派生类 基类型:父类,所有子类都继承自它。 派生类型:子类,继承了父类的属性和方法,还可以添加自己的新功能。 例子: class Animal { }//基类型 class Dog : Animal { }//派生类型 这…...
深度学习--激活函数
激活函数通过计算加权和并加上偏置来确定神经元是否应该倍激活,它们将输入信号转换为输出的可微运算。大多数激活函数都是非线性的,由于激活函数是深度学习的基础,下面简要介绍一些常见的激活函数。 1 RelU函数 最受欢迎的激活函数是修正线性…...
MySQL 缓存机制全解析:从磁盘 I/O 到性能优化
MySQL 缓存机制全解析:从磁盘 I/O 到性能优化 MySQL 的缓存机制是提升数据库性能的关键部分,它通过多级缓存减少磁盘 I/O 和计算开销,从而提高查询和写入的效率。 1. 为什么需要缓存? 数据库的性能瓶颈通常集中在磁盘 I/O 上。…...
【项目管理】第17章 项目干系人管理-- 知识点整理
项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...
编程语言到mysql ‘\‘到数量关系
在 MySQL 的模糊查询中,反斜杠 \ 的转义规则需要根据 转义层级 和 SQL 模式 来确定。以下是详细说明及示例: 一、默认模式下(未启用 NO_BACKSLASH_ESCAPES) 1. 规则说明 反斜杠转义:\ 是 MySQL 的默认转义字符。 转义…...
本地生活服务平台搭建方案详解:同城跑腿外卖系统源码一体化开发
在数字化浪潮不断推进的今天,本地生活服务平台正逐渐成为人们日常生活中不可或缺的一部分。从点餐外卖到同城帮买、帮送、帮取,用户对即时服务的需求愈发强烈。与此同时,创业者和本地商家也纷纷看好“同城服务 外卖配送”的一体化平台模式&a…...
索引语法SQL性能分析索引的使用
目录 准备: 一.索引语法 1). 创建索引 2). 查看索引 3). 删除索引 4).使用索引查询和普通查询的区别 二.SQL性能分析 1.SQL执行频率 2.慢查询日志 3.profile详情 4.explain 三.索引的使用 1.最左前缀法则 2.范围查询 3.索引失效情况 索引列运算 字符串不加引号…...
Docker技术基础新手入门教程
Docker技术深度解析:从架构到实战的运维指南 一、Docker核心架构与组件详解1. 什么是Docker?1. Docker引擎(Docker Engine)2. Docker对象模型二、关键技术深度剖析1. 容器隔离机制2. 容器网络模型网络驱动类型自定义网络实战3. 存储卷与数据持久化三种挂载方式对比示例:My…...
NO.93十六届蓝桥杯备战|图论基础-拓扑排序|有向无环图|AOV网|摄像头|最大食物链计数|杂物(C++)
有向⽆环图 若⼀个有向图中不存在回路,则称为有向⽆环图(directed acycline graph),简称 DAG 图 AOV⽹ 举⼀个现实中的例⼦:课程的学习是有优先次序的,如果规划不当会严重影响学习效果。课程间的先后次序可以⽤有向图表⽰ 在…...
Rust泛型与特性
文章目录 泛型函数中的泛型结构体与枚举中的泛型特性(trait)默认特性Trait作为参数特性做返回值 给结构体实现方法 泛型 泛型编程是现代编程语言中重要的机制 C是通过模板来实现泛型的,而C语言中是没有泛型的 泛型是用来表达抽象类型的机制…...
Day08【基于预训练模型分词器实现交互型文本匹配】
基于预训练模型分词器实现交互型文本匹配 目标数据准备参数配置数据处理模型构建主程序测试与评估总结 目标 本文基于预训练模型bert分词器BertTokenizer,将输入的文本以文本对的形式,送入到分词器中得到文本对的词嵌入向量,之后经过若干网络…...
基于uniapp 实现画板签字
直接上效果图 代码 <template><view class"container"><!-- 签名画布 --><view class"canvas-container"><canvas canvas-id"signCanvas" class"sign-canvas"touchstart"handleTouchStart"touc…...
5.跳表(skiplist)
1. 什么是跳表 -skiplist skiplist 本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key 或者 key/value 的查找模型。 skiplist ,顾名思义,首先它是一个 list 。实际上…...
GitHub 封禁中国 IP:影响、原因及应对
在技术全球化的当下,代码托管平台如同开发者的 “数字仓库”,而 GitHub 无疑是其中最广为人知的一座。但在 2025 年 4 月 13 日,一则令人震惊的消息在国内开发者社群中炸开了锅 ——GitHub 疑似封禁中国 IP。一时间,这一事件迅速成…...
基于工业操作系统构建企业数字化生态的实践指南
一、工业操作系统选型策略 工业操作系统(IIoT OS)的选型需从功能适配性、技术成熟度、生态兼容性三个维度综合评估。以玉麟科技DIOS平台为例,其 "云端 终端" 架构支持全球设备管理,通过工业知识模型实现设备健康度预测…...