实验 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

📈 训练过程可视化结果

训练过程中的损失变化曲线

001-loss

准确率变化曲线

001-acc

混淆矩阵

  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%