從經典案例學習 CNN:手寫數字辨識與彩色影像分類完整實戰
一套完整的深度學習教材,涵蓋 MNIST 手寫數字辨識與 CIFAR-10 彩色影像分類,從基礎理論到進階實作。
本系列教材共分為四個部分,總計超過 35,000 字,包含:
檔案: CNN_intro_b07.html
字數: ~9,000 字
預計學習時間: 1-2 週
內容涵蓋:
- 🎯 第零部分:基礎知識
- MNIST 資料集完整介紹
- CIFAR-10 資料集完整介紹
- Keras vs PyTorch 框架對比
- 專有名詞對照表(40+ 個術語)
環境檢查與驗證
🎯 第二部分:MNIST + LeNet-5 (Keras)
學習成果:
- ✅ 理解 CNN 基本概念
- ✅ 熟悉 Keras 框架
- ✅ 完成第一個 CNN 模型
檔案: CNN_intro_b07_part2.html
字數: ~8,500 字
預計學習時間: 1-2 週
內容涵蓋:
- 🎯 第三部分:MNIST + SimpleCNN (PyTorch)
- PyTorch 核心概念
- Tensor(張量)
- nn.Module(模型基類)
- DataLoader(資料載入器)
- 訓練迴圈結構
- SimpleCNN 現代化架構
- 完整訓練迴圈手寫
- 達到 99%+ 準確率
padding 的作用model.train() vs model.eval()torch.no_grad() 的重要性zero_grad() 為什麼必須CrossEntropyLoss 的細節
🎯 Keras vs PyTorch 實作對比
學習成果:
- ✅ 深入理解深度學習原理
- ✅ 掌握 PyTorch 框架
- ✅ 手寫完整訓練迴圈
檔案: CNN_intro_b07_part3.html
字數: ~10,000 字
預計學習時間: 2-3 週
內容涵蓋:
- 🎯 第四部分:CIFAR-10 進階實戰
- 從 MNIST 到 CIFAR-10 的挑戰
- 挑戰對比表
- 具體困難範例
- 為什麼 CIFAR-10 更難
效果對比實驗
🎯 進階 CNN 架構:DeepCIFAR
架構演進圖
🎯 完整實作:Keras 與 PyTorch 雙版本
達到 85-88% 準確率
🎯 結果分析與對比
學習成果:
- ✅ 掌握資料增強技術
- ✅ 理解 Batch Normalization
- ✅ 完成彩色影像分類任務
檔案: CNN_intro_b07_part4.html
字數: ~15,000 字
預計學習時間: 2-3 週
內容涵蓋:
- 🎯 第五部分:實戰技巧與疑難排解
- 常見問題與解決方案
- 準確率停滯
- 過擬合問題
- 訓練速度慢
- CUDA Out of Memory
- 模型不收斂的診斷流程
- 過擬合與欠擬合理論
- 超參數調整指南
- 效能優化技巧
實際應用領域
🎯 完整學習路線圖
進度檢查清單
🎯 CNN 理論與概念完整總結(新增!)
核心公式速查表
🎯 總結與下一步
學習成果:
- ✅ 掌握疑難排解技巧
- ✅ 理解完整的 CNN 理論體系
- ✅ 具備獨立開發 CNN 模型的能力
總時長: 6-8 週(全職)或 12-20 週(兼職)
Week 1-2: Part 1 基礎知識 + Keras 實作
├─ 認識 MNIST 和 CIFAR-10
├─ Google Colab 設置
└─ LeNet-5 實作 (目標: 98%+ 準確率)
Week 3-4: Part 2 PyTorch 深度實戰
├─ 學習 PyTorch 核心概念
├─ 手寫訓練迴圈
└─ SimpleCNN 實作 (目標: 99%+ 準確率)
Week 5-6: Part 3 CIFAR-10 挑戰
├─ 資料增強技術
├─ Batch Normalization
└─ DeepCIFAR 實作 (目標: 85%+ 準確率)
Week 7-8: Part 4 進階技巧與理論總結
├─ 疑難排解
├─ 超參數調整
├─ 完整理論複習
└─ 準備進階挑戰
總時長: 3-4 週
適合有程式經驗且時間有限的學習者:
Week 1: Part 1 + Part 2 快速實作
└─ 重點:跑通所有程式碼,理解基本流程
Week 2: Part 3 CIFAR-10
└─ 重點:資料增強、Batch Normalization
Week 3-4: Part 4 理論總結 + 進階主題
└─ 重點:理論體系、疑難排解
總時長: 8-12 週
適合想要深入理解的學習者:
按照 Part 1-4 順序學習
每個 Part 額外花時間:
├─ 修改超參數進行實驗
├─ 嘗試不同架構
├─ 閱讀相關論文
├─ 視覺化模型內部
└─ 完成額外練習
| 主題 | 位置 | 檔案 |
|---|---|---|
| CNN 基本概念 | Part 1 - 第零部分 | CNN_intro_b07.html |
| MNIST 資料集 | Part 1 - 第零部分 | CNN_intro_b07.html |
| CIFAR-10 資料集 | Part 1 - 第零部分 | CNN_intro_b07.html |
| Keras 實作 | Part 1 - 第二部分 | CNN_intro_b07.html |
| PyTorch 實作 | Part 2 - 第三部分 | CNN_intro_b07_part2.html |
| 資料增強 | Part 3 - 第四部分 | CNN_intro_b07_part3.html |
| Batch Normalization | Part 3 - 第四部分 | CNN_intro_b07_part3.html |
| 過擬合問題 | Part 4 - 第五部分 | CNN_intro_b07_part4.html |
| 超參數調整 | Part 4 - 第五部分 | CNN_intro_b07_part4.html |
| 卷積數學原理 | Part 4 - 理論總結 | CNN_intro_b07_part4.html |
| 激活函數對比 | Part 4 - 理論總結 | CNN_intro_b07_part4.html |
| 優化器原理 | Part 4 - 理論總結 | CNN_intro_b07_part4.html |
| 反向傳播 | Part 4 - 理論總結 | CNN_intro_b07_part4.html |
| 問題 | 解決方案位置 | 檔案 |
|---|---|---|
| 準確率停滯 | Part 4 - 問題 1 | CNN_intro_b07_part4.html |
| 過擬合 | Part 4 - 問題 2 | CNN_intro_b07_part4.html |
| 訓練太慢 | Part 4 - 問題 3 | CNN_intro_b07_part4.html |
| 記憶體不足 | Part 4 - 問題 4 | CNN_intro_b07_part4.html |
| 模型不收斂 | Part 4 - 診斷流程 | CNN_intro_b07_part4.html |
| 不知如何調參 | Part 4 - 超參數指南 | CNN_intro_b07_part4.html |
❌ 只看不寫:理解度 30%
✅ 邊看邊寫:理解度 70%
🔥 修改實驗:理解度 95%
推薦做法:
- 複製程式碼到 Colab
- 完整執行一遍
- 修改超參數觀察變化
- 嘗試不同架構
Part 1 (98% 準確率) → Part 2 (99% 準確率) → Part 3 (85% 準確率)
不要跳躍:
- Part 1 沒達到 98% → 先除錯
- Part 2 沒達到 99% → 先檢查
- 確保基礎扎實再進階
推薦順序:
1. 先跑程式碼(知道「是什麼」)
2. 再看理論(理解「為什麼」)
3. 最後實驗(驗證理解)
利用本系列的 Mermaid 圖表:
- 學習路徑圖
- 架構演進圖
- 診斷流程圖
- 理論體系圖
建議做法:
- 每完成一個 Part,寫下學習心得
- 遇到問題,記錄解決過程
- 定期回顧,整理知識體系
model.summary() 輸出zero_grad(), backward(), step() 的作用完成本系列後,你將能夠:
EfficientNet (高效網路)
遷移學習
Domain Adaptation
物體偵測
SSD
影像分割
DeepLab
實際應用
線上課程:
- Coursera: Deep Learning Specialization (Andrew Ng)
- Fast.ai: Practical Deep Learning
- Stanford CS231n
書籍:
- Deep Learning (Goodfellow, Bengio, Courville)
- Hands-On Machine Learning (Aurélien Géron)
論文:
- LeNet-5 (1998)
- AlexNet (2012)
- VGGNet (2014)
- ResNet (2015)
實戰平台:
- Kaggle 競賽
- Papers With Code
- GitHub 開源專案
必須:
- Python 基礎語法
- NumPy 基本操作
- 基礎線性代數(矩陣乘法)
建議:
- 微積分基礎(導數概念)
- 機率統計基礎
答案:不需要購買 GPU!
答案:兩個都學!
全職學習:6-8 週
兼職學習:12-20 週
快速入門:3-4 週
檢查清單:
- ✅ MNIST 準確率 > 99%
- ✅ CIFAR-10 準確率 > 85%
- ✅ 能手寫訓練迴圈
- ✅ 能解釋核心概念
- ✅ 能獨立完成新專案
如果您在學習過程中有任何問題或建議,歡迎:
文件版本: README
最後更新: 2025-10-07
系列狀態: 全四部分已完成 ✅