MNIST 手写数字识别 —— 昇腾 NPU 入门教程
在昇腾 NPU 上完成深度学习的"Hello World":训练一个 CNN 卷积神经网络识别手写数字。本教程面向零基础学习者,无需任何 GPU/CUDA 知识,从环境初始化到模型训练、评估、保存全流程跑通。
完整代码与分步说明见 mnist.ipynb。
体验配置
| 项目 |
数值 |
| NPU 卡数 |
单卡(实测环境为昇腾 910B3) |
| 模型 |
两层卷积 + 两层全连接的 CNN(~28K 参数) |
| 数据集 |
MNIST(60000 训练 / 10000 测试,28×28 灰度图) |
| 训练轮数 |
12 epoch |
| batch size |
256 |
| 学习率 |
1e-4 |
| 训练耗时 |
约 222s(3.7 分钟) |
| 最终准确率 |
约 97.7% |
前置条件
| 项目 |
要求 |
| 硬件 |
昇腾 910B 系列及以上 |
| CANN |
9.2.0 |
| PyTorch / torch_npu |
PyTorch 2.7.1 / torch_npu 2.7.1.post4 |
| Python |
3.11 |
| 其他依赖 |
pip install torchvision swanlab |
配置 SwanLab API Key
首次使用需要在 SwanLab 官网 注册账号,在终端环境中完成登录:
swanlab login
打开 Notebook
jupyter notebook mnist.ipynb
教程结构
| 步骤 |
内容 |
| 第 1-2 步 |
初始化 CANN 环境,导入工具库 |
| 第 3 步 |
检查 NPU 设备 |
| 第 4-5 步 |
加载 MNIST 数据集,划分训练集/验证集 |
| 第 6-7 步 |
构建 CNN 模型,放到 NPU 上 |
| 第 8-9 步 |
定义损失函数和优化器,初始化 SwanLab |
| 第 10-11 步 |
编写训练/验证函数,开始训练 |
| 第 12-13 步 |
保存模型,可视化预测结果 |
| 第 14 步 |
查看训练曲线与分享 |
| 课后练习 |
10 道客观题 + 3 道实践题(初/中/高) |
目录说明
| 文件 |
作用 |
README.md |
本文档 |
mnist.ipynb |
完整教程:环境初始化 → 数据加载 → 模型构建 → 训练 → 评估 → 课后练习 |