第二部:《深度學習》10/100 小結與測驗:手寫數字分類(MNIST)🖊 用 TensorFlow 練習第一個模型

更新於 發佈於 閱讀時間約 9 分鐘

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

10/100 第一週:深度學習基礎入門

10.小結與測驗:手寫數字分類(MNIST)🖊 用 TensorFlow 練習第一個深度模型!

________________________________________

✅ 基礎小結:你學會了什麼?

主題 核心觀念

感知機與前向傳播 每一層神經元加權計算輸入資訊並輸出 → 層層傳遞預測值

反向傳播 根據損失函數,透過梯度下降調整權重,逐步學習

激活函數 ReLU 提升效率、Sigmoid 和 Tanh 非線性、Softmax 分類

損失函數與優化器 CrossEntropy 用於分類、Adam 最普遍有效

正則化與過擬合 Dropout、L2 控制模型複雜度,防止模型死記訓練資料

資料切分 訓練/驗證/測試資料必須分離,才能驗證模型是否真正具泛化能力

________________________________________

📝 單選題測驗(共 5 題)

1️⃣ 下列哪一個激活函數最常用於多分類問題的輸出層?

A. ReLU  B. Tanh  C. Sigmoid  D. Softmax

✅ 答案:D

🔍 解析: Softmax 將輸出轉為機率分布,適合多分類輸出(如 0~9 十個數字類別)。

________________________________________

2️⃣ Dropout 的作用是什麼?

A. 增加模型深度 B. 隨機調整學習率 C. 避免過擬合 D. 訓練速度變快

✅ 答案:C

🔍 解析: Dropout 隨機忽略神經元,防止過度依賴部分特徵,有效降低過擬合風險。

________________________________________

3️⃣ 以下哪一項不應該參與模型訓練?

A. 訓練資料 B. 驗證資料 C. 測試資料 D. 所有資料都應該訓練

✅ 答案:C

🔍 解析: 測試資料應完全保留用於「最終驗證」,不能用於訓練或調參。

________________________________________

4️⃣ 神經網路的「反向傳播」主要目的是?

A. 產生輸出 B. 更新權重 C. 儲存結果 D. 做資料預處理

✅ 答案:B

🔍 解析: 反向傳播用來根據誤差調整每層的權重與偏差,幫助模型逐步學習。

________________________________________

5️⃣ 下列哪一個方法是正則化策略?

A. 使用 Adam B. 增加神經元 C. Dropout D. 加快學習率

✅ 答案:C

🔍 解析: Dropout 是常見正則化方法,可強化泛化能力並降低模型複雜度。

________________________________________

✅ TensorFlow 小示範:MNIST 手寫數字分類 🖊

下面範例使用 TensorFlow 建立並訓練一個簡單的深度學習模型來辨識手寫數字(MNIST 資料集)。首先將影像像素正規化至 0~1,再透過 Sequential 建立模型:將 28x28 的圖片攤平成 784 維輸入,經過一層 128 個神經元與 ReLU 激活,再加入 Dropout 防止過擬合,最後輸出 10 類 softmax 預測。使用 Adam 優化器與交叉熵作為損失函數,訓練 5 個 epoch,並保留 20% 作為驗證集。最後在測試資料上評估準確率,並印出第一筆預測結果。

📂 資料準備:

python


import tensorflow as tf


# 載入 MNIST 數據

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()


# 正規化處理

x_train, x_test = x_train / 255.0, x_test / 255.0

這段程式碼載入 MNIST 手寫數字資料集,並將影像像素值從原本的 0~255 範圍縮放到 0~1 之間,透過除以 255.0 進行正規化處理,有助於加快模型收斂速度並提升訓練穩定性,是訓練神經網路前常見的預處理步驟。

________________________________________

🧠 模型建立:

python


model = tf.keras.models.Sequential([

tf.keras.layers.Flatten(input_shape=(28, 28)), # 784個輸入特徵

tf.keras.layers.Dense(128, activation='relu'),

tf.keras.layers.Dropout(0.2), # Dropout避免過擬合

tf.keras.layers.Dense(10, activation='softmax') # 10個分類(0~9)

])

這段程式碼建立了一個簡單的深度學習分類模型。首先將 28x28 的影像攤平成 784 維向量,接著通過一層含 128 個 ReLU 激活的全連接層,再透過 Dropout(20% 隨機關閉神經元)減少過擬合,最後輸出層使用 softmax 將結果轉為 10 個類別的機率分佈,對應於手寫數字 0~9 的分類任務。

________________________________________

⚙️ 編譯與訓練:

python

model.compile(

optimizer='adam',

loss='sparse_categorical_crossentropy',

metrics=['accuracy']

)


# 訓練模型

model.fit(x_train, y_train, epochs=5, validation_split=0.2)

這段程式碼先使用 compile 設定模型的訓練方式,選擇 Adam 最佳化器、稀疏分類交叉熵作為損失函數(適用於整數標籤的多分類問題),並追蹤準確率作為評估指標。接著用 fit 函數訓練模型,將訓練資料中 20% 拿來當驗證集,共訓練 5 個世代(epochs),以評估模型在訓練過程中的學習效果與泛化能力。

