Path: blob/master/site/ja/lite/convert/python_api.md
25118 views
コンバータ Python API ガイド
Note: これらのドキュメントは私たちTensorFlowコミュニティが翻訳したものです。コミュニティによる 翻訳はベストエフォートであるため、この翻訳が正確であることや英語の公式ドキュメントの 最新の状態を反映したものであることを保証することはできません。 この翻訳の品質を向上させるためのご意見をお持ちの方は、GitHubリポジトリtensorflow/docsにプルリクエストをお送りください。 コミュニティによる翻訳やレビューに参加していただける方は、 [email protected] メーリングリストにご連絡ください。
このページでは、TensorFlow 2.0 の Python API による TensorFlow Lite コンバータ の使用例を説明します。
Note: このドキュメントでは TensorFlow 2 の Python API についてのみ記述します。 TensorFlow 1 の Python API についてのドキュメントは GitHub にあります。
[TOC]
Python API
TensorFlow 2.0 において、TensorFlow モデルを TensorFlow Lite に変換する Python API は tf.lite.TFLiteConverter
です。 TFLiteConverter
には、元のモデルフォーマットに基づいてモデルを変換する以下のクラスメソッドがあります:
TFLiteConverter.from_saved_model()
: SavedModel ディレクトリ を変換します。TFLiteConverter.from_keras_model()
:tf.keras
モデル を変換します。TFLiteConverter.from_concrete_functions()
: 具象関数 を変換します。
このドキュメントでは API の 使用例 、異なるバージョンの TensorFlow で実行する 方法 を含みます。
例
SavedModel を変換する
以下の例は SavedModel を TensorFlow Lite FlatBuffer
に変換する方法を示しています。
この API は入力となる任意の配列について、shape を指定するオプションを持ちません。 モデルの入力の shape を指定する必要がある場合には、from_concrete_functions
クラスメソッドを利用して下さい。 コードは次のようになるでしょう。
Keras モデルを変換する
以下の例は tf.keras
モデル を TensorFlow Lite FlatBuffer
に変換する方法を示しています.
具象関数を変換する
以下の例は TensorFlow の具象関数を TensorFlow Lite FlatBuffer
に変換する方法を示しています。
End-to-end な MobileNet の変換
以下の例は、訓練済みの tf.keras
MobileNet モデルを TensorFlow Lite に変換して実行する方法を示しています。 また、 元の TensorFlow モデルと TensorFlow Lite モデルの結果をランダムデータで比較しています。 モデルをファイルからロードするために、 model_content
の代わりに model_path
を使用します。
TensorFlow Lite Metadata
Note: TensorFlow Lite Metadata は experimental (beta) フェーズにあります。
TensorFlow Lite Metadata はモデルの記述についての標準を提供します。 メタデータはモデルが何を行うのか、何を入力 / 出力にするのかについて知るための重要な情報源です。 これは開発者がベストプラクティスを理解したり、コードジェネレーターがプラットフォーム固有のラッパーとなるコードを生成するのを手助けします。より詳細については TensorFlow Lite Metadata を参照してください。
TensorFlow のインストール
TensorFlow nightly のインストール
TensorFlow nightly は次のコマンドでインストールできます。
Custom ops in the experimental new converter
カスタムの演算 を利用しているモデルが 新しいコンバーター でどう扱われるかについて、振る舞いの変更があります。(以前に allow_custom_ops をセットしていたユーザー向けです)
組み込みの TensorFlow の演算
組み込みの TensorFlow の演算で TensorFlow Lite に存在しないものを利用しているモデルをコンバートする場合、(以前と同様に) allow_custom_ops 属性をセットしてください。詳細はこちらにあります。
TensorFlow のカスタムの演算
カスタムの TensorFlow の演算を用いたモデルをコンバートする場合、TensorFlow カーネルと TensorFlow Lite カーネルを記述することを推奨します。これによりモデルが最初から最後まで、TensorFlow でも TensorFlow Lite でも動くことが保証されます。これも allow_custom_ops 属性をセットすることが要求されます。
応用的なカスタム演算の利用 (非推奨)
上記の対応が不可能な場合であっても、関連するカーネルがなくてもカスタムの演算を含む TensorFlow のモデルをコンバートできます。この場合、TensorFlow のカスタム演算の OpDef を --custom_opdefs フラグで指定する必要があります。ただし、これは関連する OpDef が TensorFlow のグローバルレジストリに登録されている場合に限ります。これにより TensorFlow のモデルは検証済みである (つまり、 TensorFlow ランタイムで読み込める) ことを保証できます。
カスタム演算が TensorFlow の演算のグローバルレジストリに登録されていない場合、関連する OpDef を --custom_opdefs フラグで明示する必要があります。これは追加で登録が必要な OpDef の protocol buffer を文字列形式にしたもののリストです。次は TFLiteAwesomeCustomOp という、アウトプットが1つ、インプットが2つ、属性が2つのカスタム演算の場合の例です。