Utilizzo di tf.Transform con TensorFlow 2.x

A partire dalla 0.30 rilascio del tf.Transform , il comportamento predefinito è quello di esportare un SavedModel TF 2.x meno comportamenti TF 2.x sono esplicitamente disabilitato. Questa pagina fornisce una guida per l'utilizzo di tf.Transform per esportare il grafico come trasformare tensorflow 2.x SavedModel.

Novità in tf.Transform con TF 2.x

Caricamento modelli Keras all'interno del preprocessing_fn

Utilizzare il tft.make_and_track_object API per caricare 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[...])}

Utilizzo dei moduli TF 2.x tf.hub

Moduli hub 2.x TF funzionano tf.Transform solo quando il preprocessing_fn è tracciata e esportato come SavedModel TF 2.x (questo è il comportamento predefinito iniziano tensorflow_transform 0.30 ). Utilizzare il tft.make_and_track_object API per caricare tf.hub moduli 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 la migrazione di un esistente tf.Transform condotta da TF 1.xa TF 2.x, si possono verificare i seguenti problemi:

RuntimeError: L'ordine degli analizzatori nel preprocessing_fn sembra essere non deterministica.

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

Uscita di transform_raw_features non contiene funzionalità previsto.

Eccezioni di esempio:

KeyError: \<feature key>

o

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features ignora il drop_unused_features parametri e si comporta come se fosse vero. 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 vede un errore di tabella non inizializzata.

Esempio di eccezione:

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

Il supporto per Trainer con esecutore basato su Estimator è il massimo sforzo. Mentre altri stimatori funzionano, abbiamo riscontrato problemi con l'inizializzazione della tabella in BaselineClassifier. Si prega di disabilitare 2.x TF in tf.Transform .

Problemi noti/Funzionalità non ancora supportate

L'output di vocabolari in formato TFRecord non è ancora supportato.

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

Mantenimento del comportamento legacy tf.Transform

Se il vostro tf.Transform gasdotto non dovrebbe correre con 2.x di TF, è possibile mantenere il comportamento legacy in uno dei seguenti modi: