14: 反向传播

在本课程中,我们将深入探讨如何在使用反向传播进行神经网络训练时实现链式法则。我们重构代码以提高效率和灵活性,并探索 PyTorch 的 nn.Modulenn.Sequential。我们还将创建自定义 PyTorch 模块,构建自己的 nn.Module 实现,并学习优化器、DataLoader 和 Dataset。我们将展示如何使用 Hugging Face 数据集,并介绍 nbdev 库。

我们研究如何将上一课的代码映射到反向传播背后的数学原理。接着,我们使用 PyTorch 的 nn.Module 重构代码,它会自动跟踪层和参数。我们还使用 nn.Sequential 创建了一个序列模型,并演示了如何创建自定义 PyTorch 模块。然后,我们引入了优化器的概念,它简化了根据梯度和学习率更新参数的过程。我们从零开始创建了一个自定义的 SGD 优化器,并探索了 PyTorch 内置的 DataLoader。我们还使用 PyTorch DataLoader 构建了一个规范的训练循环。

在整个课程中,我们强调理解底层代码的重要性,而不仅仅依赖于他人的代码。这使得在构建自定义解决方案时具有更大的灵活性和创造力。我们还讨论了 fastcore 中的 **kwargs 和 delegates 的使用,以及 Python 数据模型中的 callbacks 和 dunder 方法。

讨论的概念

  • 反向传播与链式法则
  • 重构代码以提高效率和灵活性
  • PyTorch 的 nn.Modulenn.Sequential
  • 创建自定义 PyTorch 模块
  • 实现优化器、DataLoader 和 Dataset
  • 使用 Hugging Face 数据集
  • 使用 nbdev 从 Jupyter notebook 创建 Python 模块
  • **kwargs 与 delegates
  • Python 数据模型中的 Callbacks 与 dunder 方法
  • 使用 PyTorch DataLoader 构建规范的训练循环

视频