- 实验学时: 2学时
- 实验目的
- 掌握深度神经网络DNN的基本结构;
- 掌握数据预处理、模型构建、训练与调参;
- 探索DNN在MNIST数据集中的性能表现;
实现深度神经网络DNN。
- 主要实验步骤及结果
(一)实验步骤
图4-1 数据准备与预处理代码截图
图4-2 构建DNN模型代码截图
图4-3 训练模型代码截图
图4-4 评估模型性能代码截图
图4-5 模型预测代码截图 (二)结果与分析 1.模型结构摘要如图4-6所示: 图4-6 模型结构摘要截图 2.训练过程截图如图4-7所示: 图4-7 训练过程截图 训练准确率最终达到约99% 验证准确率最终达到约98% 测试集准确率约为98.08% 3.学习曲线截图如图4-8所示: 图4-8 学习曲线截图 损失曲线和准确率曲线显示模型收敛良好 没有明显的过拟合现象(得益于Dropout层的使用) 4.预测示例截图如图4-9所示: 图4-9 预测示例截图 随机选取的5个测试样本全部预测正确 模型能够准确识别各种书写风格的数字
1. DNN的核心定义 (1)在本次实验中,DNN表现为多层全连接神经网络,其核心特征包括: (2)深度架构:代码中通过Sequential堆叠了4个Dense层(3隐藏层+1输出层) (3)非线性变换:每层使用ReLU激活函数(输出层用Softmax) (4)层级连接:前一层的输出作为下一层的输入(通过input_shape=(28*28,)自动推断) 2. DNN在代码中的核心作用 (1) 特征自动提取器 输入处理:将原始像素(28×28=784维)通过reshape展平为一维向量 层级特征学习: 第1层(512神经元):学习局部笔画特征(如线条方向) 第2层(256神经元):组合成数字部件(如弧线、交叉点) 第3层(128神经元):整合为完整数字表征 (2) 分类决策器 输出层设计:通过10个神经元的Softmax输出概率分布 损失函数:使用交叉熵损失衡量预测概率与真实标签差距 (3) 正则化与泛化 Dropout机制:训练时随机丢弃20%神经元防止过拟合 验证监控:通过validation_split=0.2实时评估泛化能力 3.代码中关键组件与DNN原理对应
4. DNN在MNIST任务中的特殊价值 图像展平的适应性:虽然DNN会丢失空间信息,但MNIST数字的简单性使其仍能高效工作 与CNN的对比:实验代码中通过全连接层实现"全局感知",不同于CNN的局部感受野 计算效率权衡:相比CNN,DNN参数量更大(本实验56万参数),但MNIST数据量小仍可快速训练 |