Compatibilité des modèles pour TF1/TF2

Formats du modèle TF Hub

TF Hub propose des éléments de modèle réutilisables qui peuvent être rechargés, construits et éventuellement recyclés dans un programme TensorFlow. Ceux-ci se présentent sous deux formats différents :

Le format du modèle peut être trouvé sur la page modèle sur tfhub.dev . Le chargement/inférence , le réglage fin ou la création de modèles peuvent ne pas être pris en charge dans TF1/2 en fonction des formats de modèle.

Compatibilité du format TF1 Hub

Opération Mode de compatibilité TF1/ TF1 dans TF2 [1] TF2
Chargement / Inférence Entièrement pris en charge ( guide complet de chargement du format TF1 Hub )
m = hub.Module(handle)
outputs = m(inputs)
Il est recommandé d'utiliser soit hub.load
m = hub.load(handle)
outputs = m.signatures["sig"](inputs)
ou hub.KerasLayer
m = hub.KerasLayer(handle, signature="sig")
outputs = m(inputs)
Réglage fin Entièrement pris en charge ( guide complet de réglage fin du format TF1 Hub )
m = hub.Module(handle,
               trainable=True,
               tags=["train"]*is_training)
outputs = m(inputs)
Remarque : les modules qui n'ont pas besoin d'un graphique de train séparé n'ont pas de balise de train.
Non pris en charge
Création Entièrement supporté (voir guide complet de création de format TF1 Hub )
Remarque : Le format TF1 Hub est orienté vers TF1 et n'est que partiellement supporté dans TF2. Pensez à créer un TF2 SavedModel.
Non pris en charge

Compatibilité du modèle enregistré TF2

Non pris en charge avant TF1.15.

Opération Mode de compatibilité TF1.15/ TF1 dans TF2 [1] TF2
Chargement / Inférence Utilisez soit hub.load
m = hub.load(handle)
outputs = m(inputs)
ou hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Entièrement pris en charge ( guide de chargement complet de TF2 SavedModel ). Utilisez soit hub.load
m = hub.load(handle)
outputs = m(inputs)
ou hub.KerasLayer
m = hub.KerasLayer(handle)
outputs = m(inputs)
Réglage fin Pris en charge pour un hub.KerasLayer utilisé dans tf.keras.Model lorsqu'il est formé avec Model.fit() ou formé dans un estimateur dont model_fn encapsule le modèle selon le guide model_fn personnalisé .
Remarque : hub.KerasLayer ne remplit pas les collections de graphiques comme le faisaient les anciennes API tf.compat.v1.layers ou hub.Module.
Entièrement pris en charge ( guide complet de réglage fin de TF2 SavedModel ). Utilisez soit hub.load :
m = hub.load(handle)
outputs = m(inputs, training=is_training)
ou hub.KerasLayer :
m =  hub.KerasLayer(handle, trainable=True)
outputs = m(inputs)
Création L'API TF2 tf.saved_model.save() peut être appelée depuis le mode compatibilité. Entièrement pris en charge (voir le guide complet de création de TF2 SavedModel )

[1] Le « mode de compatibilité TF1 dans TF2 » fait référence à l'effet combiné de l'importation de TF2 avec import tensorflow.compat.v1 as tf et de l'exécution tf.disable_v2_behavior() comme décrit dans le guide de migration TensorFlow .