《Born》第11章:实战——MNIST 图像分类(MLP 与 CNN)
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 章。
💬 讨论回复 (0)
推荐
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens