第二部:《深度學習》30/100 小結與測驗:貓狗分類器 🐱🐶 自己訓練會辨別的眼睛!

更新 發佈閱讀 11 分鐘

AI時代系列(2) 機器學習三部曲: 🔹 第二部:《深度學習 —— 神經網路的革命》

30/100 第三週:📌 卷積神經網路 CNN

30.小結與測驗:貓狗分類器 🐱🐶 自己訓練會辨別的眼睛!

________________________________________

✅ 一、單元重點總覽(第 21~29 節)

  • 21. CNN 誕生與應用 👁‍🗨:模仿視覺皮質,擅長圖像辨識與處理
  • 22. 卷積層原理 🧩:濾鏡提取邊緣、紋理等局部特徵
  • 23. 池化層 📉:降低特徵圖維度,提升容錯與運算效率
  • 24. 步長與填充 ⛓:控制輸出尺寸與特徵保留程度
  • 25. 多通道與濾鏡輸出 🎨:處理 RGB 圖像並提取多組特徵
  • 26. CNN 經典架構 🏛:涵蓋 LeNet、AlexNet、VGG、ResNet 等應用
  • 27. 批次正規化 ⚖:穩定訓練、加快收斂、減少過擬合風險
  • 28. Flatten + Dense 📐:轉為向量輸出類別機率分布
  • 29. 圖像增強與資料擴充 📸:模擬真實變化,強化泛化能力

________________________________________

📝 二、觀念測驗題

(單選題 5 題 + 簡答題 3 題)

________________________________________

✅ 單選題(共 5 題)

1️⃣ 卷積層中濾鏡的主要功能是?

A. 儲存訓練結果

B. 增加參數數量

C. 擷取局部空間特徵

D. 刪除雜訊資訊

✅ 正解:C

🧠 解析:濾鏡(filter)在圖像中滑動,主要目的就是提取如邊緣、紋理、角度等局部特徵。

________________________________________

2️⃣ 下列哪一個層級的作用是「降低特徵圖尺寸、提升容錯能力」?

A. 卷積層

B. 池化層

C. Flatten 層

D. Dense 層

✅ 正解:B

🧠 解析:池化層(如 MaxPooling)用來壓縮特徵圖空間大小,同時保留重要特徵並提升模型對於位置偏移的容忍度。

________________________________________

3️⃣ 使用 padding='same' 時,卷積操作的結果會?

A. 輸出特徵圖尺寸等於輸入

B. 輸出縮小

C. 輸出擴大

D. 僅適用於池化層

✅ 正解:A

🧠 解析:same padding 會在邊緣補 0,確保輸出特徵圖尺寸與輸入相同(前提是 stride=1)。

________________________________________

4️⃣ 為了增加訓練資料的多樣性並提升泛化力,應該使用下列哪一方法?

A. Batch Normalization

B. Flatten

C. Image Augmentation

D. Dropout

✅ 正解:C

🧠 解析:圖像增強(Image Augmentation)是模擬圖片的角度、亮度、位置、翻轉等方式,有效提高模型泛化能力。

________________________________________

5️⃣ 哪一層的輸出最常直接用來進行分類?

A. Conv2D

B. MaxPooling2D

C. Flatten

D. Dense(全連接層)

✅ 正解:D

🧠 解析:分類模型的最後一層通常為 Dense 層,搭配 Sigmoid 或 Softmax 輸出對應類別的機率分佈。

________________________________________

✍️ 簡答題(共 3 題)

Q1. 為什麼 CNN 比 MLP 更適合處理圖像?請列舉至少兩項理由。

✅ 參考解答:

1. CNN 能保留圖像的空間結構(不像 MLP 要扁平化輸入)

2. 卷積濾鏡具有局部感知與參數共享特性,可有效捕捉圖像特徵

3. CNN 訓練參數少於 MLP,計算效率高且較不易過擬合

________________________________________

Q2. 請說明 Batch Normalization 的作用與訓練中放置的位置。

✅ 參考解答:

Batch Normalization 可將每層輸入特徵標準化,穩定梯度傳遞、加快模型收斂,並具有正則化效果。

它通常放在「Conv 或 Dense 層後、ReLU 激活函數前」。

________________________________________

Q3. 假如你發現模型在訓練集準確率高但驗證集很差,你會怎麼調整 CNN 架構?

✅ 參考解答:

這是典型過擬合問題,可採用:

加入 Dropout 或增加 Dropout 比例

使用資料擴充(Image Augmentation)

降低模型複雜度(減少濾鏡或 Dense 神經元數量)

引入 EarlyStopping、正則化(L2)

________________________________________

🎮 三、實作練習:簡易 CNN 貓狗分類器 🐶🐱

📦 使用 TensorFlow 內建影像增強與模型流程

python

import tensorflow as tf

from tensorflow.keras import layers, models

from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 圖像增強

train_datagen = ImageDataGenerator(

rescale=1./255,

rotation_range=15,

zoom_range=0.1,

horizontal_flip=True,

validation_split=0.2

)

train_generator = train_datagen.flow_from_directory(

'dataset/cats_and_dogs/',

target_size=(128, 128),

batch_size=32,

class_mode='binary',

subset='training'

)

val_generator = train_datagen.flow_from_directory(

'dataset/cats_and_dogs/',

target_size=(128, 128),

batch_size=32,

class_mode='binary',

subset='validation'

)

這段程式碼透過 ImageDataGenerator 結合目錄載入功能,實現影像的即時資料增強與資料劃分,並將資料整理成適合 Keras 模型訓練的格式。這種方式不但能提升模型對於圖像變異的泛化能力,還方便進行大規模圖片分類任務,是圖像分類實作中最常用的資料前處理策略之一。

