Keras:TensorFlow 的高階 API

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,請查看下列主題

若要進一步瞭解 Keras,請參閱 keras.io 上的下列主題