Использование tf.Transform с TensorFlow 2.x

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Начиная с 0.30 выпуска tf.Transform , поведение по умолчанию для экспорта 2.x TF SavedModel если 2.x TF поведения не явно отключены. Эта страница содержит руководство для использования tf.Transform для экспорта графа преобразования в виде TensorFlow 2.x SavedModel.

Новое в tf.Transform с TF 2.x

Загрузка моделей Keras в preprocessing_fn

Пожалуйста , используйте tft.make_and_track_object API для загрузки моделей Keras , как показано в примере ниже.

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

Использование модулей TF 2.x tf.hub

TF модули 2.x ступиц работают в tf.Transform только тогда , когда preprocessing_fn прослеживается и экспортируется как 2.x TF SavedModel (это поведение по умолчанию , начиная с tensorflow_transform 0.30 ). Пожалуйста , используйте tft.make_and_track_object API для загрузки tf.hub модулей , как показано в примере ниже.

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

Возможные проблемы с миграцией

Если миграции существующего tf.Transform трубопровода от TF 1.x к TF 2.x, следующие вопросы могут возникнуть:

RuntimeError: Порядок анализаторов в вашем preprocessing_fn , как представляется , не детерминированным.

В 2.х TF, то preprocessing_fn предоставленный пользователем прослеживается несколько раз. Если порядок, в котором обнаруживаются анализаторы TFT, меняется с каждой трассой, возникает эта ошибка. Это можно исправить, удалив любой недетерминизм в порядке вызова анализаторов TFT.

Выход transform_raw_features не содержит ожидаемую функцию.

Примеры исключений:

KeyError: \<feature key>

или

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features игнорирует drop_unused_features параметр и ведет себя , как если бы это было правдой. Обновите любое использование выходного словаря из этого API, чтобы проверить, существует ли в нем ключ, который вы пытаетесь получить.

tf.estimator.BaselineClassifier обнаруживает, что таблица не инициализирована.

Пример исключения:

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

Поддержка тренера с исполнителем на основе оценщика - лучшая попытка. В то время как другие оценщики работают, мы видели проблемы с инициализацией таблицы в BaselineClassifier. Пожалуйста , отключаем 2.x TF в tf.Transform .

Известные проблемы / функции, которые еще не поддерживаются

Вывод словарей в формате TFRecord пока не поддерживается.

tfrecord_gzip пока не поддерживается в качестве действительного значения для file_format параметра в tft.vocabulary (и других API , словарный запас).

Сохранение унаследованного поведения tf.Transform

Если tf.Transform трубопровод не должен работать с 2.x TF, вы можете сохранить поведение унаследованного в одном из следующих способов:

  • Отключить TF2 в tf.Transform по телефону tf.compat.v1.disable_v2_behavior()
  • Переходя force_tf_compat_v1=True , чтобы tft_beam.Context при использовании tf.Transform в качестве библиотеки автономного или Трансформирование компонента в TFX.