____________________________________

🧠 模型架構設計(簡易版 CNN)

python

model = models.Sequential([

layers.Conv2D(32, (3, 3), activation='relu', input_shape=(128, 128, 3)),

layers.MaxPooling2D(2, 2),

layers.Conv2D(64, (3, 3), activation='relu'),

layers.MaxPooling2D(2, 2),

layers.Flatten(),

layers.Dense(64, activation='relu'),

layers.Dense(1, activation='sigmoid') # 二分類:貓 or 狗

])

model.compile(optimizer='adam',

loss='binary_crossentropy',

metrics=['accuracy'])

model.fit(train_generator, validation_data=val_generator, epochs=10)

這段程式碼構建並訓練了一個用於辨識貓與狗的卷積神經網路(CNN)。模型包含兩組卷積與池化層,用來提取影像特徵,經過展平後接入全連接層,最後以 sigmoid 函數輸出二元分類結果。編譯時使用 Adam 最佳化器與 binary crossentropy 損失函數,並以準確率作為評估指標。透過 train_generator 與 val_generator 載入增強後的影像資料,進行 10 個 epoch 的訓練,可有效學習貓狗影像特徵並具備良好泛化能力。

________________________________________

📊 結果評估與觀察:

訓練過程中可視化 accuracy / loss 曲線

可用混淆矩陣檢查哪一類易誤判

可使用 Grad-CAM(進階)觀察模型「看哪裡」

________________________________________

🎯 小結與啟示:

✅ CNN 能自動從圖像中學習多階層特徵

✅ 每層結構都有特定功能:濾鏡提特徵、池化降維、Flatten 全連接分類

✅ 實務中需搭配資料擴充與正規化機制,提升模型泛化與穩定性


留言
avatar-img
留言分享你的想法!
avatar-img
Hansen W的沙龍
13會員
344內容數
AIHANS沙龍是一個結合AI技術實戰、產業策略與自我成長的知識平台,主題涵蓋機器學習、生成式AI、創業經驗、財務規劃及哲學思辨。這裡不只提供系統化學習資源與實作案例,更強調理性思維與行動力的結合。無論你是AI初學者、創業者,還是追求人生升維的行者,都能在這裡找到前進的方向與志同道合的夥伴。
Hansen W的沙龍的其他內容
2025/09/04
圖像增強透過旋轉、平移、翻轉、亮度調整等方法,模擬不同環境與視角,提高 CNN 模型的泛化能力與抗干擾性,有效防止過擬合並擴充訓練資料,是影像辨識中常用且實用的技巧。
2025/09/04
圖像增強透過旋轉、平移、翻轉、亮度調整等方法,模擬不同環境與視角,提高 CNN 模型的泛化能力與抗干擾性,有效防止過擬合並擴充訓練資料,是影像辨識中常用且實用的技巧。
2025/09/04
Flatten 將 CNN 提取的多維特徵圖攤平成一維向量,供全連接層(Dense)進行分類決策。Dense 層可整合所有特徵,搭配激活函數如 ReLU 與 Softmax 完成輸出,是 CNN 模型邁向分類的關鍵步驟。
2025/09/04
Flatten 將 CNN 提取的多維特徵圖攤平成一維向量,供全連接層(Dense)進行分類決策。Dense 層可整合所有特徵,搭配激活函數如 ReLU 與 Softmax 完成輸出,是 CNN 模型邁向分類的關鍵步驟。
2025/09/04
批次正規化(Batch Norm)可穩定激活分布、加速收斂並提升泛化能力,常用於卷積或全連接層後、ReLU 前。透過標準化與可學參數調整輸入分布,是 ResNet、Transformer 等架構的關鍵技術。小 batch 時可改用 Layer Norm 或 Group Norm。
2025/09/04
批次正規化(Batch Norm)可穩定激活分布、加速收斂並提升泛化能力,常用於卷積或全連接層後、ReLU 前。透過標準化與可學參數調整輸入分布,是 ResNet、Transformer 等架構的關鍵技術。小 batch 時可改用 Layer Norm 或 Group Norm。
看更多
你可能也想看
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本篇文章介紹如何使用PyTorch構建和訓練圖神經網絡(GNN),並使用Cora資料集進行節點分類任務。通過模型架構的逐步優化,包括引入批量標準化和獨立的消息傳遞層,調整Dropout和聚合函數,顯著提高了模型的分類準確率。實驗結果表明,經過優化的GNN模型在處理圖結構數據具有強大的性能和應用潛力。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文將延續上一篇文章,經由訓練好的GAN模型中的生成器來生成圖片 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 [深度學習][Python]訓練CNN的GAN模型來生成圖片_訓練篇 相較之下CNN的GAN生成的效果比較好,但模型也相對比較複雜,訓練時間花的也比較
Thumbnail
本文將延續上一篇文章,經由訓練好的GAN模型中的生成器來生成圖片 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 [深度學習][Python]訓練CNN的GAN模型來生成圖片_訓練篇 相較之下CNN的GAN生成的效果比較好,但模型也相對比較複雜,訓練時間花的也比較
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
延續上一篇訓練GAM模型,這次我們讓神經網路更多層更複雜一點,來看訓練生成的圖片是否效果會更好。 [深度學習][Python]訓練MLP的GAN模型來生成圖片_訓練篇 資料集分割處理的部分在延續上篇文章,從第五點開始後修改即可,前面都一樣 訓練過程,比較圖 是不是CNN的效果比MLP還要好,
Thumbnail
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
Thumbnail
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News