Path: blob/master/site/ja/guide/migrate/tflite.ipynb
25118 views
Copyright 2021 The TensorFlow Authors.
TFLite コードを TF2 に移行する
TensorFlow Lite(TFLite)は、開発者がデバイス(モバイル、組み込み、IoT デバイス)で ML 推論を実行するのに役立つ一連のツールです。TFLite コンバータは、既存の TF モデルをデバイス上で効率的に実行できる最適化された TFLite モデル形式に変換するツールの 1 つです。
このドキュメントでは、TF から TFLite への変換コードにどのような変更を加える必要があるかを説明し、いくつかの例を示します。
TF から TFLite への変換コードの変更
従来の TF1 モデル形式(Keras ファイル、凍結された GraphDef、チェックポイント、tf.Session など)を使用している場合は、それを TF1/TF2 SavedModel に更新し、TF2 コンバータ API
tf.lite.TFLiteConverter.from_saved_model(...)
を使用して TFLite モデルに変換します(表 1 を参照)。コンバータ API フラグを更新します(表 2 を参照)。
tflite.constants
などのレガシー API を削除します。(例:tf.lite.constants.INT8
をtf.int8
に置き換えます)
// 表 1 // TFLite Python コンバータ API の更新
TF1 API | TF2 API |
---|---|
tf.lite.TFLiteConverter.from_saved_model('saved_model/',..) | サポートされています |
tf.lite.TFLiteConverter.from_keras_model_file('model.h5',..) | 削除(SavedModel 形式に更新) |
tf.lite.TFLiteConverter.from_frozen_graph('model.pb',..) | 削除(SavedModel 形式に更新) |
tf.lite.TFLiteConverter.from_session(sess,...) | 削除(SavedModel 形式に更新) |
<style> .table {margin-left: 0 !important;} </style>
// 表 2 // TFLite Python コンバータ API フラグの更新
TF1 API | TF2 API |
---|---|
allow_custom_ops optimizations representative_dataset target_spec inference_input_type inference_output_type experimental_new_converter experimental_new_quantizer | サポートされています |
input_tensors output_tensors input_arrays_with_shape output_arrays experimental_debug_info_func | 削除(コンバータ API 引数がサポートされていません) |
change_concat_input_ranges default_ranges_stats get_input_arrays() inference_type quantized_input_stats reorder_across_fake_quant | 削除(量子化ワークフローがサポートされていません) |
conversion_summary_dir dump_graphviz_dir dump_graphviz_video | 削除(モデルを可視化するには、Netron または visualize.py を使用します) |
output_format drop_control_dependency | 削除(TF2 でサポートされていない機能) |
例
ここでは、レガシー TF1 モデルを TF1/TF2 SavedModel に変換し、それらを TF2 TFLite モデルに変換するいくつかの例について説明します。
セットアップ
必要な TensorFlow インポートから始めます。
必要なすべての TF1 モデル形式を作成します。
1. TF1 SavedModel を TFLite モデルに変換する
以前: TF1 で変換する
以下は、TF1 スタイルの TFlite 変換の典型的なコードです。
更新後: TF2 で変換する
TF1 SavedModel を TFLite モデルに直接変換し、より小さい v2 コンバータフラグを設定します。
2. TF1 Keras モデルファイルを TFLite モデルに変換する
以前: TF1 で変換する
これは、TF1 スタイルの TFlite 変換の典型的なコードです。
更新後: TF2 で変換する
TF1 Keras モデルファイルを TF2 SavedModel に変換してから、より小さな v2 コンバータフラグを設定し、それを TFLite モデルに変換します。
3. TF1 で凍結された GraphDef を TFLite モデルに変換する
以前: TF1 で変換する
これは、TF1 スタイルの TFlite 変換の典型的なコードです。
更新後: TF2 で変換する
TF1 で凍結された GraphDef を TF1 SavedModel に変換してから、より小さな v2 コンバータフラグを設定して、それを TFLite モデルに変換します。
参考資料
ワークフローと最新機能の詳細については、TFLite ガイドを参照してください。
TF1 コードまたは従来の TF1 モデル形式(Keras
.h5
ファイル、凍結された GraphDef.pb
など)を使用している場合、コードを更新し、モデルを TF2 SavedModel 形式に移行してください。