web-dev-qa-db-ja.com

tensorflow 2.0推定モデルをtensorflow liteに変換するにはどうすればよいですか?

以下のコードでは、通常のテンソルフローモデルを生成していますが、テンソルフローライトに変換しようとしても機能しません。次のドキュメントに従ってください。

https://www.tensorflow.org/tutorials/estimator/linear1 https://www.tensorflow.org/lite/guide/get_started

export_dir = "tmp"
serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
  tf.feature_column.make_parse_example_spec(feat_cols))

estimator.export_saved_model(export_dir, serving_input_fn)

# Convert the model.
converter = tf.lite.TFLiteConverter.from_saved_model("tmp/1571728920/saved_model.pb")
tflite_model = converter.convert()

エラーメッセージ

Traceback (most recent call last):
  File "C:/Users/Dacorie Smith/PycharmProjects/JamaicaClassOneNotifableModels/ClassOneModels.py", line 208, in <module>
    tflite_model = converter.convert()
  File "C:\Users\Dacorie Smith\PycharmProjects\JamaicaClassOneNotifableModels\venv\lib\site-packages\tensorflow_core\lite\python\lite.py", line 400, in convert
    raise ValueError("This converter can only convert a single "
ValueError: This converter can only convert a single ConcreteFunction. Converting multiple functions is under development.

ドキュメントから抽出

TensorFlow LiteコンバーターTensorFlow Liteコンバーターは、トレーニング済みのTensorFlowモデルをTensorFlow Lite形式に変換するPython APIとして利用できるツールです。セクション4で説明する最適化を導入することもできます。モデル。

次の例は、TensorFlow Lite形式に変換されるTensorFlow SavedModelを示しています。

tensorflowをtfとしてインポートする

converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)tflite_model = converter.convert()open( "converted_model.tflite"、 "wb")。write(tflite_model)

5
DacorieS

具体的な関数を使用してみてください:

export_dir = "tmp"
serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
  tf.feature_column.make_parse_example_spec(feat_cols))

estimator.export_saved_model(export_dir, serving_input_fn)

# Convert the model.
saved_model_obj = tf.saved_model.load(export_dir="tmp/1571728920/")
concrete_func = saved_model_obj.signatures['serving_default']

converter = tf.lite.TFLiteConverter.from_concrete_functions([concrete_func])

# print(saved_model_obj.signatures.keys())
# converter.optimizations = [tf.lite.Optimize.DEFAULT]
# converter.experimental_new_converter = True

tflite_model = converter.convert()

serving_defaultは、SavedModelsの署名のデフォルトキーです。

機能しない場合は、コメントを解除してくださいconverter.experimental_new_converter = Trueとその上の2行。

簡単な説明

コンクリート機能ガイドに基づいて

TensorFlow 2の熱心な実行は、グラフを作成せずに、操作をすぐに評価します。モデルを保存するには、python callables:具体的な関数でラップされたグラフが必要です。

1
Trayan Momkov