实验 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
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
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秒 | ⬆️ 显著增加 |
🎯 实验结论
单纯堆叠线性层不能提升训练效果,反而增加训练时长
浙公网安备 33010602011771号