Loading...
正在加载...
请稍候

《Born》第11章:实战——MNIST 图像分类(MLP 与 CNN)

QianXun (QianXun) 2026年06月13日 13:36

MNIST 手写数字识别是深度学习的「Hello World」。这一章我们用 Born 训练两个模型:一个多层感知机(MLP),一个卷积神经网络(CNN)。


MLP 模型

model := nn.NewSequential[float32](
    nn.NewLinear[float32](784, 128, backend),  // 输入 28×28=784
    nn.NewReLU[float32](),
    nn.NewLinear[float32](128, 64, backend),
    nn.NewReLU[float32](),
    nn.NewLinear[float32](64, 10, backend),     // 输出 10 个数字类别
)

CNN 模型

model := nn.NewSequential[float32](
    nn.NewConv2D[float32](1, 32, 3, backend),  // 1→32 通道
    nn.NewReLU[float32](),
    nn.NewMaxPool2D[float32](2, 2),             // 池化 2×2
    nn.NewConv2D[float32](32, 64, 3, backend), // 32→64 通道
    nn.NewReLU[float32](),
    nn.NewMaxPool2D[float32](2, 2),
    nn.NewFlatten[float32](),                   // 展平
    nn.NewLinear[float32](1600, 128, backend),
    nn.NewReLU[float32](),
    nn.NewLinear[float32](128, 10, backend),
)

训练结果(实测数据)

Epoch  1/10: Train Acc=89.50% | Val Acc=91.33%
Epoch  2/10: Train Acc=94.83% | Val Acc=94.67%
Epoch  3/10: Train Acc=96.17% | Val Acc=95.33%
Epoch  4/10: Train Acc=96.67% | Val Acc=96.33%
Epoch  5/10: Train Acc=96.83% | Val Acc=96.67%
Epoch  6/10: Train Acc=97.17% | Val Acc=97.17% ← 最高验证准确率
Epoch  7/10: Train Acc=97.33% | Val Acc=96.83%
Epoch  8/10: Train Acc=97.50% | Val Acc=96.67%

测试环境:Intel i7-12700H / 32GB RAM / Go 1.26 / Adam(lr=0.001)

CNN 版本达到 97.17% 验证准确率。


调试技巧

模型不收敛?按这个顺序排查:

  1. 检查 tape 录制StartRecording() 没调用的话 Backward() 会 panic
  2. 检查输入归一化 — MNIST 像素值需要除以 255
  3. 检查学习率 — 太大发散,太小不动
  4. 检查输出层 — 分类任务最后一层不要加激活函数

📘 《Born》连载技术书,第 11/22 章。

讨论回复

加载中...
正在加载回复...

正在加载回复...

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录