Utilizzo di tf.Transform con TensorFlow 2.x

A partire dalla versione 0.30 di tf.Transform , il comportamento predefinito consiste nell'esportare un SavedModel TF 2.x a meno che i comportamenti TF 2.x non siano esplicitamente disabilitati. Questa pagina fornisce una guida per l'utilizzo tf.Transform per esportare il grafico di trasformazione come TensorFlow 2.x SavedModel.

Novità in tf.Transform con TF 2.x

Caricamento dei modelli Keras all'interno del preprocessing_fn

Utilizza l'API tft.make_and_track_object per caricare i modelli Keras come mostrato nell'esempio seguente.

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

Utilizzando i moduli TF 2.x tf.hub

I moduli hub TF 2.x funzionano in tf.Transform solo quando preprocessing_fn viene tracciato ed esportato come SavedModel TF 2.x (questo è il comportamento predefinito a partire da tensorflow_transform 0.30 ). Utilizza l'API tft.make_and_track_object per caricare i moduli tf.hub come mostrato nell'esempio seguente.

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

Potenziali problemi di migrazione

Se si esegue la migrazione di una pipeline tf.Transform esistente da TF 1.x a TF 2.x, potrebbero verificarsi i seguenti problemi:

RuntimeError: l'ordine degli analizzatori in preprocessing_fn sembra non deterministico.

In TF 2.x il preprocessing_fn fornito dall'utente viene tracciato più volte. Se l'ordine in cui vengono rilevati gli analizzatori TFT cambia con ciascuna traccia, verrà generato questo errore. Questo problema può essere risolto rimuovendo qualsiasi non determinismo nell'ordine in cui vengono richiamati gli analizzatori TFT.

L'output di transform_raw_features non contiene la funzionalità prevista.

Eccezioni di esempio:

KeyError: \<feature key>

O

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features ignora il parametro drop_unused_features e si comporta come se fosse True. Aggiorna eventuali utilizzi del dizionario di output da questa API per verificare se la chiave che stai tentando di recuperare esiste al suo interno.

tf.estimator.BaselineClassifier visualizza l'errore Tabella non inizializzata.

Eccezione di esempio:

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

Il supporto per Trainer con esecutore basato su Estimator è il massimo sforzo. Sebbene altri strumenti di stima funzionino, abbiamo riscontrato problemi con l'inizializzazione della tabella in BaselineClassifier. Disattiva TF 2.x in tf.Transform .

Problemi noti/Funzionalità non ancora supportate

L'output dei vocabolari nel formato TFRecord non è ancora supportato.

tfrecord_gzip non è ancora supportato come valore valido per il parametro file_format in tft.vocabulary (e altre API del vocabolario).

Mantenimento del comportamento tf.Transform legacy

Se la pipeline tf.Transform non deve essere eseguita con TF 2.x, puoi mantenere il comportamento legacy in uno dei seguenti modi: