您搭配 TensorFlow Lite 使用的機器學習 (ML) 模型,最初是使用 TensorFlow 核心程式庫和工具所建立和訓練。一旦您使用 TensorFlow 核心建立模型後,就可以將其轉換為更小、更有效率的 ML 模型格式,稱為 TensorFlow Lite 模型。本節提供將 TensorFlow 模型轉換為 TensorFlow Lite 模型格式的指南。
轉換工作流程
將 TensorFlow 模型轉換為 TensorFlow Lite 格式的路徑可能不只一種,具體取決於 ML 模型的內容。作為該流程的第一步,您應該評估模型,以判斷是否可以直接轉換。此評估會判斷模型的內容是否受標準 TensorFlow Lite 執行階段環境支援,這取決於模型使用的 TensorFlow 運算。如果您的模型使用的運算超出支援的集合範圍,您可以選擇重構模型,或使用進階轉換技術。
下圖顯示模型轉換的高階步驟。
圖 1. TensorFlow Lite 轉換工作流程。
以下章節概述評估和轉換模型以搭配 TensorFlow Lite 使用的流程。
輸入模型格式
您可以使用轉換器搭配下列輸入模型格式
- SavedModel (建議使用):以檔案集形式儲存在磁碟上的 TensorFlow 模型。
- Keras 模型:使用高階 Keras API 建立的模型。
- Keras H5 格式:Keras API 支援的 SavedModel 格式輕量替代方案。
- 從具體函式建立的模型:使用低階 TensorFlow API 建立的模型。
您可以將 Keras 和具體函式模型儲存為 SavedModel,並使用建議的路徑進行轉換。
如果您有 Jax 模型,可以使用 TFLiteConverter.experimental_from_jax
API 將其轉換為 TensorFlow Lite 格式。請注意,此 API 在實驗模式期間可能會變更。
轉換評估
評估模型是在嘗試轉換模型前的重要步驟。評估時,您會想要判斷模型內容是否與 TensorFlow Lite 格式相容。您也應該根據模型使用資料的大小、硬體處理需求,以及模型的整體大小和複雜度,判斷模型是否適合在行動裝置和邊緣裝置上使用。
對於許多模型來說,轉換器應該能直接運作。不過,TensorFlow Lite 內建運算子程式庫僅支援 TensorFlow 核心運算子的子集,這表示某些模型可能需要在轉換為 TensorFlow Lite 之前執行額外步驟。此外,基於效能考量,TensorFlow Lite 支援的某些運算在使用需求方面受到限制。請參閱運算子相容性指南,以判斷您的模型是否需要重構以進行轉換。
模型轉換
TensorFlow Lite 轉換器會採用 TensorFlow 模型,並產生 TensorFlow Lite 模型 (一種最佳化的 FlatBuffer 格式,以 .tflite
副檔名識別)。您可以載入 SavedModel,或直接轉換您在程式碼中建立的模型。
轉換器會採用 3 個主要標記 (或選項),可自訂模型的轉換作業
- 相容性標記可讓您指定轉換是否應允許自訂運算子。
- 最佳化標記可讓您指定要在轉換期間套用的最佳化類型。最常用的最佳化技術是 訓練後量化。
- Metadata 標記可讓您將 metadata 新增至已轉換的模型,以便在裝置上部署模型時,更輕鬆地建立平台專屬的包裝函式碼。
您可以使用 Python API 或命令列工具轉換模型。請參閱「轉換 TF 模型」指南,取得在模型上執行轉換器的逐步操作說明。
通常,您會針對標準 TensorFlow Lite 執行階段環境或適用於 TensorFlow Lite 的 Google Play 服務執行階段環境 (Beta 版) 轉換模型。某些進階使用案例需要自訂模型執行階段環境,這需要在轉換流程中執行額外步驟。請參閱 Android 總覽的「進階執行階段環境」章節,以取得更多指南。
進階轉換
如果您在模型上執行轉換器時遇到 錯誤,則很可能是您的運算子相容性有問題。並非所有 TensorFlow 運算都受到 TensorFlow Lite 支援。您可以藉由重構模型,或使用進階轉換選項來解決這些問題,進而建立修改過的 TensorFlow Lite 格式模型和該模型的自訂執行階段環境。
- 請參閱「模型相容性總覽」,以取得關於 TensorFlow 和 TensorFlow Lite 模型相容性考量的詳細資訊。
- 「模型相容性總覽」下的主題涵蓋重構模型的進階技術,例如「選取運算子」指南。
- 如需完整的運算和限制清單,請參閱 TensorFlow Lite Ops 頁面。
後續步驟
- 請參閱「轉換 TF 模型」指南,以快速開始轉換模型。
- 請參閱最佳化總覽,以取得關於如何使用訓練後量化等技術來最佳化已轉換模型的指南。
- 請參閱「新增 metadata 總覽」,以瞭解如何將 metadata 新增至模型。Metadata 為其他用途提供模型說明,以及可由程式碼產生器運用的資訊。