よくある質問

質問に対する回答がここで見つからない場合は、トピックに関する詳細なドキュメントを確認するか、GitHub 課題を提出してください。

モデル変換

TensorFlow から TensorFlow Lite への変換では、どの形式がサポートされていますか?

サポートされている形式は、こちらにリストされています。

TensorFlow Lite に実装されていない演算があるのはなぜですか?

TFLite を軽量に維持するため、TFLite では特定の TF 演算子のみがサポートされています(allowlist を参照)。

モデルを変換できない場合があるのはなぜですか?

TensorFlow Lite 演算の数は、TensorFlow の演算よりも少ないため、変換できないモデルがある場合があります。一部の一般的なエラーは、こちらにリストされています。

サポートされていない演算や制御フロー演算に関連しない変換の問題については、GitHub 課題を検索するか、新しい課題を提出してください。

TensorFlow Lite モデルが元の TensorFlow モデルと同じように動作することをどのようにテストしますか?

同じ入力(テストデータまたはランダム入力)による TensorFlow モデルと TensorFlow Lite モデルの出力を比較するのが最善のテスト方法です。こちらをご覧ください。

GraphDef プロトコルバッファーの入力/出力を決定するにはどうすればよいですか?

.pbファイルからグラフを検査する最も簡単な方法は、機械学習モデルのオープンソースビューアである Netron を使用することです。

Netron がグラフを開けられない場合は、summarize_graph ツールを試してみてください。

summary_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 でこのスクリプトを実行できます

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++ APISetNumThreads() を使用します。ただし、スレッドを増やすと、環境によってパフォーマンスが変動します。
  • ハードウェアアクセラレータを使用します。TensorFlow Lite は、デリゲートを使用した特定のハードウェアのモデルアクセラレーションをサポートします。サポートされているアクセラレータと、デバイス上のモデルでそれらを使用する方法については、デリゲートガイドを参照してください。
  • (高度) プロファイルモデル。Tensorflow Lite ベンチマークツールには、演算子ごとの統計を表示できる組み込みのプロファイラがあります。特定のプラットフォームで演算子のパフォーマンスを最適化する方法をご存じの場合は、カスタム演算子を実装できます。

パフォーマンス最適化の詳細については、ベストプラクティスをご覧ください。