模型轉換總覽

搭配 TensorFlow Lite 使用的機器學習 (ML) 模型最初是以 TensorFlow 核心程式庫和工具建構及訓練。使用 TensorFlow 核心建構模型後,您就可以將模型轉換為更小且更有效率的機器學習模型格式,稱為 TensorFlow Lite 模型。本節提供將 TensorFlow 模型轉換為 TensorFlow Lite 模型格式的指引。

轉換工作流程

視機器學習模型的內容而定,將 TensorFlow 模型轉換為 TensorFlow Lite 格式可能有幾個路徑。在這個程序中,您應該先評估模型,判斷模型是否能直接轉換。這項評估會決定標準 TensorFlow Lite 執行階段環境是否支援模型內容,取決於其使用的 TensorFlow 運算。如果模型使用支援集以外的作業,您可以選擇重構模型或使用進階轉換技術。

下圖顯示轉換模型的高階步驟。

TFLite 轉換工作流程

圖 1 TensorFlow Lite 轉換工作流程。

以下各節概述評估和轉換模型,以便與 TensorFlow Lite 搭配使用的程序。

輸入模型格式

您可以將轉換工具與下列輸入模型格式搭配使用:

您可以將 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 個主要標記 (或選項),用來自訂模型轉換:

  1. 相容性標記可讓您指定轉換是否應允許自訂運算子。
  2. 最佳化標記可讓您指定在轉換期間要套用的最佳化類型。最常用的最佳化技術是訓練後量化
  3. 中繼資料標記可讓您將中繼資料新增至已轉換的模型,這樣當您在裝置上部署模型時,就能輕鬆建立平台專屬的包裝函式程式碼。

您可以使用 Python APICommand line 工具轉換模型。如需在模型上執行轉換器的逐步操作說明,請參閱轉換 TF 模型指南。

一般而言,您會在標準 TensorFlow Lite 執行階段環境或 TensorFlow Lite (Beta 版) 的 Google Play 服務執行階段環境中轉換模型。某些進階用途需要自訂模型執行階段環境,因此需要在轉換程序中採取額外步驟。如需更多指引,請參閱 Android 總覽的「進階執行階段環境」一節。

進階轉換

如果您在模型上執行轉換器時遇到錯誤,很可能會發生運算子相容性問題。TensorFlow Lite 不支援部分 TensorFlow 運算。如要解決這些問題,可以重構模型,或使用進階轉換選項,為該模型建立經修改的 TensorFlow Lite 格式模型和自訂執行階段環境。

後續步驟

  • 請參閱轉換 TF 模型指南,瞭解如何快速開始轉換模型。
  • 請參閱「最佳化總覽」一文,瞭解如何使用訓練後定化等技術來最佳化已轉換的模型。
  • 如要瞭解如何將中繼資料新增至模型,請參閱新增中繼資料總覽。中繼資料可提供其他模型說明,以及程式碼產生器可使用的資訊。