TF1/TF2 モデルの互換性

TF Hub のモデル形式

TF Hub は TensorFlow プログラムで再読み込み、構築、再トレーニングできる再利用可能なモデル片を提供します。これらのモデル片には 2 種類の形式があります。

  • 独自の TF1 Hub 形式。主に TF1(または TF2 の TF1 互換モード)で hub.Module API を介して使用されることを想定したものです。互換性に関する完全な情報は、以下をご覧ください。
  • ネイティブな TF2 SavedModel 形式。主に TF2 で hub.load および hub.KerasLayer API を介して使用されることを想定したものです。互換性に関する完全な情報は、以下をご覧ください。

モデル形式は、tfhub.dev のモデルページで確認できます。モデルの読み込み/推論微調整作成は、モデル形式に基づく TF1/2 ではサポートされていない場合があります。

TF1 Hub 形式の互換性

演算 TF1/ TF2 の TF1 互換モード [1] TF2
読み込み / 推論 完全サポート(包括的な TF1 Hub 形式の読み込みガイド
m = hub.Module(handle) outputs = m(inputs)
hub.load
m = hub.load(handle) outputs = m.signatures["sig"](inputs)
または hub.KerasLayer
m = hub.KerasLayer(handle, signature="sig") outputs = m(inputs)
のいずれかを使用することをお勧めします。
微調整 完全サポート(包括的な TF1 Hub 形式の微調整ガイド
m = hub.Module(handle,                trainable=True,                tags=["train"]*is_training) outputs = m(inputs)
注意: 個別の train グラフを必要としないモジュールには train タグがありません。
未サポート
作成 完全サポート(包括的な TF1 Hub 形式の作成ガイドをご覧ください)
注意: TF1 Hub 形式は TF1 向けであり、TF2 では部分的にのみサポートされています。TF2 SavedModel の作成を検討してください。
未サポート

TF2 SavedModel の互換性

TF1.15 以前はサポートされていません。

演算 TF1.15/ TF2 の TF1 互換モード [1] TF2
読み込み / 推論 hub.load
m = hub.load(handle) outputs = m(inputs)
または hub.KerasLayer
m = hub.KerasLayer(handle) outputs = m(inputs)
を使用してください
完全サポート(包括的な TF2 SavedModel の読み込みガイド)。hub.load
m = hub.load(handle) outputs = m(inputs)
または hub.KerasLayer
m = hub.KerasLayer(handle) outputs = m(inputs)
のいずれかを使用してください。
微調整 Model.fit() でトレーニングされる場合、または カスタム model_fn ガイド に従って Model をラップする model_fn を持つ Estimator でトレーニングされる場合にtf.keras.Model で使用される hub.KerasLayer でサポートされます。
注意: hub.KerasLayer は古い tf.compat.v1.layers または hub.Module API のようにグラフコレクションを埋めません
完全サポート(包括的な TF2 SavedModel の微調整ガイド)。hub.load:
m = hub.load(handle) outputs = m(inputs, training=is_training)
または hub.KerasLayer:
m =  hub.KerasLayer(handle, trainable=True) outputs = m(inputs)
のいずれかを使用してください。
作成 TF2 API tf.saved_model.save() は互換モード内から呼び出すことができます。 完全サポート(包括的な TF2 SavedModel の作成ガイド

[1] "TF2 の TF1 互換モード" とは、TensorFlow 移行ガイドに記載されているように TF2 を import tensorflow.compat.v1 as tf でインポートして tf.disable_v2_behavior() を実行する場合の複合効果を指します。