您搭配 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 運算頁面。