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 生態系統

後續步驟

若要開始將 Keras 與 TensorFlow 搭配使用,請查看下列主題

若要深入瞭解 Keras,請參閱 keras.io 上的下列主題