您與 TensorFlow Lite 搭配使用的機器學習 (ML) 模型,最初是使用 TensorFlow 核心程式庫和工具建構及訓練的。使用 TensorFlow 核心建構模型後,您可以將其轉換為更小、更有效率的 ML 模型格式,稱為 TensorFlow Lite 模型。本節提供將 TensorFlow 模型轉換為 TensorFlow Lite 模型格式的指南。
轉換工作流程
將 TensorFlow 模型轉換為 TensorFlow Lite 格式,可能會根據 ML 模型的內容而採取幾種路徑。在該流程的第一步,您應該評估模型,以判斷模型是否可以直接轉換。此評估會根據模型使用的 TensorFlow 運算,判斷模型的內容是否受標準 TensorFlow Lite 執行階段環境支援。如果您的模型使用的運算超出支援的集合範圍,您可以選擇重構模型或使用進階轉換技術。
下圖顯示模型轉換的高階步驟。
圖 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 個主要標記 (或選項),可自訂模型的轉換
- 相容性標記可讓您指定轉換是否應允許自訂運算子。
- 最佳化標記可讓您指定要在轉換期間套用的最佳化類型。最常使用的最佳化技術是訓練後量化。
- 中繼資料標記可讓您將中繼資料新增至轉換後的模型,以便在裝置上部署模型時,更輕鬆地建立平台專屬的包裝函式程式碼。
您可以使用 Python API 或 命令列工具轉換模型。請參閱轉換 TF 模型指南,取得在模型上執行轉換器的逐步操作說明。
通常,您會將模型轉換為標準 TensorFlow Lite 執行階段環境 或 TensorFlow Lite 的 Google Play 服務執行階段環境 (Beta 版)。有些進階使用案例需要自訂模型執行階段環境,這需要在轉換流程中執行額外步驟。請參閱 Android 總覽的進階執行階段環境章節,以取得更多指南。
進階轉換
如果您在模型上執行轉換器時遇到錯誤,最有可能的原因是您有運算子相容性問題。並非所有 TensorFlow 運算都受到 TensorFlow Lite 支援。您可以透過重構模型,或使用進階轉換選項來解決這些問題,進階轉換選項可讓您建立修改後的 TensorFlow Lite 格式模型,以及該模型的自訂執行階段環境。
- 如需 TensorFlow 和 TensorFlow Lite 模型相容性考量的詳細資訊,請參閱模型相容性總覽。
- 模型相容性總覽下的主題涵蓋重構模型的進階技術,例如選取運算子指南。
- 如需完整的運算和限制清單,請參閱TensorFlow Lite 運算頁面。