Keras 是 TensorFlow 平台的高階 API。它提供平易近人、生產力高的介面,可解決機器學習 (ML) 問題,並著重於現代深度學習。Keras 涵蓋機器學習工作流程的每個步驟,從資料處理到超參數調整再到部署。它的開發重點是實現快速實驗。
透過 Keras,您可以完整存取 TensorFlow 的擴充性和跨平台功能。您可以在 TPU Pod 或大型 GPU 叢集上執行 Keras,也可以匯出 Keras 模型以在瀏覽器或行動裝置上執行。您也可以透過 Web API 提供 Keras 模型。
Keras 的設計宗旨是透過達成以下目標來降低認知負荷
- 提供簡單且一致的介面。
- 盡量減少常見使用案例所需的操作次數。
- 提供清晰且可行的錯誤訊息。
- 遵循複雜性漸進揭露原則:入門容易,而且您可以透過邊做邊學的方式完成進階工作流程。
- 協助您編寫簡潔、可讀性高的程式碼。
Keras 的適用對象
簡短的答案是,每位 TensorFlow 使用者都應該預設使用 Keras API。無論您是工程師、研究人員還是 ML 從業人員,都應該從 Keras 開始。
有些使用案例 (例如,在 TensorFlow 之上建構工具或開發自己的高效能平台) 需要低階的 TensorFlow Core API。但如果您的使用案例不屬於 Core API 應用程式 的範疇,則應優先選擇 Keras。
Keras API 元件
Keras 的核心資料結構是層和模型。層是簡單的輸入/輸出轉換,模型是層的定向非循環圖 (DAG)。
層
tf.keras.layers.Layer
類別是 Keras 中的基本抽象概念。Layer
封裝狀態 (權重) 和一些計算 (在 tf.keras.layers.Layer.call
方法中定義)。
由層建立的權重可以是可訓練或不可訓練的。層是遞迴可組合的:如果您將層執行個體指派為另一個層的屬性,則外部層將開始追蹤由內部層建立的權重。
您也可以使用層來處理資料預先處理工作,例如正規化和文字向量化。預先處理層可以直接包含在模型中 (在訓練期間或之後),這使得模型具有可攜性。
模型
模型是將層分組在一起並可在資料上訓練的物件。
最簡單的模型類型是 Sequential
模型,它是層的線性堆疊。對於更複雜的架構,您可以使用 Keras Functional API (可讓您建構任意層圖),或使用子類別化從頭開始編寫模型。
tf.keras.Model
類別具有內建的訓練和評估方法
tf.keras.Model.fit
:訓練模型固定次數的週期。tf.keras.Model.predict
:為輸入樣本產生輸出預測。tf.keras.Model.evaluate
:傳回模型的損失和指標值;透過tf.keras.Model.compile
方法設定。
這些方法可讓您存取下列內建訓練功能
- 回呼。您可以利用內建回呼進行提早停止、模型檢查點和 TensorBoard 監控。您也可以實作自訂回呼。
- 分散式訓練。您可以輕鬆地將訓練擴充到多個 GPU、TPU 或裝置。
- 步驟融合。透過
tf.keras.Model.compile
中的steps_per_execution
引數,您可以在單一tf.function
呼叫中處理多個批次,這可大幅改善 TPU 上的裝置利用率。
如需如何使用 fit
的詳細總覽,請參閱訓練和評估指南。若要瞭解如何自訂內建的訓練和評估迴圈,請參閱自訂 fit() 中的行為。
其他 API 和工具
Keras 提供許多其他用於深度學習的 API 和工具,包括
如需可用 API 的完整清單,請參閱Keras API 參考資料。若要進一步瞭解其他 Keras 專案和倡議,請參閱Keras 生態系統。
後續步驟
若要開始搭配 TensorFlow 使用 Keras,請查看下列主題
- 循序模型
- Functional API
- 使用內建方法進行訓練與評估
- 透過子類別化建立新的層和模型
- 序列化與儲存
- 使用預先處理層
- 自訂 fit() 中的行為
- 從頭開始編寫訓練迴圈
- 使用 RNN
- 瞭解遮罩與填補
- 編寫自己的回呼
- 遷移學習與微調
- 多 GPU 和分散式訓練
若要進一步瞭解 Keras,請參閱 keras.io 上的下列主題