1.2 Sequential API
Sequential API 是 Keras 最直覺的建模方式,適合一層接一層的線性堆疊模型。多數初學者的第一個 DNN、CNN 或簡單分類模型,都可以先用 Sequential API 完成。
1. 學習目標
這篇示範如何使用 tf.keras.Sequential 建立二元分類模型。範例資料是非線性的二維分類資料,目標是讓讀者看懂每一層如何堆疊,以及 Input、Dense、輸出層和 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. 如何套用自己的資料?
改成自己的資料時,主要調整:
Input(shape=(特徵數,))- 隱藏層的層數與神經元數量
- 輸出層與 loss function
二元分類通常維持:
6. 小結
Sequential API 是建立神經網路 baseline 的首選。只要模型是單一路徑,Sequential 寫法簡潔、好讀,也方便之後逐步調整層數、神經元數量與 activation function。