跳轉到

1.1 TensorFlow 與 Keras 基礎介紹

範例程式:Open In Colab

TensorFlow 是用來進行數值運算、模型訓練與模型部署的機器學習框架;Keras 則是 TensorFlow 中最常用的高階深度學習 API。對初學者來說,可以先把 TensorFlow 想成底層運算工具,把 Keras 想成建立與訓練神經網路的標準介面。

本篇不急著建立大型模型,而是先用最小範例理解 Tensor、Variable、自動微分與 Keras 訓練流程。只要先掌握這幾個元件,後續看到 DNN、CNN 或 Transformer 時,就比較容易理解模型訓練背後共同的邏輯。

1. 學習目標

這篇先建立 TensorFlow/Keras 的基本工作直覺:資料會變成 tensor,模型的可訓練參數會用 variable 表示,訓練過程會透過 loss 與 gradient 更新參數。最後會用 Keras 建立一個簡單的線性迴歸模型,完整跑過 compilefitevaluatepredict

2. Tensor、Variable 與 NumPy 的關係

Tensor 是 TensorFlow 的基本資料單位,概念接近 NumPy array,但可以交給 TensorFlow 管理運算圖、自動微分與硬體加速。tf.Variable 則代表可被訓練更新的數值,神經網路中的權重與偏差本質上就是 variable。

物件 用途
tf.Tensor 固定的數值資料,例如輸入資料或中間運算結果
tf.Variable 可更新的參數,例如模型權重
np.ndarray Python 資料分析常用的陣列格式,可與 TensorFlow 互轉

3. 自動微分是訓練的核心

深度學習訓練的核心是根據 loss 對模型參數計算梯度,再用 optimizer 更新參數。TensorFlow 使用 tf.GradientTape() 記錄運算過程,並自動計算微分。

x = tf.Variable(3.0)

with tf.GradientTape() as tape:
    y = x ** 2

grad = tape.gradient(y, x)
print(grad.numpy())  # 6.0

Note

不需要手刻每一層神經網路的微分公式,是現代深度學習框架的重要價值。Keras 的 model.fit() 會在背後替我們完成 forward pass、loss 計算、backpropagation 與參數更新。

4. Keras 的標準訓練流程

Keras 模型最常見的流程如下:

準備資料 → 建立模型 → compile → fit → evaluate → predict

對應到程式:

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(1,)),
    tf.keras.layers.Dense(1)
])

model.compile(optimizer='adam', loss='mse', metrics=['mae'])
model.fit(x_train, y_train, epochs=100)
model.evaluate(x_test, y_test)
model.predict(new_x)

Notebook 會用一個簡單的線性迴歸資料 y = 3x + 2 示範這個流程。這個範例刻意保持簡單,目的是讓讀者先看懂 Keras 的訓練步驟,而不是被資料前處理或模型架構分散注意力。

5. 如何套用到自己的資料?

如果要改成自己的資料,最重要的是先確認三件事:

  1. x_train 的 shape 是否符合模型第一層 Input(shape=...)
  2. y_train 的型態是否符合任務,例如回歸是連續數值、分類是類別標籤。
  3. loss 與輸出層是否符合任務,例如回歸常用 mse,二元分類常用 sigmoid + binary_crossentropy

6. 小結

TensorFlow/Keras 的入門重點不是一次背完所有 API,而是先理解模型訓練的共同流程。後續不論做表格資料、圖片、文字或時間序列,基本上都會反覆使用這套流程。