O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Usando tf.Transform com TensorFlow 2.x

Começando com o 0.30 liberação de tf.Transform , o comportamento padrão é exportar um SavedModel TF 2.x menos comportamentos TF 2.x são explicitamente desativado. Esta página fornece um guia para o uso de tf.Transform para exportar o gráfico transformar como um TensorFlow 2.x SavedModel.

Novo em tf.Transform com TF 2.x

Carregando modelos Keras dentro do preprocessing_fn

Utilize a tft.make_and_track_object API para carregar modelos Keras como mostrado no exemplo abaixo.

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

Usando módulos TF 2.x tf.hub

TF módulos cubo 2.x trabalhar em tf.Transform apenas quando o preprocessing_fn é traçado e exportado como um SavedModel TF 2.x (este é o padrão de comportamento de partida com tensorflow_transform 0.30 ). Utilize a tft.make_and_track_object API para carregar tf.hub módulos, como mostrado no exemplo abaixo.

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

Possíveis problemas de migração

Se migrar um existente tf.Transform gasoduto de TF 1.x para TF 2.x, as seguintes questões podem ser encontradas:

RuntimeError: A ordem dos analisadores em seu preprocessing_fn parece ser não-determinística.

Em TF 2.x, o preprocessing_fn fornecido pelo usuário é rastreado várias vezes. Se a ordem em que os analisadores TFT são encontrados mudar a cada traço, esse erro será gerado. Isso pode ser corrigido removendo qualquer não determinismo na ordem em que os analisadores TFT são chamados.

Saída de transform_raw_features não contém funcionalidade esperada.

Exceções de exemplo:

KeyError: \<feature key>

ou

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features ignora o drop_unused_features parâmetro e se comporta como se fosse verdade. Atualize todos os usos do dicionário de saída desta API para verificar se a chave que você está tentando recuperar existe nele.

tf.estimator.BaselineClassifier vê o erro Tabela não inicializada.

Exceção de exemplo:

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

O suporte para o Trainer com o executor baseado no Estimator é o melhor esforço. Enquanto outros estimadores funcionam, vimos problemas com a inicialização da tabela no BaselineClassifier. Agradar desativar 2.x TF em tf.Transform .

Problemas conhecidos / recursos ainda não suportados

A saída de vocabulários no formato TFRecord ainda não é suportada.

tfrecord_gzip ainda não é suportado como um valor válido para o file_format parâmetro no tft.vocabulary (e outras APIs de vocabulário).

Manter o comportamento tf.Transform legado

Se o seu tf.Transform gasoduto não deve correr com TF 2.x, você pode manter o comportamento legado de uma das seguintes formas: