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 personnalisé TF1 Hub . Son utilisation principale prévue est dans TF1 (ou mode de compatibilité TF1 dans TF2) via son API hub.Module . Détails complets de compatibilité ci-dessous .
- Le format natif TF2 SavedModel . Son utilisation principale prévue est dans TF2 via les API hub.load et hub.KerasLayer . Détails complets de compatibilité ci-dessous .
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 .