小林在街角开了家川菜馆,招牌菜“翡翠鱼片”研发了三个月,朋友试吃都说好。可小林心里没底:没有参照,怎么知道这盘鱼是惊艳还是及格?他决定请三位老饕盲测,把“翡翠鱼片”和隔壁老店三十年的“水煮鱼”端上同一张桌。结果翡翠鱼片赢了,可老饕一句话问住了他:“你用草鱼复刻过水煮鱼吗?调过它的花椒量吗?分三天各做一次比过吗?都没做,你怎么证明赢的是你的配方?” 小林这才意识到:选什么参照菜、怎么把参照菜原汁原味复刻、调料浓度是否对齐、多试几次排除手气、用同一套标准评判、把过程写成别人也能照做的菜谱——这一整套流程,恰恰就是 AI 研究中 Baseline 选择与复现的全部套路。本文就用这间小馆的故事,带你完整走一遍这套方法论。
对 AI 从业者而言,Baseline 的选择与复现是实验可信度的地基:掌握它,你的每个“涨点”才经得起同行复现和审稿人追问——这是论文被认可、方法被采纳的信任起点。
可视化演示
展示SOTA、经典方法与新方法的训练性能曲线对比,以及实验条件对齐的公平性评估指标。
本节配有交互动效(进入视口后自动加载,约 3KB)。
训练性能对比 SOTA方法达到94.2%精度,作为性能上界 经典Baseline稳定在89.5%,验证方法有效性 Acc=94.2% (SOTA) 所有方法在相同条件下训练评估
Baseline概念价值
小林在街角开了一家川菜馆,招牌菜“翡翠鱼片”研发了三个月,朋友试吃都说好。但小林心里始终不踏实——没有参照,他分辨不出这盘鱼是“还不错”还是“真惊艳”。于是他想到一个笨办法:把隔壁老店做了三十年的水煮鱼,端到同一张桌子上,两道菜一起给老饕盲测。
在 AI 研究中,这道“隔壁老店的水煮鱼”就是 Baseline——一个领域内公认、稳定、可复现的参照方法。而小林研发的“翡翠鱼片”就是“新方法”。Baseline 不是用来被碾压的靶子,而是一把“石蕊试纸”:只有摆在它旁边,你的新方法到底有没有进步,才有一个诚实的答案。
Baseline 通常扮演两种角色:强 Baseline 代表领域当前较先进的方法(接近 SOTA),用来证明“我超过了强的”;朴素 Baseline 代表简单的通用解法(如线性模型),用来展示“任务本身有挑战性”。论文实验的核心,就是报告新方法与这些参照之间的性能增益——差多少、为什么差、差在哪。
就像小林必须先让“翡翠鱼片”和水煮鱼出现在同一张菜单、同一次盲测里,研究者也必须让新方法和 Baseline 站在同一个测试台上。没有 Baseline 的实验,就像没有对比的试菜会——热闹是热闹,但没有说服力。
- 新方法得分 \(S_{\text{new}}\)你提出的新模型在同一测试集、同一指标下的得分,比如准确率 88.5%。
- Baseline 得分 \(S_{\text{base}}\)选定的参照模型在完全相同条件下测得的分数,例如 84.2%。
- 计算增益 \(\Delta\)两者相减。差值大于 0 说明新方法确实领先;差值接近 0 或为负,则“涨点”不成立。
Baseline选择标准
选参照菜这件事,差点难倒小林。比水煮鱼?它太家常,赢了可能被说“欺负老实菜”;比松鼠桂鱼?它工序复杂,万一对方的招牌做法自己复现得不像,输了也不服气。小林这才发现,选参照本身就是门手艺。
审稿人最常问的问题之一就是:“为什么选这几个 Baseline?” 选得太老,被批“无视领域进展”;选得太偏,被批“回避强方法”。新手常见的崩溃时刻,是在 rebuttal(论文辩论)阶段被审稿人指出“你的 Baseline 没有代表性”,然后才发现自己的对比列表东拼西凑。
选择 Baseline 的四个标准:代表性——属于主流方法家族,被领域广泛认可;时效性——近年仍被持续引用,而非早已淘汰;成熟度——有官方开源实现,性能稳定,不依赖运气;可复现性——论文披露的细节足够让你在两周内复现。一个稳妥的组合是:一个强 Baseline + 一个朴素 Baseline + 一到两个近年变体。
选 Baseline 就像小林最终敲定两盘参照菜:一盘是“三十年的水煮鱼”(经典强 Baseline),一盘是“街角新派的番茄鱼”(近年变体)。经典稳住下限,新锐代表潮流,你的“翡翠鱼片”只有同时赢了这两类对手,才配得上“招牌菜”三个字。
- 候选集合 \(\mathcal{C}\)把领域内所有候选方法收集起来,形成一个待筛选列表。
- 四个评分维度代表性、时效性、成熟度、可复现性,每个维度给候选方法打分。
- 加权求和按研究主题对维度加权(如追求稳定性则加大 \(w_4\)),总分最高的候选胜出。
复现实验设计
小林拿到对手的菜谱,上面写着:“草鱼片、豆瓣酱、花椒、豆芽,炒香加水,下鱼片煮两分钟。” 照着做,第一锅完全不是那个味:汤浑、鱼老、花椒不麻。菜谱没问题,缺的是菜谱外的细节——油温、火候、豆瓣酱品牌、腌鱼时间。
复现 Baseline 的体验一模一样。论文公开了代码和主要超参数,但数据增强的顺序、学习率调度的细节、随机裁剪的参数、BN 的 momentum 这些“菜谱外的细节”,恰恰决定了最终数字。复现不是“跑个官方代码”,而是用侦探的方式把每个细节逼问出来。
标准复现流程:① 获取官方源码,若缺失则找被广泛验证的第三方实现并注明出处;② 搭建一致环境(Python、CUDA、依赖库版本逐一固定);③ 对齐数据划分与预处理(训练/验证/测试集边界必须一致);④ 按论文训练流程逐步执行,并把每一步的耗时、显存都记录下来以备排查。当复现结果与论文报告的差距在 ±0.5% 这一常见容差内时,才可判定复现成功。
小林换了茂汶花椒、把油温控制在七成热、鱼片腌足 20 分钟,第三锅终于做出和隔壁一个味道。那一刻他明白:所谓“复现”,不是做出“一道相似的菜”,而是做出“同一道菜”。当偏差归零,你才真正站到了和对手同一条起跑线上。
- 声称结果 \(\hat{S}\)论文中报告的 Baseline 性能,比如 94.5%——这是复现目标的“标准答案”。
- 复现结果 \(S'\)你在自己环境、自己代码下实际跑出的分数。
- 求绝对偏差 \(D\)两者相减取绝对值。偏差越小,复现可信度越高;超过容差就要回去排查细节。
超参数对齐
后来小林听说了一个秘密:隔壁水煮鱼的秘诀之一是双倍花椒。小林想:如果我做水煮鱼时按普通花椒放,做自己翡翠鱼片时放双倍花椒,岂不是赢得更容易?可他转念一想——这样赢了,还算是“我的手艺赢”吗?
这正是超参数对齐要回答的问题。很多论文的“涨点”,不是架构真的更好,而是给自己的方法精心调了 500 组超参数,给 Baseline 用的是库默认值。审稿人把这种对比叫作“不公平比较”,一眼就能看穿。超参数对齐,就是为了杜绝这种“偷偷加花椒”。
对齐的四条铁律:① Baseline 的参数优先采用原论文报告的最优值,而不是自己随手设的默认值;② 两个方法共享的超参数(学习率、权重衰减、batch size)必须相同;③ 允许双方各自微调,但调参预算(搜索次数、GPU 时长)必须对等;④ 所有对参数的修改逐条记录进附录。计算“相对参数差异”可以帮你自查:如果某个超参数与 Baseline 原值差了一倍以上,就必须警惕是否公平。
一道菜好吃,到底赢在配方还是赢在偷偷加了双倍花椒?只有两道菜用同一锅油、同一批鱼、同一位师傅掌勺,味道差异才能诚实归因于配方本身。超参数对齐,就是把实验台上的“花椒罐”放到两盘菜中间,谁也别想多舀一勺。
- 自己的参数 \(\theta_{\text{ours}}\)你实验里实际用到的某个超参数,比如学习率设为 0.001。
- Baseline 原始参数 \(\theta_{\text{base}}\)原论文为 Baseline 报告的最优学习率,比如 0.0005。
- 相对差异 \(\delta_{\theta}\)以 Baseline 参数为分母求相对偏差,数值过大说明双方不在同一个“调料浓度”上比较。
随机性控制
水煮鱼连续做了三天,小林发现味道时好时坏:周一的鱼片偏老,周二的汤偏咸。不是手艺退步,而是市场的鱼大小不一、豆瓣酱批次换了。食客说“昨天那锅更好吃”,可“昨天”能代表小林的真实水平吗?
深度学习实验同样充满随机性:权重初始化的随机数、数据加载的洗牌顺序、GPU 浮点运算的微小差异,都会让“两天跑同一个代码”得到不同结果。今天 85.3%,明天 84.7%,你该信哪个?如果只报最高分,就是在用“周一的鱼片”糊弄人。
随机性控制三板斧:① 固定所有随机源——numpy、random、torch 的种子在训练前统一设置;② 同一配置多次运行(通常 3~5 次),覆盖不同种子;③ 报告均值 ± 标准差,而不是最好成绩。此外要记录硬件型号,因为不同 GPU 的浮点行为不同,跨卡对比时这部分差异要写入讨论。
聪明的厨师会一道菜做十次,记录咸度、嫩度、出锅时间,最后报一个“平均表现”和“波动范围”,而不是挑最好看的一次端给评委。控制随机性,就是让你的实验结果像开了三十年的老字号一样稳定,而不是像碰运气的路边摊。
- 多次运行收集样本 \(x_i\)固定所有条件、只更换随机种子,运行 N 次,得到 N 个性能分数。
- 均值 \(\mu\)把 N 次结果平均,代表方法在随机性影响下的“真实水平”。
- 标准差 \(\sigma\)衡量每次结果围绕均值的离散程度,波动越大,方法越“看运气”。
公平比较原则
盲测那天,小林的翡翠鱼片赢了。但一位老饕提出了尖锐的质疑:“你的鱼用的是鲈鱼,水煮鱼用的是草鱼,鱼都不一样,怎么知道是你的配方赢,而不是食材赢?” 小林哑口无言。
AI 实验的“食材公平”同样关键:数据集划分、评估指标、算力预算,任何一项不对等,审稿人都能挑出你的毛病。你要证明的是“我的方法更好”,而不是“我的设备更好”或“我的评测代码更宽松”。
公平比较三把尺:数据公平——训练/验证/测试划分逐条一致,不允许用自己的划分偷偷换数据;指标公平——使用官方发布的评估代码,而不是自己重写一个“更宽容”的版本;资源公平——记录并约束双方的 FLOPs、显存占用与训练时长,新方法用 8 张卡赢过 Baseline 的 1 张卡,这叫算力碾压,不叫方法胜利。此外,用消融对照(把新方法拆掉一个组件看性能掉多少)来回答“这个模块到底有没有用”。
真正的厨艺大赛,所有选手用同一种鱼、同一口锅、同一包盐,只比手法和配方。Baseline 公平比较的终极奥义,就是让实验里的变量只剩下“你的方法”这一个,其他全部锁死。这样赢得才硬气,输了也服气。
- 新方法均值 \(\mu_{\text{new}}\)新方法多次运行的平均性能,例如 89.1%。
- Baseline 均值 \(\mu_{\text{base}}\)Baseline 在同样条件下多次运行的平均值,例如 84.2%。
- 相对提升率把绝对差距除以 Baseline 自身水平,消除数据集难度的影响,不同任务间也可粗略比较。
实验报告规范
比赛结束后,小林把“翡翠鱼片”的配方写成大字报贴在店里:“鱼片 200 克,腌 20 分钟,油温七成,花椒 10 克。” 可没人能照做——“腌 20 分钟”是加盐腌还是加蛋清腌?“油温七成”怎么判断?配方缺了细节,等于没有配方。
论文的实验部分就是你的“配方”。AI 领域近年有个著名的“复现危机”:大量论文只报数字不报细节,导致同行无法复现。研究者的学术声望,很大程度上建立在你愿意公开多少“火候细节”之上。
可信实验报告四件套:① 结果表格规整——每个方法 × 每个数据集给出均值 ± 方差,并标注最佳结果;② 配置公开——超参数、随机种子、环境版本全部放进附录或开源仓库;③ 误差分析——解释方差来源(数据噪声、初始化敏感、硬件差异)而不是回避;④ 发布复现包——代码 + 数据处理脚本 + 一键运行说明。整体可信度可以用“复现率”这个指标来自检。
三个月后,一位外地厨师照着小林升级版的“视频菜谱 + 配料链接 + 温度计刻度”做出了几乎一样的味道。小林终于明白:最好的菜谱,是让别人也能做出这道菜的菜谱。最好的论文,是让别人也能复现这篇论文的论文——你的报告越完整,学术信誉就越经得起时间检验。
- 总实验数 \(N_{\text{total}}\)论文中所有关键实验(每个方法 × 每个数据集)的总数。
- 成功复现数 \(N_{\text{ok}}\)别人或你自己按报告配置跑通且结果在容差内的实验个数。
- 计算复现率复现率越高,论文可信度越强;低于 70% 就要警惕报告是否遗漏了关键细节。
AI 应用场景
顶会投稿前的“公平比较自检”
阶段:实验设计与评估
解决的问题:新手研究者常因 Baseline 选择不当或超参数不对齐被审稿人拒稿。用本文的公平比较三把尺(数据、指标、资源)和超参数对齐规则逐项自检,可以在投稿前拦截“不公平比较”硬伤。
具体案例:某研究组在 CVPR 投稿前发现,Baseline 的清晰度指标是用自己重写的代码计算的;换成官方评估代码后,2 个点的涨点缩水到 0.4 个点。团队花一周复现官方 Baseline 并修正评估脚本,最终论文通过评审。
新方向探索前的 Baseline 复现
阶段:选题与可行性验证
解决的问题:切入新方向时,直接做新方法容易“地基不稳”。先复现强力 Baseline,等于先摸清任务的天花板和难度,再决定新方法的设计空间。
具体案例:工程师小周想用对比学习做小样本图像分类。他没有立刻设计新损失函数,而是先复现了 SimCLR 与 MoCo 两个 Baseline,确认官方数字在 ±0.5% 内复现后,才开始在其上做改进,节省了两周的无效实验。
技术选型时的模型横向对比
阶段:方案评估与决策
解决的问题:企业在多个候选模型间做技术选型时,如果各自用不同的数据、指标和训练资源,结果完全不可比。用“可控实验”框架统一变量,才能选出真正适合业务的模型。
具体案例:某金融科技团队在 OCR 识别模型选型时,固定同一份标注数据、同一块 A100、同一套评估指标,对 4 个候选模型各跑 3 个种子,输出均值 ± 方差对比表,最终选中的模型不是单次最高分,而是最稳定且速度达标的那一个。
Python 演示
import numpy as npfrom sklearn.datasets import load_digitsfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_scorefrom sklearn.model_selection import train_test_splitfrom sklearn.neural_network import MLPClassifier SEEDS = [0, 1, 2, 3, 4] # 固定多个随机种子, 控制随机性DATA, TARGET = load_digits(return_X_y=True) def build_baseline(r): # Baseline: 逻辑回归, 参数按官方推荐设定 return LogisticRegression(max_iter=500, random_state=r) def build_new(r): # 新方法: 两层 MLP, 与 Baseline 共享同一批种子 return MLPClassifier(hidden_layer_sizes=(128, 64), max_iter=300, random_state=r) def run_once(builder, seed): # 数据划分, 训练, 评估在同一个种子下完成, 保证数据公平 X_tr, X_te, y_tr, y_te = train_test_split( DATA, TARGET, test_size=0.3, random_state=seed) model = builder(seed) model.fit(X_tr, y_tr) return accuracy_score(y_te, model.predict(X_te)) def evaluate(name, builder): # 多次运行取均值加减标准差, 作为该方法的真实水平 scores = [run_once(builder, s) for s in SEEDS] mean = float(np.mean(scores)) std = float(np.std(scores, ddof=1)) print("{}: {:.4f} +/- {:.4f}".format(name, mean, std)) return mean, std if __name__ == "__main__": base_mean, base_std = evaluate("Baseline: LogisticRegression", build_baseline) new_mean, new_std = evaluate("NewMethod: MLP(128,64)", build_new) gain = (new_mean - base_mean) / base_mean * 100 print("Relative gain (baseline mean): {:.2f}%".format(gain)) print("Absolute gain: {:.4f}".format(new_mean - base_mean))
SEEDS = [0, 1, 2, 3, 4]随机性控制第一步:固定一组种子,让每次实验只在“运气”上不同。DATA, TARGET = load_digits(return_X_y=True)固定同一份数据集,保证两个方法面对相同的数据分布。X_tr, X_te, y_tr, y_te = train_test_split(...)用与训练相同的种子划分数据,确保两个方法看到完全一致的训练/测试切分,这就是数据公平。model = builder(seed)通过构建函数工厂创建模型并注入同一个种子,保证初始化条件对齐,不偷偷加料。scores = [run_once(builder, s) for s in SEEDS]多次独立运行,收集结果分布而不是单次得分,相当于“多试几次排除手气”。mean = float(np.mean(scores))均值代表方法真实水平,是“多轮试菜后的平均口碑”。std = float(np.std(scores, ddof=1))标准差反映波动:越小说明方法越稳定,审稿人最爱的数字。gain = (new_mean - base_mean) / base_mean * 100相对提升率:以 Baseline 为基准计算增益,是公平比较的标准口径。
常见误区
误区“选一个很弱的 Baseline,我的方法看起来提升最大、数字最漂亮,这样更容易中稿。”
正解审稿人都懂这个套路。弱 Baseline 会让审稿人质疑你的方法是否有实际价值,就像拿“白水煮鱼”当参照来证明“翡翠鱼片”好吃一样没有说服力。正确做法是选当前最强方法做参照,并和朴素方法同时对比,展示“既超过强的,也超过简单的”。
为何常见:人天性喜欢好看的数字,容易把“实验比较”误解成“展示优势”,而忘了比较的本质是证明可信的价值。
误区“我从作者 GitHub 上 clone 下来跑通了,就说明 Baseline 复现好了,可以直接开始比了。”
正解跑通 ≠ 复现。复现要求你把论文报告的数字在合理容差内重现,比如官方报告 94.5%、你跑了 90.2%,说明有细节没对齐——数据增强、学习率调度、batch size 都可能是元凶。要像小林换花椒、控油温那样,逐项检查并记录,直到偏差归零。
为何常见:“能运行”与“结果对齐”是两个层次,初学者往往只盯着前者,以为代码不出错就是胜利。
误区“所有模型都用库默认超参数,一视同仁,这不就是最公平的比较吗?”
正解默认参数通常不是原论文的最优配置,等于给对手端上一盘“不放盐的菜”。公平的做法是:Baseline 用原论文报告的最优超参数,你的方法同样给予调参预算,双方共享的参数必须相同,所有改动记录在案。
为何常见:默认参数省事,而且能让自己的数字显得更漂亮,初学者容易在这种“省事 + 好看”的诱惑下自欺欺人。
误区“我跑了 5 次,挑最好的一次写进论文,反正别人看不出来,数字高了才好中稿。”
正解这正是“复现危机”的根源。正确报告是“均值 ± 标准差”并注明种子数。如果最好成绩 95% 但均值只有 90%,波动 5 个点,审稿人会直接质疑实验不稳健——就像只把厨师状态最好的那一餐端出来,却声称这是日常水平。
为何常见:幸存者偏差在作祟——人都想展示最靓丽的一面,但研究与表演的区别,就在于诚实呈现波动。
误区“我的方法用了 8 张 A100,比 Baseline 的 1 张卡效果好,这不正说明我的方法牛吗?”
正解这是算力碾压,不是方法优势,就像你用和牛来煎牛排,赢过用普通牛肉的对手,只能说明肉质不同。公平比较要求在相同算力预算下对比;如果方法本身需要更多资源,应该报告 FLOPs、显存、训练时间,并用“效果-成本”两个维度综合讨论。
为何常见:混淆了“资源投入”与“算法智慧”,把堆算力误当作创新,这在算力充足的大厂实验室尤其常见。
面试题
Q1. 在论文实验中,Baseline 最核心的作用是什么?
- A.充当实验对照的参照锚点← 正确答案
- B.替代测试集来训练模型
- C.提供额外的训练数据
- D.直接部署到线上服务
答案:A。Baseline 是实验对比的参照锚点,用来衡量新方法的性能增益,就像盲测必须有一盘参照菜。它不参与训练、不替代测试集,更不是部署目标,所以 B、C、D 都不对。
Q2. 下列哪一项是选择 Baseline 的合理标准?
- A.选过时旧模型以凸显优势
- B.选领域公认并广泛引用的方法← 正确答案
- C.只选实现最简单的方法
- D.只选性能最高但不公开代码
答案:B。代表性、时效性、成熟度、可复现性是四个核心标准,B 综合体现了前三点。A 违背时效性,C 违背代表性,D 违背可复现性,都是新手容易踩的坑。
Q3. 复现 Baseline 时,官方代码能跑通但结果比论文低 3%,首先应该检查哪一项?
- A.换一台性能更强的 GPU
- B.对齐数据预处理与训练细节← 正确答案
- C.直接调大学习率重跑
- D.放弃复现改用其他方法
答案:B。结果偏差大,通常是“菜谱外细节”没对齐:数据增强顺序、学习率调度、batch size、weight decay 等。B 是系统排查。换硬件(A)、乱调参数(C)属于碰运气,放弃复现(D)则让后续比较失去地基。
Q4. 关于超参数对齐,下面说法正确的是?
- A.新方法调参多,Baseline 用默认值
- B.共享超参数一致,调参预算对等← 正确答案
- C.只要数字高,过程不重要
- D.Baseline 不允许调任何参数
答案:B。公平比较要求共享超参数一致、调参预算对等,就像两道菜必须用同一罐盐。A 是典型的不公平比较,C 违背科研诚信,D 过于绝对——允许调参但须逐条记录。
Q5. 固定随机种子后,为什么还要多次运行取均值?
- A.固定种子后仍可能有硬件与数据加载波动← 正确答案
- B.均值一定会让结果变得更高
- C.审稿人更喜欢看到更多数字
- D.多次运行完全没有必要
答案:A。即使固定种子,不同 GPU 的浮点运算、数据加载顺序等仍会带来微小差异;而且“均值 ± 标准差”才能反映方法稳定性。B 是错误归因,C 不是科学理由,D 违背随机性控制的常识。
Q6. 新方法比 Baseline 高 2 个点,但训练时间是 Baseline 的 5 倍,正确做法是?
- A.只报告准确率不报告时间
- B.声称训练时间并不重要
- C.同时报告精度与资源并综合分析← 正确答案
- D.删掉时间信息后再投稿
答案:C。公平比较包含资源维度。C 是领域规范:高精度但高成本的方法需要论证其价值,比如标注“以 5 倍训练时长为代价换来 2 个点”。A、B、D 都属于选择性报告,审稿人会一票否决。
Q7. 某论文 6 个关键实验中 5 个可复现,唯一失败的恰好是核心主实验,合理的判断是?
- A.论文仍可视为完全可信
- B.核实细节并复现主实验再定论← 正确答案
- C.直接判定论文属于造假
- D.所有实验结果都没有价值
答案:B。主实验是论文的基石,它失败意味着 83% 的复现率不能直接背书核心结论。正确做法是先向作者索取主实验细节(数据清洗、训练 trick、硬件信息),复现后再判断,就像菜谱主菜失败时先核对火候再谈味道。A 过于乐观,C 过于武断,D 因噎废食。
Q8. 一个合格的 Baseline 实验报告应该包含哪些信息?
- A.源码或官方实现的链接← 正确答案
- B.超参数与环境版本配置← 正确答案
- C.数据划分与预处理细节← 正确答案
- D.随机种子与硬件信息← 正确答案
答案:ABCD。可复现性四件套缺一不可:代码(A)、配置(B)、数据细节(C)、环境与种子(D)。任何一项缺失,读者都无法完整复现,就像菜谱不写油温和腌料,照做必翻车。
Q9. 下列哪些做法属于“不公平比较”?
- A.新方法调参多而 Baseline 用默认← 正确答案
- B.两个方法使用相同的数据划分
- C.新方法八卡而 Baseline 只有一卡← 正确答案
- D.使用官方评估代码计算指标
答案:AC。A 是调参预算不对等,C 是算力资源不对等,都属于“偷偷加花椒”式的作弊。B 和 D 恰恰是公平比较的正确做法——相同数据划分、官方评估代码,正是审稿人希望看到的。
Q10. 控制实验随机性的常用手段包括?
- A.固定 numpy 与 torch 的随机种子← 正确答案
- B.同一设置多次运行并记录次数← 正确答案
- C.报告均值与标准差而非单次← 正确答案
- D.只挑选最好的一次结果写入
答案:ABC。A、B、C 是随机性控制三板斧:固定种子、多次运行、均值 ± 标准差。D 是“挑最好看的数字”,属于报告偏差,违背了随机性控制的核心思想——就像只端出厨师状态最好的一餐来代表日常水平。