L11|中文 F3 學生的學習紀錄
L11|中文 F3 學生的學習紀錄
角色設定:我是中三學生,只看得懂中文。Python 學過變數、for 迴圈和 list,數學讀到一元二次方程。我靠中文課程筆記、YouTube 自動翻譯字幕和查字典來學。Kaggle 筆記本的操作步驟,是依官方 notebook 流程寫下的練習紀錄。
我讀懂了什麼(用自己的話)
- 矩陣乘法是把第一個矩陣的每一列,和第二個矩陣的每一行,對應相乘再加總。
- Python 的迴圈很慢,交給底層(C 語言、GPU)一次算完就快很多。
- 廣播會自動把小的張量「複製擴展」成一樣大再運算。
- 讀論文要先準備好希臘字母和數學符號的對照表。
我卡住的地方,和我怎麼解決
| 卡住的地方 | 我怎麼解決 |
|---|---|
| 矩陣乘法的順序常搞錯 | 用手指比:左邊矩陣橫著走,右邊矩陣直著走。 |
| 廣播規則很抽象 | 在 Python 實際印出 (3,1) + (1,4) 的結果,看到 3×4 的表格才懂。 |
練習作答
Q1. 計算 [[1,2],[3,4]] @ [[5,6],[7,8]]。
左上:1×5 + 2×7 = 19;右上:1×6 + 2×8 = 22;左下:3×5 + 4×7 = 43;右下:3×6 + 4×8 = 50。答案 [[19,22],[43,50]]。
Q2. 形狀 (3,1) 的張量加上形狀 (1,4) 的張量,結果形狀是什麼?為什麼?
結果是 (3,4)。廣播會把第一個的 1 欄擴展成 4 欄、第二個的 1 列擴展成 3 列,兩個都變成 3×4 後逐格相加。
Q3. 為什麼把 Python 迴圈換成廣播或 GPU 運算會快很多?
Python 迴圈每一步都要經過直譯器,很慢。廣播和 PyTorch 把整批運算交給用 C 寫好、最佳化過的程式一次完成;GPU 還能同時算幾千個數字。
我的卡片盒筆記
卡片|少寫一層迴圈,速度可能快一千倍
同樣是矩陣乘法,用三層 Python 迴圈寫和交給 GPU 算,速度差了大約五百萬倍。關鍵在於把「一個一個算」改成「整批一起算」,讓底層最佳化的程式去處理。
我們學校運動會統計成績時,以前是每位老師拿著名單一個一個加總,花了整個下午。後來 IT 老師把成績放進試算表,一條公式拉下去全部算完。這和這課的道理一樣,重點不是算得更努力,而是換一種算法。不過我也發現,向量化的寫法比迴圈難讀,初學時我還是會先用迴圈寫對,再改成廣播。那次之後,我開始留意自己寫程式時有沒有可以整批處理的地方,例如用 list 一次處理全班成績,而不是一個個 print 出來。
這週我要做的小行動:用 Python 迴圈和 NumPy 各算一次 200×200 矩陣乘法,用 time 比較速度。
🔗 推薦產生關聯的筆記: → 程式效率類:「先寫對,再寫快」 → 工作方法類:「批次處理比逐件處理更省時」 → 數學類:「矩陣是一次處理很多組數字的語言」
回到課程筆記:L11_矩陣乘法_202611041526