首页 › S 模型训练 › S1 基础概念与第一个实验 › 02

02 · 训练观察记录模板:第一次实验怎么记

入门阶段约 240 分钟阶段:S1 基础概念与第一个实验

日期:2026-11-10 | 用途:每次改动实验,复制下面的表格填一行。三个月后这份记录就是你的"实验日志",价值超过任何教程。 填写纪律:一次只改一个变量;先写下"预期"再跑(猜错了学得更多);跑完必填"解读"。

观察记录表

# 改了什么 我的预期 实际命令 loss 准确率 耗时 解读(为什么是这个结果?)
0 无(基线:500样本/1epoch/seed42/lr=1e-3) - --smoke 2.2579 40.70% 8.0s loss≈ln10=2.3,500样本几乎没学会
1
2
3

预排的三次实验(照着做,填进上表)

实验 1:换随机种子(5 分钟)

  • 改动:脚本里 torch.manual_seed(42) → torch.manual_seed(7)
  • 预期先写:结果会一样还是不一样?为什么?
  • 跑:.venv/Scripts/python.exe 01_mnist_cnn.py --smoke
  • 观察点:准确率变了没有?变大还是变小?
  • 你会学到:神经网络的初始权重是随机的——种子决定"起点",起点不同结果就不同;这就是为什么做实验对比要固定种子

实验 2:数据量 10 倍(5 分钟)

  • 改动:Subset(train_ds, range(500)) → range(5000)
  • 预期先写:loss 和准确率会怎么变?
  • 跑:同上 --smoke
  • 观察点:loss 还停在 2.2 附近吗?准确率过了 70% 吗?
  • 你会学到:数据量是最便宜的提分手段——对比基线行,同一模型只多了 10 倍数据

实验 3:把学习率拉爆(5 分钟)

  • 改动:lr=1e-3 → lr=1.0
  • 预期先写:loss 会缓慢下降还是剧烈震荡?
  • 跑:同上 --smoke
  • 观察点:loss 是不是不降反升/上下乱跳?
  • 你会学到:学习率是训练第一超参数——步子太大永远走不到谷底(恢复原值后再试 lr=1e-7 看另一个极端:几乎不动)

全量基线对照(已于 2026-11-10 跑完,实测数据)

运行 样本量 epoch loss 末值 准确率 总耗时
冒烟 500 1 2.2579 40.7% 8s
全量(实测) 60000 2 0.0629(epoch1=0.2313) 98.61% 约90秒(45.8s+44.6s)

对照后必答的三个问题: 1. 全量的 loss 末值比 ln10(≈2.30) 低了多少个数量级?这说明模型"学会了"什么? 2. 全量第 1 epoch 和第 2 epoch 的 loss 差多少?为什么第 2 轮提升变少? 3. 如果把 60000 样本只跑 1 epoch(加 --epochs 1),和 500 样本跑 10 epoch 相比,你猜哪个准确率高?为什么?(这是"数据量 vs 训练时长"的经典权衡)

记录习惯

  • 每做完一次实验,在本文档表格加一行,不要新建文件
  • 表格满了(约 10 行)就开新篇(放在当前阶段文件夹里,命名 NN-主题-核心问题.md),并在 README 归档清单登记
  • 遇到报错:把完整 traceback 贴进当次实验的"解读"栏(报错也是实验结果)

小测验(3 题)

答完立即判分,错题给解析;得分存本地。实验与实操题不上网测:回对话找老师验收。