L14|中文 F3 學生的學習紀錄

角色設定:我是中三學生,只看得懂中文。Python 學過變數、for 迴圈和 list,數學讀到一元二次方程。我靠中文課程筆記、YouTube 自動翻譯字幕和查字典來學。Kaggle 筆記本的操作步驟,是依官方 notebook 流程寫下的練習紀錄。

我讀懂了什麼(用自己的話)

  • 程式越寫越長時,要把重複的部分包成類別和函數。
  • nn.Module 會幫我記住模型裡所有要訓練的數字。
  • Optimizer 把「更新參數」和「清除梯度」包起來,一行就能做。
  • DataLoader 把資料切成一批一批,每個 epoch 還會打亂順序。

我卡住的地方,和我怎麼解決

卡住的地方我怎麼解決
**kwargs 看不懂寫了一個小函數印出 kwargs,發現它就是把多餘的具名參數收進一個字典。
不知道為什麼要打亂資料順序想到如果資料按類別排好,模型會先只看到貓再只看到狗,學得很偏。

練習作答

Q1. Dataset 和 DataLoader 分工有什麼不同?

Dataset 管「單筆資料」:有幾筆、第 i 筆的輸入和標籤是什麼。DataLoader 管「怎麼送」:把資料分成批次、每個 epoch 打亂順序,一批批交給模型。

Q2. 為什麼每次更新參數後都要 zero_grad()?

因為 PyTorch 預設會把新算的梯度加到舊的上面。如果不歸零,梯度會越積越大,參數更新就錯了。

Q3. 用 nn.Module 取代自己手動管理參數,有什麼好處?

nn.Module 會自動收集所有子層的參數,parameters() 一次全部拿到,不用自己一個個列;也能輕鬆搬到 GPU、存檔和載入,程式更短、更不容易漏掉。

我的卡片盒筆記

卡片|程式寫得好,是讓下一個人一眼看懂

這課沒有新的數學,而是把上一課很長的程式一步步整理成 Module、Optimizer、Dataset、DataLoader。整理之後,訓練迴圈只剩幾行,每一行都清楚表達一件事。

我做小組專題時,負責整理大家的程式。原本每個人都把所有東西寫在一個大檔案,變數名稱叫 a、b、temp,改一個地方就壞三個地方。後來我們把讀資料、計算、顯示結果拆成三個函數,各自負責,後來加功能就容易很多。不過我也覺得拆太細會變成要跳很多檔案才看得懂,適當的分層比較重要。那次之後,組員要加新功能時,只要找到負責的那個函數就好,不用再翻遍整個檔案。

這週我要做的小行動:把自己 L05 的鐵達尼號程式改寫成 Dataset、模型、訓練迴圈三個部分。

🔗 推薦產生關聯的筆記: → 程式設計類:「一個函數只做一件事」 → 團隊協作類:「好的程式結構是給隊友的禮物」 → 學習方法類:「整理是理解的第二遍」


回到課程筆記:L14_反向傳播重構_202611041526

Built with LogoFlowershow