搭配 TensorFlow Lite 使用的機器學習 (ML) 模型最初是以 TensorFlow 核心程式庫和工具建構及訓練。使用 TensorFlow 核心建構模型後,您就可以將模型轉換為更小且更有效率的機器學習模型格式,稱為 TensorFlow Lite 模型。本節提供將 TensorFlow 模型轉換為 TensorFlow Lite 模型格式的指引。
轉換工作流程
視機器學習模型的內容而定,將 TensorFlow 模型轉換為 TensorFlow Lite 格式可能有幾個路徑。在這個程序中,您應該先評估模型,判斷模型是否能直接轉換。這項評估會決定標準 TensorFlow Lite 執行階段環境是否支援模型內容,取決於其使用的 TensorFlow 運算。如果模型使用支援集以外的作業,您可以選擇重構模型或使用進階轉換技術。
下圖顯示轉換模型的高階步驟。
圖 1 TensorFlow Lite 轉換工作流程。
以下各節概述評估和轉換模型,以便與 TensorFlow Lite 搭配使用的程序。
輸入模型格式
您可以將轉換工具與下列輸入模型格式搭配使用:
- SavedModel (建議):以一組檔案儲存在磁碟中的 TensorFlow 模型。
- Keras 模型:使用高階 Keras API 建立的模型。
- Keras H5 格式:Keras API 支援的 套 格式輕量級替代方案。
- 以具體函式建構的模型:使用低階 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 模型 (副檔名為 .tflite
的最佳化 FlatBuffer 格式)。您可以載入 SavedModel 或直接轉換在程式碼中建立的模型。
轉換器會採用 3 個主要標記 (或選項),用來自訂模型轉換:
- 相容性標記可讓您指定轉換是否應允許自訂運算子。
- 最佳化標記可讓您指定在轉換期間要套用的最佳化類型。最常用的最佳化技術是訓練後量化。
- 中繼資料標記可讓您將中繼資料新增至已轉換的模型,這樣當您在裝置上部署模型時,就能輕鬆建立平台專屬的包裝函式程式碼。
您可以使用 Python API 或 Command line 工具轉換模型。如需在模型上執行轉換器的逐步操作說明,請參閱轉換 TF 模型指南。
一般而言,您會在標準 TensorFlow Lite 執行階段環境或 TensorFlow Lite (Beta 版) 的 Google Play 服務執行階段環境中轉換模型。某些進階用途需要自訂模型執行階段環境,因此需要在轉換程序中採取額外步驟。如需更多指引,請參閱 Android 總覽的「進階執行階段環境」一節。
進階轉換
如果您在模型上執行轉換器時遇到錯誤,很可能會發生運算子相容性問題。TensorFlow Lite 不支援部分 TensorFlow 運算。如要解決這些問題,可以重構模型,或使用進階轉換選項,為該模型建立經修改的 TensorFlow Lite 格式模型和自訂執行階段環境。
- 如要進一步瞭解 TensorFlow 和 TensorFlow Lite 模型相容性注意事項,請參閱模型相容性總覽。
- 模型相容性總覽中的主題涵蓋重構模型的進階技巧,例如選取運算子指南。
- 如需完整的作業和限制清單,請參閱 TensorFlow Lite 作業頁面。