________________________________________


📊 測試與預測:


python


# 模型效能評估

test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)

print(f"\n測試準確率:{test_acc:.4f}")


# 範例預測

import numpy as np

predictions = model.predict(x_test)

print(f"第1筆預測結果:{np.argmax(predictions[0])}")

這段程式碼先使用 evaluate 函數在測試資料上評估模型效能,輸出損失值與準確率,讓我們了解模型在未見過資料上的表現。接著使用 predict 對測試資料進行預測,predictions 是每筆資料對 10 個數字類別的機率分布,透過 np.argmax(predictions[0]) 取得第 1 筆資料預測結果中機率最高的類別,代表模型判斷這張圖片最可能是哪個數字。

________________________________________

🎯 小結與啟示:

✅ 這是你第一個完整訓練的神經網路模型

✅ 通過實作了解訓練、驗證與測試的全流程

✅ MLP 雖然簡單,但足以實現 98% MNIST 準確率

✅ 下一步:進入 CNN 卷積神經網路,挑戰更高難度的圖像辨識任務!


留言
avatar-img
留言分享你的想法!
avatar-img
Hansen W的沙龍
8會員
119內容數
AIHANS沙龍是一個結合AI技術實戰、產業策略與自我成長的知識平台,主題涵蓋機器學習、生成式AI、創業經驗、財務規劃及哲學思辨。這裡不只提供系統化學習資源與實作案例,更強調理性思維與行動力的結合。無論你是AI初學者、創業者,還是追求人生升維的行者,都能在這裡找到前進的方向與志同道合的夥伴。
Hansen W的沙龍的其他內容
2025/08/29
為提升模型泛化能力,資料須切分為訓練集、驗證集與測試集。訓練集用來學習參數,驗證集用於調參與早停,測試集則專供最終評估,不能參與訓練。常見比例為 6:2:2,資料量少時可用 K-Fold 交叉驗證確保評估穩定。適當切分資料能避免模型「偷看答案」,確保學習效果真實可靠。
2025/08/29
為提升模型泛化能力,資料須切分為訓練集、驗證集與測試集。訓練集用來學習參數,驗證集用於調參與早停,測試集則專供最終評估,不能參與訓練。常見比例為 6:2:2,資料量少時可用 K-Fold 交叉驗證確保評估穩定。適當切分資料能避免模型「偷看答案」,確保學習效果真實可靠。
2025/08/29
過擬合是模型記住訓練資料細節,導致無法泛化。可透過 Dropout、L2 正則化、Early Stopping 等方法限制模型過度學習,提升對新資料的表現,讓模型學會規律而非死背答案。
2025/08/29
過擬合是模型記住訓練資料細節,導致無法泛化。可透過 Dropout、L2 正則化、Early Stopping 等方法限制模型過度學習,提升對新資料的表現,讓模型學會規律而非死背答案。
2025/07/11
深度學習透過多層神經網路自動學習資料特徵,廣泛應用於語音辨識、影像處理、自然語言理解與創意生成等領域。其強大能力源於可處理非線性關係並支援結構化與非結構化資料,常見模型如 CNN、Transformer、GAN 等。應用實例包含 Siri 語音助理、醫療影像判讀、AI 作畫與機器翻譯等。
2025/07/11
深度學習透過多層神經網路自動學習資料特徵,廣泛應用於語音辨識、影像處理、自然語言理解與創意生成等領域。其強大能力源於可處理非線性關係並支援結構化與非結構化資料,常見模型如 CNN、Transformer、GAN 等。應用實例包含 Siri 語音助理、醫療影像判讀、AI 作畫與機器翻譯等。
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
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
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
Thumbnail
GNN發展背景 傳統的深度學習模型如在計算機視覺(CV)和自然語言處理(NLP)領域中極為成功,主要是處理結構化數據如影像和文本。這些數據類型通常具有固定且規律的結構,例如影像是由有序的像素點組成。然而,在真實世界中,許多數據是非結構化的,如化合物結構(原子和分子)。這些數據雖然具有一定的規則性,
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
本文主要介紹神經網路訓練辨識的過程,利用fashion_mnist及簡單的神經網路來進行分類。 使用只有兩層的神經網路來訓練辨識fashion_mnist資料。
Thumbnail
streamlit與github連動程式庫,呈現即時預測手寫英文字母 整理了一下,先前學的機器學習利用Colab來訓練出能辨識手寫A~Z英文字母的模型,使用的模型是CNN(Convolutional Neural Network,CNN)模型 訓練好的模型,當然是要拿來應用,成果呈現
Thumbnail
streamlit與github連動程式庫,呈現即時預測手寫英文字母 整理了一下,先前學的機器學習利用Colab來訓練出能辨識手寫A~Z英文字母的模型,使用的模型是CNN(Convolutional Neural Network,CNN)模型 訓練好的模型,當然是要拿來應用,成果呈現
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News