沐神-动手学习深度学习-习题 4.3. 多层感知机的简洁实现

####答案

这一节介绍了如何使用深度学习框架(如 PyTorch)的高级 API 简洁地实现多层感知机(MLP)。相比上一节的"从零实现",简洁实现将重点放在了模型架构的定义和训练流程的标准化上。

  1. 核心内容总结
    A. 模型定义
  • 使用 nn.Sequential 构建模型,它可以按顺序将各个层串联起来。
  • 层级结构:
    • 展平层 (nn.Flatten):将输入的 28 \times 28 二维图像转换为 784 维的一维向量。
    • 隐藏层 (nn.Linear):定义了输入为 784、输出为 256 的全连接层。
    • 激活层 (nn.ReLU):在隐藏层后添加非线性变换。
    • 输出层 (nn.Linear):将 256 个隐藏单元映射到 10 个分类输出。
      B. 参数初始化
  • 使用 nn.init.normal_ 对权重进行随机正态分布初始化。
  • 通常将偏置项初始化为 0。
    C. 训练配置
  • 损失函数:使用 nn.CrossEntropyLoss()。它在内部结合了 Softmax 和交叉熵计算,并处理了数值稳定性问题。
  • 优化器:使用 torch.optim.SGD,设置学习率(如 0.1)来更新参数。
  • 训练循环:直接调用 d2l.train_ch3 函数,这与之前的 Softmax 回归训练过程完全一致。
  1. 习题答案解析
    Q1: 尝试添加更多的隐藏层,看看它对结果有什么影响?
  • 现象:添加更多层可以增加模型的表达能力(容量),有时能进一步降低训练损失。
  • 风险:如果层数过多且没有合适的正则化(如 Dropout),模型更容易发生过拟合。同时,训练时间会增加。
  • 深度建议:在 Fashion-MNIST 这种简单数据集上,两到三个隐藏层通常就足够了。
    Q2: 尝试不同的激活函数。哪个效果最好?
  • ReLU:目前最通用的选择,收敛快且计算简单。
  • Sigmoid:容易导致梯度消失,尤其是在层数较多时,训练速度明显慢于 ReLU。
  • Tanh:性能通常介于两者之间,但在深度网络中依然不如 ReLU 常用。
  • Leaky ReLU:在输入为负时保留微弱梯度,有时能改善神经元"死亡"的问题。
    Q3: 尝试不同的方案来初始化权重。
  • Xavier 初始化 (nn.init.xavier_uniform_):旨在保持每一层输出的方差一致,特别适合 Sigmoid 和 Tanh 激活函数。
  • Kaiming 初始化 (nn.init.kaiming_normal_):专为 ReLU 激活函数设计,是目前深层网络中最主流的初始化方式。
  • 结论:使用 Kaiming 初始化通常会让基于 ReLU 的 MLP 收敛更稳定。
    Q4: 调整超参数(如学习率、迭代轮数、隐藏单元个数),观察并分析结果。
  • 学习率:太高会导致 Loss 震荡不下降;太低会导致训练极慢。
  • 隐藏单元个数:增加个数(如 512 或 1024)能提升准确率上限,但会显著消耗更多显存和计算资源。
  • 迭代轮数 (Epochs):通常观察训练集和验证集的损失曲线。当验证集损失不再下降甚至上升时,应停止训练(防止过拟合)。
    下一步建议:
    掌握了简洁实现后,你已经具备了构建中等复杂度网络的能力。接下来的 4.4 节"模型选择、欠拟合和过拟合" 将带你探讨如何科学地评估模型性能,避免模型只是"死记硬背"数据。
    你想了解如何绘制损失曲线图来识别过拟合,还是想看看**权重衰减(L2 正则化)**是如何解决这个问题的?
相关推荐
weixin_433417675 分钟前
2026.1024【瑞萨边缘AI技术研讨会】上海站【AI 动手实践/培训环节】总结
人工智能
miofly7 分钟前
Sebastian Raschka 11 小时视频课:用 PyTorch 从零构建推理模型
人工智能
LiuPig刘皮哥9 分钟前
小可爱xiaokeai3D陪玩视觉设计方案
人工智能·3d·虚拟陪伴·虚拟偶像·xiaokeai
第404号工位13 分钟前
浏览器的“无痕模式”是当代最大安慰剂?我用 30 行 JS 提取硬件指纹,跨网络换代理照样精准锁定你
linux·人工智能·python
刘胡子大叔16 分钟前
用 system_prompt 控制智能体说话风格
人工智能·prompt
Agent世界17 分钟前
千问Go上线我的应用:一句话生成可部署 AI 软件的技术拆解
开发语言·人工智能·golang·ai智能体
xiejava101819 分钟前
【一个人的SOC】(12) AI 安全报告与主动推送——五种场景的自动化闭环
人工智能·安全·自动化·开源软件·安全运营·ai soc
AI前端工程狮21 分钟前
从 Function Calling 到 MCP(四):把 Server 部署上线前,先处理好这五件事
人工智能·程序员
虎鲸不是鱼22 分钟前
AI 自动化逆向(十七)解码器、反汇编器、反编译器:能力边界表
人工智能·自动化·大模型·逆向·ai逆向
凌界天行24 分钟前
知名的无人机侦测肩灯制造厂名声
python