实验 MNIST-002/003 (多个线性层, 不要 ReLU)

🏷️ 实验编号: MNIST-002/003

⏰ 实验时间: 2026-06-28 10:36:47 - 10:42:54 (6分钟)

🎯 实验目的: 对比单个线性层,单纯增加线性层能否提升训练效果


📍 实验基本信息

# 项目 规格
1 硬件平台 笔记本
4 CPU 核心 AMD Ryzen 5 2500U
5 Python 版本 3.9
7 Numpy 版本 2.0.2
9 训练数据 48000 条训练数据, 12000 条验证数据, 10000 条测试数据
10 模型 基于 Numpy 自研模型
11 参数规模 8624 (=784x10+784))
12 代码文件 MNIST-002/003.py
14 实验系列 基于 Numpy 的无卷积自研模型

📊 关键参数配置

# 标识符 说明
1 TRAIN_EPOCHS 50 训练轮次
2 BATCH_SIZE 64 批次大小
3 LEARNING_RATE 0.05 学习率

📝 关键代码

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,64)) 
    self.Layers.append(LinearLayer(64,sz_output))

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,64)) 
    self.Layers.append(LinearLayer(64,64))
    self.Layers.append(LinearLayer(64,64)) 
    self.Layers.append(LinearLayer(64,sz_output))

📋 训练结果摘要

002

# 指标 数值
1 训练时长 101秒
2 训练损失 (train_loss) 0.24
3 验证损失 (val_loss) 0.295
4 验证损失 (train_acc) 93.4%
5 验证准确率 (val_acc) 92%
6 测试错误总数 774
7 测试准确率 92.26%

003

# 指标 数值
1 训练时长 124秒
2 训练损失 (train_loss) 0.247
3 验证损失 (val_loss) 0.300
4 验证损失 (train_acc) 93.0%
5 验证准确率 (val_acc) 91.9%
6 测试错误总数 776
7 测试准确率 92.24%

📈 训练过程可视化结果-002

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

002-loss

准确率变化曲线

002-acc

混淆矩阵-002

  962    0   10    4    1    9    9    1    9    7
    0 1100    9    1    1    2    3    3    4    5
    0    2  899   13    8    3    8   18    4    1
    3    2   17  894    1   17    1    4   13    7
    1    0    5    0  910    5    7    5    7   19
    5    1    7   47    0  801   24    2   31    9
    4    4   14    4    8   12  901    0    9    0
    4    2    8   10    3    5    2  951    9   21
    1   24   57   31   11   32    3    6  879   11
    0    0    6    6   39    6    0   38    9  929

📈 训练过程可视化结果-003

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

003-loss

准确率变化曲线

003-acc

混淆矩阵-003

  965    0    4    4    1   11   11    2    9    8
    0 1101    7    0    1    2    3    5    4    4
    0    2  918   16    8    3   10   25    5    2
    1    2   19  898    2   19    1    7   14    5
    2    0    7    2  918   14    9    7   11   28
    5    4    6   35    0  781   27    1   20    9
    4    4   12    3    6   11  892    0    7    0
    2    1    5   12    4    8    2  938    5   16
    1   21   50   33   11   37    3    5  890   14
    0    0    4    7   31    6    0   38    9  923

⭐ 模型效果对比

指标 MNIST-001 (单线性层) MNIST-002 (两个线性层, 无 ReLU) MNIST-003 (四个线性层, 无 ReLU) 趋势分析
训练损失 0.257 0.240 0.247 微弱下降
验证损失 0.278 0.295 0.300 微弱上升
训练准确率 92.9% 93.4% 93% 微弱上升
验证准确率 92.3% 92.0% 91.9% 微弱下降
测试准确率 92.36% 92.26% 92.24% 微弱下降
训练轮次 50 50 50
训练时间 55秒 101秒 124秒 ⬆️ 显著增加

🎯 实验结论

单纯堆叠线性层不能提升训练效果,反而增加训练时长