跳轉到

1.2 Sequential API

範例程式:Open In Colab

Sequential API 是 Keras 最直覺的建模方式,適合一層接一層的線性堆疊模型。多數初學者的第一個 DNN、CNN 或簡單分類模型,都可以先用 Sequential API 完成。

1. 學習目標

這篇示範如何使用 tf.keras.Sequential 建立二元分類模型。範例資料是非線性的二維分類資料,目標是讓讀者看懂每一層如何堆疊,以及 InputDense、輸出層和 compile 之間的關係。

Notebook 使用 make_moons 建立二維非線性資料。這份資料可以直接畫在平面上,適合觀察 DNN 如何透過多層 Dense 與 ReLU 學出非線性分類邊界。

2. Sequential API 適合什麼情境?

Sequential API 適合「單一路徑」模型:資料從第一層進入,依序通過每一層,最後得到輸出。

適合 不適合
DNN 表格分類與迴歸 多輸入模型
基礎 CNN 圖片分類 多輸出模型
快速建立 baseline 分支、合併、跳接結構

如果模型需要多個輸入、分支或多個輸出,就應該改用 Functional API。

3. 標準模型寫法

model = tf.keras.Sequential([
    tf.keras.layers.Input(shape=(2,)),
    tf.keras.layers.Dense(16, activation='relu'),
    tf.keras.layers.Dense(8, activation='relu'),
    tf.keras.layers.Dense(1, activation='sigmoid')
])

最後一層使用 Dense(1, activation='sigmoid'),代表模型輸出一個 0 到 1 之間的機率,適合二元分類。

4. 評估模型

模型訓練完成後,建議至少比較訓練集與測試集:

train_result = model.evaluate(x_train, y_train, return_dict=True)
test_result = model.evaluate(x_test, y_test, return_dict=True)

如果訓練分數很高但測試分數明顯低很多,通常代表模型可能過擬合。

對二元分類任務,也可以再觀察 confusion matrix 與 classification report,確認模型是否只偏向其中一類,而不是只看 accuracy。

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

改成自己的資料時,主要調整:

  1. Input(shape=(特徵數,))
  2. 隱藏層的層數與神經元數量
  3. 輸出層與 loss function

二元分類通常維持:

Dense(1, activation='sigmoid')
loss='binary_crossentropy'

6. 小結

Sequential API 是建立神經網路 baseline 的首選。只要模型是單一路徑,Sequential 寫法簡潔、好讀,也方便之後逐步調整層數、神經元數量與 activation function。