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:
- TF2 Deshabilitar en
tf.Transform
llamandotf.compat.v1.disable_v2_behavior()
- Pasando
force_tf_compat_v1=True
atft_beam.Context
si se utilizatf.Transform
como una biblioteca independiente o al componente Transformar en TFX.