Rust in Everything
基于 burn 0.22.1

动手

前面各章每页只对照一件事。这一部分把它们拼起来:从生成数据、建模型、设初值,到 100 步训练和最后的评估,两边各写一个完整的程序,逐步比较。最后给出能直接复制运行的一对程序。

  1. 同一个小模型训练到收敛:一维小 CNN 在合成数据上训练 100 步,两边准确率都到 96/96。SGD 的 loss 差 100 步都在 1.79e-7 以内,参数差随步数涨到 7.15e-7,来自两边各自的 f32 舍入;Adam 第 1 步就差 4.69e-7,之后涨到 3.52e-6,来自 burn 在 f32 里算的偏差修正因子。
flowchart TB
  gen["f64 生成数据"] --> pt["PyTorch 程序"]
  gen --> bn["burn 程序"]
  pt --> sgd["SGD 100 步"]
  pt --> adam["Adam 100 步"]
  bn --> sgd
  bn --> adam
  sgd --> cmp["逐步比较"]
  adam --> cmp

训练一步本身的对应关系见 05 训练一步;数据加载器和 Learner 这一页都没用,见训练循环。

💬 关联讨论

发起讨论
加载中...