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 只求理解概念)

影片

本課重點

  1. 程式對應數學:把每一行 backward 程式對應到連鎖律公式,確認真的理解。
  2. nn.Module 與 nn.Sequential:nn.Module 會自動追蹤層和參數;nn.Sequential 把多層依序串起來。自己實作一個簡化版 Module,理解它在做什麼。
  3. 優化器:把「參數減去學習率 × 梯度」和「梯度歸零」包成 optimizer 的 step() 和 zero_grad()。
  4. Dataset 與 DataLoader:Dataset 負責「第 i 筆資料是什麼」;DataLoader 負責分批、打亂順序。也示範怎麼用 Hugging Face datasets。
  5. 工具與心法:用 nbdev 從 notebook 匯出 Python 模組;介紹 **kwargs、delegates、callback、dunder 方法。強調要懂底層,不要只依賴別人的程式。

關鍵概念

英文術語中文一句話解釋
nn.ModulePyTorch 模組自動註冊子層與參數的基礎類別
nn.Sequential序列模型把多層依序串接的容器
Optimizer優化器負責 step 更新參數與 zero_grad 清除梯度
Dataset資料集提供 len 和 getitem 的物件
DataLoader資料載入器把 Dataset 分批、打亂、送進模型
nbdevnbdev用 notebook 開發並匯出 Python 函式庫的工具

認識關聯圖與重點圖

L14_關聯圖_202611041526

練習題

  1. Dataset 和 DataLoader 分工有什麼不同?
  2. 為什麼每次更新參數後都要 zero_grad()?
  3. 用 nn.Module 取代自己手動管理參數,有什麼好處?

資源連結

英文延伸資源(零基礎可以先略過,點開看)

相關筆記

Built with LogoFlowershow