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 搭配使用,請查看下列主題
- 循序模型
- Functional API
- 使用內建方法進行訓練與評估
- 透過子類別化建立新的層和模型
- 序列化與儲存
- 使用預處理層
- 自訂 fit() 中的行為
- 從頭開始編寫訓練迴圈
- 使用 RNN
- 瞭解遮罩與填充
- 編寫您自己的回呼
- 遷移學習與微調
- 多 GPU 和分散式訓練
若要深入瞭解 Keras,請參閱 keras.io 上的下列主題