今日のローカルTensorFlowEverywhereイベントの出欠確認!

よくある質問

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

モデル変換

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

TensorFlow Lite コンバータは、次の形式をサポートしています。

互換性の問題を早期に検出するために、Python コンバータをモデルパイプラインに統合することをお勧めします。

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

TensorFlow Lite の演算の数は TensorFlow の演算の数よりも少ないため、一部の推論モデルは変換できない場合があります。実装されていない演算については、演算子がない場合に関する質問をご覧ください。サポートされていない演算子には、埋め込みと LSTM/RNN が含まれます。LSTM/RNN を備えたモデルの場合、試験的な API である OpHint を試して変換してみることもできます。現在、制御フロー演算 (スイッチ、マージなど) を備えたモデルは変換できませんが、Tensorflow Lite では制御フローのサポートの追加に取り組んでいます。GitHub issues をご覧ください。

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

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 スクリプトを試してみてください。

bazel run //tensorflow/lite/tools:visualize model.tflite visualized_model.html

モデルと演算

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

TensorFlow Lite を軽量に保つために、コンバータでは特定の演算のみが使用されています。TensorFlow Lite で現在サポートされている演算のリストは互換性ガイドで提供されています。

特定の演算 (または同等の演算) がリストに表示されていない場合は、その演算が優先されていない可能性があります。チームは、GitHub Issue #21526 の新しい演算のリクエストを追跡します。リクエストがまだ対応されていない場合は、コメントを書いてください。

その間、カスタム演算子を実装するか、サポートされている演算子のみを含む別のモデルを使用してみてください。バイナリサイズが制約にならない場合は、TensorFlow Lite の select TensorFlow ops を使用してみてください。

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

TensorFlow Lite モデルの動作をテストする最良の方法は、テストデータを含む API を使用し、TensorFlow で同じ入力を使用して出力を比較することです。インタプリタに送るランダムデータを生成する Python インタプリタの例をご覧ください。

最適化

変換した TensorFlow Lite モデルのサイズを縮小するにはどうすればよいですか?

TensorFlow Lite に変換する際にトレーニング後の量子化を使用すると、モデルのサイズを縮小できます。トレーニング後の量子化では、重みを浮動小数点から 8 ビットの精度に量子化し、実行時にそれらを逆量子化して浮動小数点計算を実行します。ただし、これは精度に影響する可能性があるので注意してください。

モデルの再トレーニングが可能な場合は、量子化認識トレーニングを検討してください。ただし、量子化認識トレーニングは、畳み込みニューラルネットワークアーキテクチャのサブセットでのみ使用できることに注意してください。

さまざまな最適化手法の詳細については、モデルの最適化をご覧ください。

機械学習タスク用に TensorFlow Lite のパフォーマンスを最適化するにはどうすればよいですか?

TensorFlow Lite のパフォーマンスを最適化する高レベルのプロセスは、次のようになります。

  • モデルがタスクに適していることを確認します。画像の分類については、ホストモデルのリストを参照してください。
  • スレッド数を微調整します。多くの TensorFlow Lite 演算子はマルチスレッドカーネルをサポートしています。 これを行うには、C++ APISetNumThreads()を使用します。ただし、スレッドを増やすと、環境によってパフォーマンスが変動します。
  • ハードウェアアクセラレータを使用します。TensorFlow Lite は、デリゲートを使用して特定のハードウェアのモデルアクセラレーションをサポートします。たとえば、Android の Neural Networks API を使用するには、インタープリタでUseNNAPIを呼び出します。または、GPU デリゲートチュートリアルをご覧ください。
  • (高度) プロファイルモデル。Tensorflow Lite ベンチマークツールには、演算子ごとの統計を表示できる組み込みのプロファイラがあります。特定のプラットフォームで演算子のパフォーマンスを最適化する方法をご存じの場合は、カスタム演算子を実装できます。

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