La journée communautaire ML est le 9 novembre ! Rejoignez - nous pour les mises à jour de tensorflow, JAX et plus En savoir plus

Utiliser tf.Transform avec TensorFlow 2.x

En commençant par le 0.30 libération de tf.Transform , le comportement par défaut est d'exporter une TF 2.x SavedModel à moins que les comportements TF 2.x sont explicitement désactivées. Cette page fournit un guide pour l' utilisation de tf.Transform pour exporter la transformation graphique comme tensorflow 2.x SavedModel.

Nouveau dans tf.Transform avec TF 2.x

Chargement des modèles KERAS dans le preprocessing_fn

S'il vous plaît utiliser la tft.make_and_track_object API pour charger des modèles KERAS comme le montre l'exemple ci - dessous.

def preprocessing_fn(inputs):
  keras_model = tft.make_and_track_object(lambda: tf.keras.models.load_model(...), name='_unique_name')
  ...
  return {'keras_model_output': keras_model(inputs[...])}

Utilisation des modules TF 2.x tf.hub

TF modules de moyeu 2.x travaillent dans tf.Transform uniquement lorsque le preprocessing_fn est tracée et exporté en tant que SavedModel TF 2.x (ce qui est le comportement par défaut à partir de tensorflow_transform 0.30 ). S'il vous plaît utiliser la tft.make_and_track_object API pour charger tf.hub modules comme le montre l'exemple ci - dessous.

def preprocessing_fn(inputs):
  hub_module = tft.make_and_track_object(lambda: hub.load(...))
  ...
  return {'hub_module_output': hub_module(inputs[...])}

Problèmes de migration potentiels

Si la migration d' un existant tf.Transform pipeline de TF 1.x à 2.x TF, on peut rencontrer les problèmes suivants:

RuntimeError: L'ordre des analyseurs dans votre preprocessing_fn semble être non déterministe.

Dans TF 2.x, le preprocessing_fn fourni par l'utilisateur est tracée plusieurs fois. Si l'ordre dans lequel les analyseurs TFT sont rencontrés change à chaque trace, cette erreur sera générée. Cela peut être corrigé en supprimant tout non-déterminisme dans l'ordre dans lequel les analyseurs TFT sont appelés.

Sortie de transform_raw_features ne contient pas fonction prévue.

Exemple d'exceptions :

KeyError: \<feature key>

ou

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features ignore le drop_unused_features paramètre et se comporte comme si elle était vrai. Veuillez mettre à jour toutes les utilisations du dictionnaire de sortie à partir de cette API pour vérifier si la clé que vous essayez de récupérer existe.

tf.estimator.BaselineClassifier voit une erreur de table non initialisée.

Exemple d'exception :

tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.

La prise en charge de Trainer avec l'exécuteur basé sur l'estimateur est au mieux. Alors que d'autres estimateurs fonctionnent, nous avons constaté des problèmes avec l'initialisation de la table dans BaselineClassifier. S'il vous plaît désactiver TF 2.x dans tf.Transform .

Problèmes connus / Fonctionnalités pas encore prises en charge

La sortie de vocabulaires au format TFRecord n'est pas encore prise en charge.

tfrecord_gzip n'a pas encore été pris en charge comme une valeur valide pour le file_format paramètre dans tft.vocabulary (et d' autres API de vocabulaire).

Conserver le comportement hérité de tf.Transform

Si votre tf.Transform pipeline ne doit pas fonctionner avec TF 2.x, vous pouvez conserver le comportement hérité dans l' une des façons suivantes: