Usar tf.Transform con TensorFlow 2.x

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Comenzando con el 0.30 liberación de tf.Transform , el comportamiento predeterminado es exportar un SavedModel TF 2.x menos comportamientos TF 2.x son desactivado explícitamente. Esta página proporciona una guía para el uso de tf.Transform para exportar el gráfico transformar como TensorFlow 2.x SavedModel.

Nuevo en tf.Transform con TF 2.x

Cargando modelos Keras dentro del preprocessing_fn

Utilice el tft.make_and_track_object API para cargar modelos Keras como se muestra en el ejemplo siguiente.

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[...])}

Uso de módulos TF 2.x tf.hub

Módulos de concentrador 2.x TF trabajan en tf.Transform sólo cuando el preprocessing_fn se traza y exporta como SavedModel TF 2.x (este es el comportamiento por defecto a partir de tensorflow_transform 0.30 ). Utilice el tft.make_and_track_object API para cargar tf.hub módulos como se muestra en el ejemplo siguiente.

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

Posibles problemas de migración

Si la migración de una existente tf.Transform oleoducto desde TF TF 1.xa 2.x, los siguientes temas se pueden encontrar:

RuntimeError: El orden de los analizadores en su preprocessing_fn parece ser no determinista.

En 2.x TF, la preprocessing_fn proporcionada por el usuario se traza varias veces. Si el orden en el que se encuentran los analizadores TFT cambia con cada traza, se generará este error. Esto se puede solucionar eliminando cualquier falta de determinismo en el orden en que se invocan los analizadores TFT.

Salida del transform_raw_features no contiene función esperada.

Excepciones de ejemplo:

KeyError: \<feature key>

o

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features ignora el drop_unused_features parámetro y se comporta como si fuera verdad. Actualice cualquier uso del diccionario de salida de esta API para comprobar si la clave que está intentando recuperar existe en él.

tf.estimator.BaselineClassifier ve el error Tabla no inicializada.

Excepción de ejemplo:

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

El soporte para Trainer con ejecutor basado en Estimator es el mejor esfuerzo. Mientras que otros estimadores funcionan, hemos visto problemas con la inicialización de la tabla en BaselineClassifier. Por favor, desactivar 2.x TF en tf.Transform .

Problemas conocidos / funciones que aún no se admiten

Aún no se admite la salida de vocabularios en formato TFRecord.

tfrecord_gzip todavía no se admite como un valor válido para el file_format parámetro en tft.vocabulary (y otras API de vocabulario).

Conservación del comportamiento tf.Transform heredado

Si su tf.Transform tubería no debe correr con 2.x TF, puede conservar el comportamiento heredado en una de las siguientes maneras: