如果您在這裡找不到問題的解答,請詳閱我們針對該主題的詳細文件,或提出 GitHub 問題。
模型轉換
從 TensorFlow 轉換為 TensorFlow Lite 支援哪些格式?
支援的格式已列於此處
為何某些運算子未在 TensorFlow Lite 中實作?
為了保持 TFLite 的輕量性,TFLite 中僅支援某些 TF 運算子 (列於允許清單中)。
為何我的模型無法轉換?
由於 TensorFlow Lite 運算子的數量少於 TensorFlow,因此某些模型可能無法轉換。常見錯誤已列於此處。
如需與遺失運算子或控制流程運算無關的轉換問題,請搜尋我們的 GitHub 問題或提交新問題。
如何測試 TensorFlow Lite 模型是否與原始 TensorFlow 模型行為相同?
最佳測試方式是比較 TensorFlow 和 TensorFlow Lite 模型針對相同輸入 (測試資料或隨機輸入) 的輸出,如此處所示。
如何判斷 GraphDef 通訊協定緩衝區的輸入/輸出?
檢查 .pb
檔案圖表最簡單的方式是使用 Netron,這是一款適用於機器學習模型的開放原始碼檢視器。
如果 Netron 無法開啟圖表,您可以嘗試 summarize_graph 工具。
如果 summarize_graph 工具產生錯誤,您可以使用 TensorBoard 可視化 GraphDef,並在圖表中尋找輸入和輸出。若要可視化 .pb
檔案,請使用 import_pb_to_tensorboard.py
指令碼,如下所示
python import_pb_to_tensorboard.py --model_dir <model path> --log_dir <log dir path>
如何檢查 .tflite
檔案?
Netron 是可視化 TensorFlow Lite 模型最簡單的方式。
如果 Netron 無法開啟您的 TensorFlow Lite 模型,您可以嘗試我們存放區中的 visualize.py 指令碼。
如果您使用的是 TF 2.5 或更新版本
python -m tensorflow.lite.tools.visualize model.tflite visualized_model.html
否則,您可以使用 Bazel 執行此指令碼
- 複製 TensorFlow 存放區
- 使用 bazel 執行
visualize.py
指令碼
bazel run //tensorflow/lite/tools:visualize model.tflite visualized_model.html
最佳化
如何縮減已轉換 TensorFlow Lite 模型的大小?
在轉換為 TensorFlow Lite 期間,可以使用後訓練量化來縮減模型的大小。後訓練量化會將權重從浮點量化為 8 位元精確度,並在執行階段將其反量化,以執行浮點運算。不過請注意,這可能會對精確度產生一些影響。
如果重新訓練模型是可行的選項,請考慮感知量化訓練。不過請注意,感知量化訓練僅適用於部分卷積神經網路架構。
如需深入瞭解不同的最佳化方法,請參閱模型最佳化。
如何針對我的機器學習工作最佳化 TensorFlow Lite 效能?
最佳化 TensorFlow Lite 效能的高階流程如下所示
- 確保您擁有適合工作的模型。如需圖片分類,請查看 TensorFlow Hub。
- 調整執行緒數量。許多 TensorFlow Lite 運算子都支援多執行緒核心。您可以使用
C++ API
中的SetNumThreads()
來執行此操作。不過,增加執行緒會導致效能變異性,具體取決於環境。 - 使用硬體加速器。TensorFlow Lite 支援使用委派針對特定硬體的模型加速。如需瞭解支援哪些加速器以及如何在裝置上將其與模型搭配使用,請參閱我們的 委派指南。
- (進階) 剖析模型。Tensorflow Lite 基準化分析工具具有內建剖析器,可以顯示每個運算子的統計資料。如果您知道如何針對您的特定平台最佳化運算子的效能,您可以實作自訂運算子。
如需更深入探討如何最佳化效能,請參閱最佳做法。