实验 MNIST-001 (一个线性层)
🏷️ 实验编号: MNIST-001
⏰ 实验时间: 2026-06-21 22:02:40 - 22:03:35 (2分钟)
🎯 实验目的: 验证基线实验可行性
📍 实验基本信息
| # | 项目 | 规格 |
|---|---|---|
| 1 | 硬件平台 | 笔记本 |
| 2 | CPU 核心 | AMD Ryzen 5 2500U |
| 3 | Python 版本 | 3.9 |
| 4 | Numpy 版本 | 2.0.2 |
| 5 | 训练数据 | 48000 条训练数据, 12000 条验证数据, 10000 条测试数据 |
| 6 | 模型 | 基于 Numpy 自研模型 |
| 7 | 参数规模 | 8624 (=784x10+784)) |
| 8 | 实验系列 | 基于 Numpy 的无卷积自研模型 |
📊 关键参数配置
| # | 标识符 | 值 | 说明 |
|---|---|---|---|
| 1 | TRAIN_EPOCHS | 50 | 训练轮次 |
| 2 | BATCH_SIZE | 64 | 批次大小 |
| 3 | LEARNING_RATE | 0.05 | 学习率 |
📝 关键代码
class SimpleNN(Model):
def __init__(self, sz_input:int,sz_output:int):
super().__init__()
log(f"input:{sz_input} output:{sz_output}")
self.Layers.append(LinearLayer(sz_input,sz_output))
class Config:
DATA_DIR = Path ("./data")
MODEL_DIR = Path("./models")
OUTPUT_DIR = Path("./output")
IMG_SIZE = 28*28
NUM_CLASSES = 10
EPOCHS = 50
BATCH_SIZE = 64
LEARNING_RATE = 0.05
VALIDATION_SPLIT = 0.2
SEED = 42
📋 训练结果摘要
| # | 指标 | 数值 |
|---|---|---|
| 1 | 训练时长 | 46秒 |
| 2 | 训练损失 (train_loss) | 0.257 |
| 3 | 验证损失 (val_loss) | 0.278 |
| 4 | 测试准确率 (test_acc) | 92.36% |
| 5 | 测试错误总数 | 764 |
📈 训练过程可视化结果
训练过程中的损失变化曲线

准确率变化曲线

混淆矩阵
962 0 4 2 1 9 10 1 7 10
0 1111 10 0 2 2 3 7 11 8
2 2 922 18 4 6 5 23 6 1
2 2 17 920 2 35 2 7 28 8
0 0 7 0 913 11 9 5 8 21
4 2 4 22 0 773 13 1 27 5
7 4 15 4 12 16 911 0 11 0
2 2 10 12 3 7 3 951 12 24
1 12 35 20 8 26 2 1 849 8
0 0 8 12 37 7 0 32 15 924
🎯 实验结论
1.一个线性层的准确率已经可以超过90%
浙公网安备 33010602011771号