Path: blob/master/site/ja/lite/guide/signatures.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
TensorFlow Lite のシグネチャ
TensorFlow Lite では、TensorFlow モデルの入出力仕様を TensorFlow Lite モデルに変換できます。入出力仕様は「シグネチャ」と呼ばれます。署名は、SavedModel の構築時または具体的な関数の作成時に指定できます。
TensorFlow Lite のシグネチャには次の機能があります。
TensorFlow モデルのシグネチャを守ることで、変換された TensorFlow Lite モデルの入出力を指定する。
1 つの TensorFlow Lite モデルで複数の入力点をサポートできる。
シグネチャには次の 3 つの要素があります。
入力: シグネチャの入力名から入力テンソルへの入力のマッピング。
出力: シグネチャの出力名から出力テンソルへの出力のマッピング。
シグネチャキー: グラフの入力点を識別する名前。
MNIST モデルをビルドする
サンプル モデル
エンコードとデコードといった 2 つのタスクが TensorFlow モデルとして存在するとします。
シグネチャという点では、上記の TensorFlow モデルは次のように要約することができます。
シグネチャ
キー: encode
入力: {"x"}
出力: {"encoded_result"}
シグネチャ
キー: decode
入力: {"x"}
出力: {"decoded_result"}
シグネチャを使用したモデルの変換
TensorFlow Lite コンバータ API は、上記のシグネチャ情報を変換された TensorFlow Lite モデルに渡します。
この変換機能は、TensorFlow バージョン 2.7.0 以降のすべてのコンバータ API で提供されています。使用例を参照してください。
保存されたモデルから変換
Keras モデルから変換
Concrete 関数から変換
シグネチャの実行
TensorFlow の推論 API は、シグネチャに基づく実行をサポートします。
シグネチャで指定された入出力の名前を使用して、入出力テンソルにアクセスします。
シグネチャキーで指定されたグラフの各入力点を個別に実行します。
SavedModel の初期化手順をサポートします。
Java、C++、Python 言語バインディングは現在使用できます。次のセクションの例を参照してください。
Java
C++
Python
既知の制限
TFLite インタープリタはスレッドの安全を保証しないため、同じインタープリタからのシグネチャランナーは同時に実行されません。
C/iOS/Swift のサポートはまだ提供されていません。
更新
バージョン 2.7
複数のシグネチャ機能が実装されました。
バージョン 2 以降のすべてのコンバータ API は、シグネチャ対応 TensorFlow Lite モデルを生成します。
バージョン 2.5
シグネチャ機能は、
from_saved_model
コンバータ API から利用できます。