动手
前面各章每页只对照一件事。这一部分把它们拼起来:从生成数据、建模型、设初值,到 100 步训练和最后的评估,两边各写一个完整的程序,逐步比较。最后给出能直接复制运行的一对程序。
- 同一个小模型训练到收敛:一维小 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
💬 关联讨论
发起讨论加载中...