DeepSeek-R1技术报告速读
春节将至,DeepSeek又出王炸!DeepSeek-R1系列重磅开源。本文对其技术报告做简单解读。
话不多说,show me the benchmark。从各个高难度benchmark结果来看,DeepSeek-R1已经比肩OpenAI-o1-1217,妥妥的第一梯队推理模型。同时蒸馏Qwen2.5-32B而来的DeepSeek-R1-32B也取得非常惊艳的效果,和OpenAI-o1-mini旗鼓相当。
天下苦SFT久矣,已有的公开研究无一例外都是采用SFT+RL的方式,首先需要大量的SFT数据进行指令微调。而DeepSeek不走寻常路。他们发现即使不使用SFT,也可以通过大规模强化学习 (RL) 显著提高推理能力。此外,通过包含少量冷启动数据进行SFT就可以进一步提高性能。
本文的几个主要贡献:
DeepSeek-R1-Zero :不用SFT直接进行RL,也能取得不错的效果。
DeepSeek-R1 :加入少量(数千量级)CoT数据进行SFT作为冷启动,然后再进行RL,可以取得更优的性能。同时回答更符合人类偏好。
用DeepSeek-R1的样例去蒸馏小模型,能取得惊人的效果。
下面会逐一介绍。
DeepSeek-R1-Zero
直接从DeepSeek-V3-Base开搞,仍然用DeepSeek独家定制的GRPO,使用如下平平无奇的PE模版。
RM方面,考虑到是推理任务,没有训练常规的稠密奖励模型,而是采用了两种奖励方式结合:
准确性奖励:对于数学问题,直接匹配标准答案;对于代码问题,基于编译执行单测去验证。
格式奖励:看CoT过程是否以标准包裹。
就是这么看起来似乎暴力又简单的方法,效果却出奇地好。
看起来随着训练步数的增加,性能稳步提升,达到和OpenAI-o1-0912接近的水平。
并且观察到了明显的“进化”现象,随着训练步数的增加,输出平均长度也在增加。意味着LLM似乎自己已经潜移默化学会了进行更多的思考和推理,达到更好的效果。
甚至出现了自主的“Aha Moment”情况,突然就能开始反思。DeepSeek顿悟了,DeepSeek的兄弟们也顿悟了,我似乎也顿悟了。怎么只是平平无奇的奖励信号,就能让它学会这么多?还得是RL!!!
真就这么完美?SFT完全不必要了?显然也不是,DeepSeek的兄弟们也发现了一些问题,比如,DeepSeek-R1-Zero 生成的答案可读性相对差、存在混合语言输出情况(这个似乎QwQ也比较明显)。为了让模型说人话,还是得加点SFT,这就到DeepSeek-R1的舞台了。
DeepSeek-R1
DeepSeek-R1-Zero已经证明了,完全不进行SFT, 直接RL就能显著提升LLM的推理能力;但是同时输出的可读性、混合语言输出问题还是老大难。可别忘了SFT不就是为了遵循指令,让LLM模仿说人话吗?那把SFT阶段再加上不就得了。既然完全不SFT也能有非常好的效果,那少加一点是不是就能让LLM学会说人话了,同时推理能力也能进一步提升呢?DeepSeek-R1采用如下4个阶段,又把能力进一步加强。
(一)少量数据冷启动
采用一定的手段收集少量高质量数据:比如对于长CoT数据,使用few-shot,直接提示DeepSeek-R1-Zero通过反思和验证生成详细答案,然后通过人工注释者的后处理来细化结果。
总共收集了数千个样本,相比完全不用SFT,收集的样本进行SFT,可以显著增强可读性;同时后续的实验也证明了通过少量数据冷启动也能进一步提升推理能力。
(二)对推理场景进行RL
然后对数学、代码等推理场景进行RL。这里没啥好说的,和DeepSeek-R1-Zero一样的方式。针对DeepSeek-R1-Zero输出中语言混合的情况,额外增加一个奖励:语言一致性奖励,统计输出中目标语言的占比作为奖励信号。将原始的准确性奖励与语言一致性奖励求和作为最终奖励,进行过程反馈。
(三)拒绝采样和SFT
这一步主要是为了提升模型的通用能力,通过构建两部分的数据进行SFT来实现。
推理数据:采用拒绝采样的方式从前一阶段得到的模型生成推理过程,同时额外引入一些无法用规则进行奖励的数据(这部分数据使用DeepSeek-V3通过LLM-as-judge的方式进行奖励,比较GroudTruth与实际输出)。同时,过滤掉了包含混合语言、长段落、代码块的CoT数据。总计有60w样本。
非推理数据:使用DeepSeek-V3生成、使用DeepSeek-V3的SFT数据,共计20w推理无关的样本。
这一阶段总共生成了80w样本,用DeepSeek-V3-Base 进行了2个epoch的SFT。
(四)适配所有场景的RL阶段
最后为了同时平衡推理能力和通用能力,又进行了一次RL。对于不同的数据类型,采用不同的prompt和奖励。
对于推理数据,使用DeepSeek-R1-Zero中的方法,该方法在数学、编程和逻辑推理领域使用基于规则的奖励指导学习过程。对于通用数据,使用通用的RM来进行奖励。基本复用DeepSeek-V3的方式。对于有用性,专注于评估最终的summary,确保评估对用户的实用性和相关性,同时尽量减少对底层推理过程的干扰。对于无害性,评估模型的整个响应,包括推理过程和总结,以识别和减轻生成过程中可能出现的任何潜在风险、偏见或有害内容。
最终,奖励信号和多样化数据分布的整合使得最终的模型既能保持推理能力,又能满足有用性和无害性,取得比较好的用户体验。
实验结果自然是遥遥领先,和OpenAI-o1-1217不分伯仲。
蒸馏小模型
直接用DeepSeek-R1阶段三:“拒绝采样和SFT” 时的数据对小模型进行SFT,不包含RL阶段,就能取得比较好的效果。
一些讨论
(一)蒸馏 v.s. RL
从实验结果来看,蒸馏是又便宜又实用。用小的模型哼哧哼哧一顿SFT+RL操作,最后的效果还远不如直接蒸馏更好性能模型的输出直接SFT。
一些暂未成功的尝试
这里DeepSeek团队也是诚意满满,分享了几个业界呼声很高,但是他们暂时没尝试成功的方法。
PRM:指出PRM的几个主要限制,影响了它的规模化应用。
1、在一般推理过程中明确定义细粒度的步骤比较困难。
2、对步骤打标难以扩展,采用自动标注难以获得较高准确率,手动标注又难以规模化应用。
3、引入基于模型的PRM,不可避免地会遇到reward hacking, 重新训练奖励模型需要额外的训练资源,并使整个训练流程复杂化。
MCTS:他们也尝试了实用MCTS,但是过程中遇到了一些问题,1是搜索空间过大,虽然设置了最大扩展限制使得不会无限搜索,但是容易陷入局部最优;2是value model直接影响生成的质量,而训练一个细粒度的value model本质上是困难的,这使得模型比较难以迭代改进。
(二)一些未来的改进方向
通用能力:DeepSeek-R1的通用能力仍然不及DeepSeekV3。接下来,DeepSeek团队计划探索如何利用长CoT来提升这些领域的任务表现。
语言混合:DeepSeek-R1目前针对中文和英文进行了优化,但是在处理其他语言以及语言遵循方面还是会有问题。
PE:DeepSeek-R1对Prompt非常敏感。few-shot提示会持续降低其性能。这里建议用户直接描述问题并指定输出格式(采用zero-shot,不要加示例),以获得最佳结果。
软件工程任务:由于长时间的评估会影响RL过程的效率,大规模RL尚未在软件工程任务中广泛应用。因此,DeepSeek-R1在软件工程基准测试上未显示出比DeepSeek-V3更大的改进。未来版本将通过在软件工程数据上实施拒绝采样或在RL过程中引入异步评估来提高效率。
相关文章:
DeepSeek-R1技术报告速读
春节将至,DeepSeek又出王炸!DeepSeek-R1系列重磅开源。本文对其技术报告做简单解读。 话不多说,show me the benchmark。从各个高难度benchmark结果来看,DeepSeek-R1已经比肩OpenAI-o1-1217,妥妥的第一梯队推理模型。…...
560. 和为 K 的子数组
【题目】:560. 和为 K 的子数组 方法1. 前缀和 class Solution { public:int subarraySum(vector<int>& nums, int k) {int res 0;int n nums.size();vector<int> preSum(n 1, 0); // 下标从1开始存储for(int i 0; i < n; i) {preSum[i 1]…...
鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)
目录 1)仓颉的SDK下载 1--进入仓颉的官网 2--点击图片中的下载按钮 3--在新跳转的页面点击即刻下载 4--下载 5--找到你们自己下载好的地方 6--解压软件 2)仓颉编程环境配置 1--找到自己的根目录 2--进入命令行窗口 3--输入 envsetup.bat 4--验证是否安…...
NodeJs / Bun 分析文件编码 并将 各种编码格式 转为 另一个编码格式 ( 比如: GB2312→UTF-8, UTF-8→GB2312)
版本号 "iconv-lite": "^0.6.3", "chardet": "^2.0.0",github.com/runk/node-chardet 可以识别文本是 哪种编码 ( 大文件截取一部分进行分析,速度比较快 ) let bun_file_obj Bun.file(full_file_path) let file_bytes await bun_f…...
Java学习笔记(二十五)
1 Kafka Raft 简单介绍 Kafka Raft (KRaft) 是 Kafka 引入的一种新的分布式共识协议,用于取代之前依赖的 Apache ZooKeeper 集群管理机制。从 Kafka 2.8 开始,Kafka 开始支持基于 KRaft 的独立模式,计划在未来完全移除 ZooKeeper 的依赖。 1…...
Baklib如何结合内容中台与人工智能技术实现数字化转型
内容概要 在当前快速发展的数字环境中,企业面临着转型的紧迫性与挑战,尤其是在内容管理和用户互动的领域。内容中台作为一种集成化的解决方案,不仅能够提高企业在资源管理方面的效率,还能够为企业提供一致性和灵活性的内容分发机…...
git困扰的问题
.gitignore中添加的某个忽略文件并不生效 把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效, gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。 解决方…...
第05章 12 可视化热量流线图一例
下面是一个使用VTK(Visualization Toolkit)和C编写的示例代码,展示如何在一个厨房模型中可视化热量流线图,并按照热量传递速度着色显示。这个示例假设你已经安装了VTK库,并且你的开发环境已经配置好来编译和运行VTK程序…...
Vue组件开发-使用 html2canvas 和 jspdf 库实现PDF文件导出 设置页面大小及方向
在 Vue 项目中实现导出 PDF 文件、调整文件页面大小和页面方向的功能,使用 html2canvas 将 HTML 内容转换为图片,再使用 jspdf 把图片添加到 PDF 文件中。以下是详细的实现步骤和代码示例: 步骤 1:安装依赖 首先,在项…...
LTV预估 | 深度学习PLTV之开山鼻祖ZILN
🤣 这一集让我们欢迎基于深度学习的pltv方法:ZILN,ZILN可以说是后面很多研究的参考方法,我看了好几篇最新的pltv论文,都是基于ZILN来做的。 文章目录 1 精简总结2 背景&挑战:3 方法:实验&am…...
MFC常用操作
1,获取STATIC控件的值 CString str; m_STATIC2.GetWindowText(str);//获取STATIC控件的值 MessageBox(str); 2.设置EDIT控件的值 m_EDIT2.SetWindowText(str);//设置EDIT控件的值 GetDlgItem(IDC_EDIT1)->SetWindowText("Leave");//设置EDIT控件的值…...
第24篇 基于ARM A9处理器用汇编语言实现中断<六>
Q:怎样设计ARM处理器汇编语言程序使用定时器中断实现实时时钟? A:此前我们曾使用轮询定时器I/O的方式实现实时时钟,而在本实验中将采用定时器中断的方式。新增第三个中断源A9 Private Timer,对该定时器进行配置&#…...
【学习笔记】计算机网络(二)
第2章 物理层 文章目录 第2章 物理层2.1物理层的基本概念2.2 数据通信的基础知识2.2.1 数据通信系统的模型2.2.2 有关信道的几个基本概念2.2.3 信道的极限容量 2.3物理层下面的传输媒体2.3.1 导引型传输媒体2.3.2 非导引型传输媒体 2.4 信道复用技术2.4.1 频分复用、时分复用和…...
2025多目标优化创新路径汇总
多目标优化是当下非常热门且有前景的方向!作为AI领域的核心技术之一,其专注于解决多个相互冲突的目标的协同优化问题,核心理念是寻找一组“不完美但均衡”的“帕累托最优解”。在实际中,几乎处处都有它的身影。 但随着需求场景的…...
图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)
官网编译文档链接: https://doc.percipio.xyz/cam/latest/getstarted/sdk-ros2-compile.html 国内gitee下载SDK链接: https://gitee.com/percipioxyz 国外github下载SDK链接: https://github.com/percipioxyz 1.Camport ROS2 SDK 介绍 1.1 …...
字符设备驱动模版-中断
字符设备驱动模版-中断 思维导图在线高清查看:https://www.helloimg.com/i/2025/01/27/679791b5257c0.png 修改设备树 1添加pinctrl节点 1创建对应的节点 在 iomuxc 节点的 imx6ul-evk 子节点下 2添加“fsl,pins”属性 3在“fsl,pins”属性中添加PIN配置信息 …...
STM32 旋转编码器
旋转编码器简介 旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向 类型:机械触点式/霍尔传…...
java ,springboot 对接支付宝支付,实现生成付款二维码,退款,查询订单状态等接口
查看文档 支付宝文档地址: 小程序文档 - 支付宝文档中心 使用沙箱环境 沙箱登录地址 登录 - 支付宝 点击查看 才能看钥匙截图写错了。。 问号可以看默认加密方式 点击沙箱帐号 这里我们就具备所有条件了 实战开始 pom文件增加依赖 <dependency> <gro…...
OpenCV:形态学梯度
目录 简述 1. 用图像运算和腐蚀实现形态学梯度 1.1 代码示例 1.2 运行结果 2. 形态学梯度接口 2.1 参数解释 2.2 代码示例 2.3 运行结果 3. 形态学梯度与边缘检测 4. 形态学梯度的应用场景 5. 注意事项 相关阅读 OpenCV:图像的腐蚀与膨胀-CSDN博客 简述…...
图漾相机搭配VisionPro使用简易教程
1.下载并安装VisionPro软件 请自行下载VisonPro软件。 VisionPro 9.0/9.5/9.6版本经测试,可正常打开图漾相机,建议使用图漾测试过的版本。 2.下载PercipioCameraForVisionPro软件包 使用浏览器下载:https://gitee.com/percipioxyz/camport3…...
《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》重印P126、P131勘误
勘误:打圈的地方有指数二字。 指数滤波器本身是错误的概念,我在书上打了一个叉,排版人员误删了。 滤波器部分从根本上有问题,本来要改,但是时间不够了。 和廖老师讨论多次后,决定大动。指数滤波器的概念…...
4、PyTorch 第一个神经网络,手写神经网络的基本部分组成
假设有一个二维数据集,目标是根据点的位置将它们分类到两个类别中(例如,红色和蓝色点)。 以下实例展示了如何使用神经网络完成简单的二分类任务,为更复杂的任务奠定了基础,通过 PyTorch 的模块化接口&#…...
Vue实现div滚动,并且支持top动态滚动
如果你知道距离目标 div 顶部的像素值,并希望通过传入 top 参数来实现滚动到对应区域,可以使用 window.scrollTo 方法。 编写滚动方法 const scrollToDiv (targetDiv, top) > {if (targetDiv) {top top * targetDiv.value.scrollHeight / data.he…...
【QT】- QUdpSocket
QUdpSocket 是 Qt 自带的一个类,属于 Qt 网络模块,用于进行 UDP(用户数据报协议) 通信。它提供了简便的接口来发送和接收 UDP 数据报(datagrams)。 UDP 是一种无连接的协议,适用于那些不需要确…...
WGCLOUD运维工具从入门到精通 - 如何设置主题背景
需要升级到WGCLOUD的v3.5.7或者以上版本,才会支持自定义设置主题背景色 WGCLOUD下载:www.wgstart.com 我们登录后,在右上角点击如下的小图标,就可以设置主题背景色了,包括:经典白(默认&#x…...
【Elasticsearch】中数据流需要配置索引模板吗?
是的,数据流需要配置索引模板。在Elasticsearch中,数据流(Data Streams)是一种用于处理时间序列数据的高级结构,它背后由多个隐藏的索引组成,这些索引被称为后备索引(Backing Indices࿰…...
Python 合并 Excel 单元格
合并 Excel 单元格是 Excel 数据处理和表格设计中的一项常用操作。例如,在制作表格标题时,经常会将多个单元格合并,使标题能够跨列显示,更加醒目和美观。此外,当对数据进行分类时,为了使同一类别的数据在视…...
C++中左值和右值的概念
文章目录 一、概要二、左值(Lvalue)二、右值(Rvalue)三、左值引用和右值引用四、左值和右值的使用场景五、总结 一、概要 在 C 中,左值(Lvalue)和右值(Rvalue)是两个非常…...
27.日常算法
1. 最后一个单词的长度 题目来源 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s “Hello Wor…...
动态规划DP 数字三角形模型 传纸条(题目分析+C++完整代码)
传纸条 原题链接 AcWing 275. 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题。 一次素质拓展活动中,班上同学安排坐成一个 m行 n 列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此&#x…...
Spark入门(Python)
目录 一、安装Spark 二、Spark基本操作 一、安装Spark pip3 install pyspark 二、Spark基本操作 # 导入spark的SparkContext,SparkConf模块 from pyspark import SparkContext, SparkConf # 导入os模块 import os # 设置PYSPARK的python环境 os.environ[PYSPARK_PYTHON] &…...
.NET Core缓存
目录 缓存的概念 客户端响应缓存 cache-control 服务器端响应缓存 内存缓存(In-memory cache) 用法 GetOrCreateAsync 缓存过期时间策略 缓存的过期时间 解决方法: 两种过期时间策略: 绝对过期时间 滑动过期时间 两…...
IoTDB 2025 春节值班与祝福
2025 春节快乐 瑞蛇迎吉庆,祥光映华年,2025 春节已近在眼前。社区祝福 IoTDB 的所有关注者、支持者、使用者 2025 新年快乐,“蛇”来运转! IoTDB 团队的春节放假时间为 2025 年 1 月 27 日至 2 月 4 日,1 月 25 日、26…...
Qt Ribbon使用实例
采用SARibbon创建简单的ribbon界面 实例代码如下所示: 1、头文件: #pragma once #include <SARibbonBar.h> #include "SARibbonMainWindow.h" class QTextEdit; class SAProjectDemo1 : public SARibbonMainWindow { Q_OBJECT pub…...
maven的打包插件如何使用
默认的情况下,当直接执行maven项目的编译命令时,对于结果来说是不打第三方包的,只有一个单独的代码jar,想要打一个包含其他资源的完整包就需要用到maven编译插件,使用时分以下几种情况 第一种:当只是想单纯…...
Linux——rzsz工具
rzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件. 安装完毕之后可以通过拖拽的方式将文件上传过去. 安装rzsz工具 rz:从Windows机器上传到远程Linux机器(或者直接把文件托进Xshell中) sz:将文件从Linux远…...
航空客户价值的数据挖掘与分析(numpy+pandas+matplotlib+scikit-learn)
文章目录 航空客户价值的数据挖掘与分析(numpy+pandas+matplotlib+scikit-learn)写在前面背景与挖掘目标1.1 需求背景1.2 挖掘目标1.3 项目概述项目分析方法规划2.1 RFM模型2.2 LRFMC模型指标2.3 分析总体流程图数据抽取探索及预处理3.1 数据抽取3.2 数据探索分析3.3 数据预处…...
【文星索引】搜索引擎项目测试报告
目录 一、项目背景二、 项目功能2.1 数据收集与索引2.2 API搜索功能2.3 用户体验与界面设计2.4 性能优化与维护 三、测试报告3.1 功能测试3.2 界面测试3.3 性能测试3.4 兼容性测试3.5 自动化测试 四、测试总结4.1 功能测试方面4.2 性能测试方面4.3 用户界面测试方面 一、项目背…...
【C++】特殊类设计、单例模式与类型转换
目录 一、设计一个类不能被拷贝 (一)C98 (二)C11 二、设计一个类只能在堆上创建对象 (一)将构造函数私有化,对外提供接口 (二)将析构函数私有化 三、设计一个类只…...
Nxopen 直齿轮参数化设计
NXUG1953 Visualstudio 2019 参考论文: A Method for Determining the AGMA Tooth Form Factor from Equations for the Generated Tooth Root Fillet //FullGear// Mandatory UF Includes #include <uf.h> #include <uf_object_types.h>// Internal I…...
Vue.js组件开发-实现HTML内容打印
在Vue项目中实现打印功能,可以借助vue-html-to-paper插件来完成。 步骤 创建Vue项目:如果还没有Vue项目,可以使用Vue CLI来创建一个新的项目。 npm install -g vue/cli vue create vue-print-template cd vue-print-template安装vue-html-…...
大模型GUI系列论文阅读 DAY4续:《Large Language Model Agent for Fake News Detection》
摘要 在当前的数字时代,在线平台上虚假信息的迅速传播对社会福祉、公众信任和民主进程构成了重大挑战,并影响着关键决策和公众舆论。为应对这些挑战,自动化假新闻检测机制的需求日益增长。 预训练的大型语言模型(LLMs࿰…...
Day27-【13003】短文,线性表两种基本实现方式空间效率、时间效率比较?兼顾优点的静态链表是什么?如何融入空闲单元链表来解决问题?
文章目录 本次内容总览第四节,两种基本实现方式概览两种基本实现方式的比较元素个数n大于多少时,使用顺序表存储的空间效率才会更高?时间效率比较?*、访问操作,也就是读运算,读操作1、插入,2、删…...
Scrapy如何设置iP,并实现IP重用, IP代理池重用
前置知识 1/3乐观锁 2/3 Scrapy流程(非全部) 3/3 关于付费代理 我用的"快代理", 1000个ip, 每个ip1min的有效期, 你用的时候, 把你的链接, 用户名填上去就行 设置代理IP 🔒 & 帮助文档: ①meta ②meta#proxy$ 语法: ①proxy的设置: Request对象中…...
动手学图神经网络(4):利用图神经网络进行图分类
利用图神经网络进行图分类:从理论到实践 引言 在之前的学习中,大家了解了如何使用图神经网络(GNNs)进行节点分类。本次教程将深入探讨如何运用 GNNs 解决图分类问题。图分类是指在给定一个图数据集的情况下,根据图的一些结构属性对整个图进行分类,而不是对图中的节点进…...
C++游戏开发深度解析
引言 在本篇文章中,我们将深入探讨C在游戏开发中的应用,包括内存管理、面向对象编程(OOP)、模板使用等,并通过实际代码示例来帮助理解。 内存管理与智能指针 cpp 深色版本 #include <iostream> #include <…...
ultralytics 是什么?
ultralytics 是一个用于计算机视觉任务的 Python 库,专注于提供高效、易用的目标检测、实例分割和图像分类工具。它最著名的功能是实现 YOLO(You Only Look Once) 系列模型,特别是最新的 YOLOv8。 1. YOLO 是什么? YO…...
【从零到一,C++项目实战】CineShare++(基于C++的视频点播系统)
🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据…...
kaggle-ISIC 2024 - 使用 3D-TBP 检测皮肤癌-学习笔记
问题描述: 通过从 3D 全身照片 (TBP) 中裁剪出单个病变来识别经组织学确诊的皮肤癌病例 数据集描述: 图像临床文本信息 评价指标: pAUC,用于保证敏感性高于指定阈值下的AUC 主流方法分析(文本) 基于CatBoo…...
C语言深入解析 printf的底层源码实现
深入解析 printf 的底层源码实现 printf 是 C 标准库中最常用的函数之一,用于格式化输出字符串。它的底层实现复杂且高效,包含多个模块化的函数和机制。本文结合 GNU C Library(glibc)的源码,详细分析 printf 的实现原…...