实验记录模板:让每一次仿真都能被复现
仿真跑出结果以后,人很容易只保存一张图。但一周后再看,往往已经想不起这组曲线对应哪版代码、哪些参数,以及中间调整过什么。
实验记录的目的不是把终端日志复制一遍,而是让工作具备可复现性:换一台机器、换一个时间点,仍然能够解释结果是怎么来的。
一、实验基本信息
| 项目 | 内容 |
|---|---|
| 实验编号 | EXP-YYYYMMDD-01 |
| 日期 | YYYY-MM-DD |
| 目的 | 验证什么假设,或比较哪两个方案 |
| 对应论文 / 想法 | 文献链接或研究问题编号 |
| 代码版本 | Git commit hash |
| 数据版本 | 数据集名称、版本或校验值 |
二、运行环境
- 操作系统与版本:
- 仿真软件 / 编程语言及版本:
- 关键依赖及版本:
- 硬件:CPU / GPU / 内存;
- 随机种子(如有随机过程):
环境信息看似琐碎,但“在我电脑上能跑”不是可复现性。版本差异常常是结果不一致的第一来源。
三、变量与参数
先写清楚哪些是自变量、哪些是控制变量、哪些是要观测的指标。尤其要记录与默认值不同的参数,以及调整它们的原因。
| 参数 | 取值 | 说明 |
|---|---|---|
| 参数 A | 为什么选这个范围 | |
| 参数 B | 是否为固定基准 | |
| 采样步长 | 对精度和耗时的影响 |
有公式时,直接把定义写下来,避免不同脚本中的计算口径不一致。例如用均方根误差比较预测值与真实值:
四、执行步骤
写成一个可以照着重新执行的最小步骤列表:
- 从哪个提交或压缩包开始;
- 如何准备输入数据;
- 运行哪个入口脚本;
- 输出保存在哪里;
- 后处理脚本是什么。
如果命令很长,至少记录入口文件和关键参数。不要只写“运行了主程序”。
五、结果与证据
除了最终指标,还要记录:
- 与基线相比的变化幅度;
- 重复运行时的波动;
- 出现了哪些异常点或不收敛情况;
- 哪张图、哪个文件是这次实验的有效证据。
重要: 原始结果不要只留在聊天记录或临时目录里。至少保留一份只读副本,并记录它对应的代码版本。
六、解释与下一步
结果本身不会告诉我们原因。需要区分:
- 观察到的现象:例如误差下降,但某类样本明显变差;
- 暂时接受的解释:为什么会出现这个现象;
- 尚未排除的替代解释:还有哪些可能;
- 下一步实验:为了区分这些解释,应该改哪个变量。
七、可直接使用的日志骨架
## 实验目的 |
一份好的实验日志,应该让未来的自己不必重新猜测,也让合作者能够在同一基础上继续工作。