L14|反向傳播實作與 PyTorch 模組化
把上一課的反向傳播對應到數學,接著用 nn.Module、nn.Sequential、自製優化器、Dataset 與 DataLoader 重構程式,寫出正式的訓練迴圈。
L14|反向傳播實作與 PyTorch 模組化(Backpropagation)
零基礎提示
- 這一課不用額外數學
- Part 2 是大學程度:中三同學先求看懂概念,不用每行程式都會
- 字幕:離線網站選「中英」(電腦翻譯,大意正確)
- 看不懂的詞查 白話小辭典
把上一課的反向傳播對應到數學,接著用 nn.Module、nn.Sequential、自製優化器、Dataset 與 DataLoader 重構程式,寫出正式的訓練迴圈。 (Map last lesson's backprop code to the maths, then refactor with nn.Module, nn.Sequential, your own optimizer, Dataset and DataLoader into a proper training loop.)
| 項目 | 內容 |
|---|---|
| 所屬 | Part 2:Deep Learning Foundations to Stable Diffusion |
| 影片 | YouTube |
| 對應書本章節 | 無對應章節(Part 2 以 notebook 為主) |
| 原始頁面 | Lessons/lesson14 |
| 難度(F3 視角) | ★★★★★ 大學程度(F3 只求理解概念) |
影片
本課重點
- 程式對應數學:把每一行 backward 程式對應到連鎖律公式,確認真的理解。
- nn.Module 與 nn.Sequential:nn.Module 會自動追蹤層和參數;nn.Sequential 把多層依序串起來。自己實作一個簡化版 Module,理解它在做什麼。
- 優化器:把「參數減去學習率 × 梯度」和「梯度歸零」包成 optimizer 的 step() 和 zero_grad()。
- Dataset 與 DataLoader:Dataset 負責「第 i 筆資料是什麼」;DataLoader 負責分批、打亂順序。也示範怎麼用 Hugging Face datasets。
- 工具與心法:用 nbdev 從 notebook 匯出 Python 模組;介紹 **kwargs、delegates、callback、dunder 方法。強調要懂底層,不要只依賴別人的程式。
關鍵概念
| 英文術語 | 中文 | 一句話解釋 |
|---|---|---|
| nn.Module | PyTorch 模組 | 自動註冊子層與參數的基礎類別 |
| nn.Sequential | 序列模型 | 把多層依序串接的容器 |
| Optimizer | 優化器 | 負責 step 更新參數與 zero_grad 清除梯度 |
| Dataset | 資料集 | 提供 len 和 getitem 的物件 |
| DataLoader | 資料載入器 | 把 Dataset 分批、打亂、送進模型 |
| nbdev | nbdev | 用 notebook 開發並匯出 Python 函式庫的工具 |
認識關聯圖與重點圖
練習題
- Dataset 和 DataLoader 分工有什麼不同?
- 為什麼每次更新參數後都要 zero_grad()?
- 用 nn.Module 取代自己手動管理參數,有什麼好處?
- 中文學生作答:L14_中文F3學生_202611041526
- English student answers: L14_EN_F3_Student_202611041526