Compatibilidad de modelos para TF1/TF2

Formatos del modelo TF Hub

TF Hub ofrece piezas de modelo reutilizables que se pueden volver a cargar, construir y posiblemente volver a entrenar en un programa TensorFlow. Estos vienen en dos formatos diferentes:

El formato del modelo se puede encontrar en la página del modelo en tfhub.dev . Es posible que TF1/2 no admita la carga/inferencia , el ajuste fino o la creación de modelos según los formatos del modelo.

Compatibilidad del formato TF1 Hub

Operación Modo de compatibilidad TF1/TF1 en TF2 [1] TF2
Carga / Inferencia Totalmente compatible ( guía completa de carga del formato TF1 Hub )
m = hub.Module(handle)
outputs = m(inputs)
Se recomienda utilizar hub.load
m = hub.load(handle)
outputs = m.signatures["sig"](inputs)
o hub.KerasLayer
m = hub.KerasLayer(handle, signature="sig")
outputs = m(inputs)
Sintonia FINA Totalmente compatible ( guía completa de ajuste del formato TF1 Hub )
m = hub.Module(handle,
               trainable=True,
               tags=["train"]*is_training)
outputs = m(inputs)
Nota: los módulos que no necesitan un gráfico de tren separado no tienen una etiqueta de tren.
No compatible
Creación Totalmente compatible (consulte la guía completa de creación del formato TF1 Hub )
Nota: El formato TF1 Hub está orientado a TF1 y solo se admite parcialmente en TF2. Considere la posibilidad de crear un modelo guardado TF2.
No compatible

Compatibilidad de TF2 SavedModel

No compatible antes de TF1.15.

Operación Modo de compatibilidad TF1.15/TF1 en TF2 [1] TF2
Carga / Inferencia Utilice cualquiera de los dos hub.load
m = hub.load(handle)
outputs = m(inputs)
o hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Totalmente compatible ( guía completa de carga de TF2 SavedModel ). Utilice cualquiera de los dos hub.load
m = hub.load(handle)
outputs = m(inputs)
o hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Sintonia FINA Compatible con hub.KerasLayer usado en tf.keras.Model cuando se entrena con Model.fit() o se entrena en un Estimador cuyo model_fn envuelve el modelo según la guía personalizada model_fn .
Nota: hub.KerasLayer no completa colecciones de gráficos como lo hacían las antiguas API tf.compat.v1.layers o hub.Module.
Totalmente compatible ( guía completa de ajuste de TF2 SavedModel ). Utilice hub.load:
m = hub.load(handle)
outputs = m(inputs, training=is_training)
o hub.KerasLayer:
m =  hub.KerasLayer(handle, trainable=True)
outputs = m(inputs)
Creación La API TF2 tf.saved_model.save() se puede llamar desde el modo de compatibilidad. Totalmente compatible (consulte la guía completa de creación de TF2 SavedModel )

[1] "Modo de compatibilidad TF1 en TF2" se refiere al efecto combinado de importar TF2 con import tensorflow.compat.v1 as tf y ejecutar tf.disable_v2_behavior() como se describe en la guía de migración de TensorFlow .