no word
| Files | Last commit | Last update |
|---|---|---|
| 11 days ago | ||
| 11 days ago | ||
| 11 days ago | ||
| 11 days ago | ||
| 11 days ago | ||
| 11 days ago |
MNIST 手写数字识别
基于 PyTorch 的手写数字识别项目,包含完整的 CNN 训练流程和一个可交互的画板预测工具。
项目结构
ministtry/
├── ministtest1.ipynb # 完整训练 notebook(环境检查→数据→模型→训练→测试→可视化)
├── usertest.py # 画板手写预测 + 在线微调工具
├── mnist_weights.pth # 训练好的模型权重(904KB)
├── MINIST/ # MNIST 原始数据集(idx.gz 格式)
└── README.md
环境要求
- Python 3.10
- PyTorch 2.14+(CUDA 12.6,GPU 可选)
- numpy / matplotlib / pillow
虚拟环境已配置在 .venv/,直接使用即可。
模型
两层卷积 CNN:
Conv2d(1→32, 3×3) → ReLU → MaxPool(2)
Conv2d(32→64, 3×3) → ReLU → MaxPool(2)
Dropout(0.25) → FC(1600→128) → ReLU → FC(128→10)
参数量约 43 万,Adam 优化器,lr=1e-3,batch_size=64。
训练结果
5 个 epoch,在 RTX 4060 Laptop 上每轮约 3 秒:
| Epoch | Train Loss | Train Acc | Test Acc |
|---|---|---|---|
| 1 | 0.1924 | 94.14% | 98.45% |
| 2 | 0.0604 | 98.08% | 98.82% |
| 3 | 0.0432 | 98.64% | 98.94% |
| 4 | 0.0346 | 98.93% | 99.06% |
| 5 | 0.0297 | 99.03% | 99.26% |
快速开始
1. 训练模型
用 JupyterLab 打开 ministtest1.ipynb,选择 .venv 的 kernel,从头运行即可。
2. 画板预测
.\.venv\Scripts\python.exe usertest.py
- 在画板上手写 0-9 的数字
- 点「预测」查看结果和 Top3 置信度
- 预测对了点「✓ 预测正确」微调
- 预测错了输入正确数字,点「✗ 纠正并微调」
- 微调后权重自动保存到
mnist_weights.pth
数据说明
MNIST 数据集位于 MINIST/ 目录,使用 gzip + numpy 直接解析 idx 文件,无需在线下载:
train-images-idx3-ubyte.gz(60000×28×28)train-labels-idx1-ubyte.gzt10k-images-idx3-ubyte.gz(10000×28×28)t10k-labels-idx1-ubyte.gz