TF1/TF2 模型相容性

TF Hub 模型格式

TF Hub 提供可重複使用的模型組件,這些組件可以載入、在其基礎上建構,並可能在 TensorFlow 程式中重新訓練。這些組件有兩種不同的格式

模型格式可在 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)
注意:不需要個別訓練圖表的模組沒有訓練標記。
不支援
建立 完全支援 (請參閱完整的 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)
微調 當 hub.KerasLayer 用於 tf.keras.Model 並透過 Model.fit() 訓練,或在 Estimator 中訓練時支援,其 model_fn 會根據自訂 model_fn 指南包裝 Model。
注意: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 相容模式」是指匯入 TF2 時使用 import tensorflow.compat.v1 as tf 以及執行 tf.disable_v2_behavior() 的組合效果,如TensorFlow 移轉指南中所述。