TF Hub 模型格式
TF Hub 提供可重複使用的模型組件,這些組件可以載入、在其基礎上建構,並可能在 TensorFlow 程式中重新訓練。這些組件有兩種不同的格式
- 自訂的 TF1 Hub 格式。其主要用途是透過 hub.Module API 在 TF1 (或 TF2 中的 TF1 相容模式) 中使用。完整相容性詳細資訊請參閱下方。
- 原生 TF2 SavedModel 格式。其主要用途是透過 hub.load 和 hub.KerasLayer API 在 TF2 中使用。完整相容性詳細資訊請參閱下方。
模型格式可在 tfhub.dev 上的模型頁面中找到。根據模型格式,TF1/2 可能不支援模型載入/推論、微調或建立。
TF1 Hub 格式的相容性
操作 | TF1/ TF2 中的 TF1 相容模式 [1] | TF2 |
載入 / 推論 | 完全支援 (請參閱完整的 TF1 Hub 格式載入指南)m = hub.Module(handle)
outputs = m(inputs)
|
建議使用 hub.loadm = hub.load(handle)
outputs = m.signatures["sig"](inputs) 或 hub.KerasLayerm = 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.KerasLayerm = hub.KerasLayer(handle)
outputs = m(inputs)
|
完全支援 (請參閱完整的 TF2 SavedModel 載入指南)。使用 hub.load 或m = hub.load(handle)
outputs = m(inputs) 或 hub.KerasLayerm = 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.KerasLayerm = 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 移轉指南中所述。