📌 第 13 小時:Python 深度學習入門(Deep Learning with TensorFlow & Keras)
深度學習(Deep Learning)是機器學習的進階技術,使用人工神經網路(Artificial Neural Networks, ANN) 模擬人腦的學習方式。Python 提供 TensorFlow 和 Keras 來構建強大的深度學習模型。本章將介紹:
- 深度學習概念
- 安裝 TensorFlow & Keras
- 建立神經網路(ANN)
- 訓練影像分類模型(CNN)
- 自然語言處理(NLP)
- 模型評估與改進
🔹 1. 深度學習概念
深度學習基於 人工神經網路(ANN),模擬大腦神經元的工作方式,主要用於:
- 影像辨識(CNN):人臉識別、醫學影像分析
- 自然語言處理(NLP):聊天機器人、語音辨識、翻譯
- 強化學習(Reinforcement Learning):自駕車、遊戲 AI
🔹 神經網路的基本結構
- 輸入層(Input Layer):負責接收數據
- 隱藏層(Hidden Layers):透過 神經元(Neurons) 進行特徵學習
- 輸出層(Output Layer):產生預測結果
📌 深度學習的關鍵技術:
- 激活函數(Activation Function):如 ReLU、Sigmoid、Softmax
- 損失函數(Loss Function):衡量模型錯誤程度
- 優化器(Optimizer):如 SGD、Adam,負責模型學習
🔹 2. 安裝 TensorFlow & Keras
TensorFlow 是 Google 開發的深度學習框架,Keras 是其高階 API,可快速建立神經網路。
🟢 安裝 TensorFlow
pip install tensorflow
🟢 檢查 TensorFlow 是否成功安裝
import tensorflow as tf
print(tf.__version__) # 檢查 TensorFlow 版本
🔹 3. 建立簡單的神經網路
我們將使用 Keras
建立 人工神經網路(ANN) 來預測 手寫數字辨識(MNIST)。
🟢 讀取數據
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
# 下載 MNIST 手寫數字資料集
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 正規化數據(0~255 → 0~1)
X_train, X_test = X_train / 255.0, X_test / 255.0
# One-hot 編碼
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
🟢 建立 ANN 模型
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
model = Sequential([
Flatten(input_shape=(28, 28)), # 轉換 28x28 圖片為 1D 向量
Dense(128, activation="relu"), # 隱藏層
Dense(10, activation="softmax") # 輸出層(10 類別)
])
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
model.summary() # 顯示模型架構
🟢 訓練模型
model.fit(X_train, y_train, epochs=10, validation_data=(X_test, y_test))
📌 每個 epoch
表示模型掃描完整數據集一次,訓練 10 次。
🔹 4. 訓練卷積神經網路(CNN)
卷積神經網路(Convolutional Neural Network, CNN)專門用於 影像辨識,我們來建立 CNN 來辨識手寫數字。
🟢 建立 CNN 模型
from tensorflow.keras.layers import Conv2D, MaxPooling2D
model = Sequential([
Conv2D(32, (3,3), activation="relu", input_shape=(28,28,1)), # 卷積層
MaxPooling2D((2,2)), # 池化層
Flatten(),
Dense(128, activation="relu"),
Dense(10, activation="softmax")
])
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
model.fit(X_train.reshape(-1,28,28,1), y_train, epochs=10, validation_data=(X_test.reshape(-1,28,28,1), y_test))
📌 CNN 由 卷積層(Conv2D)+ 池化層(MaxPooling2D)+ 全連接層(Dense) 組成,可擷取影像特徵。
🔹 5. 自然語言處理(NLP)
NLP 主要處理 文字數據,如 情感分析、機器翻譯、聊天機器人。
🟢 使用 TensorFlow
進行 NLP
from tensorflow.keras.preprocessing.text import Tokenizer
texts = ["I love Python", "Deep Learning is amazing", "NLP is fun"]
tokenizer = Tokenizer(num_words=1000)
tokenizer.fit_on_texts(texts)
word_index = tokenizer.word_index
print(word_index) # 顯示單字索引
📌 Tokenizer 可將文字轉換為數字序列,便於神經網路訓練。
🔹 6. 模型評估與調整
🟢 模型評估
loss, accuracy = model.evaluate(X_test.reshape(-1,28,28,1), y_test)
print(f"測試集準確率: {accuracy:.2f}")
🟢 避免過擬合(Overfitting)
過擬合(Overfitting)是指模型在訓練集表現很好,但測試集效果差,解決方法:
- 加入 Dropout 層:隨機忽略部分神經元,增加模型泛化能力
from tensorflow.keras.layers import Dropout
model.add(Dropout(0.5)) # 50% 隨機忽略
- 增加數據增強(Data Augmentation)
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen = ImageDataGenerator(rotation_range=10, zoom_range=0.1)
datagen.fit(X_train.reshape(-1,28,28,1))
📌 第 13 小時小結
✅ 深度學習基於人工神經網路(ANN)與卷積神經網路(CNN)
✅ TensorFlow
和 Keras
提供高效的深度學習框架
✅ Sequential()
建立神經網路,Dense()
定義神經元層
✅ model.fit()
訓練模型,model.evaluate()
測試模型
✅ Conv2D()
卷積層專門用於影像辨識
✅ 避免過擬合的方法:Dropout、Data Augmentation
學完這一章,你已掌握 深度學習基礎與 Python 實作,下一步將學習 人工智慧應用(AI + Chatbot),讓你的 Python 能與人類對話!🚀
沒有留言:
張貼留言