TensorFlow 2.x ile tf.Transform kullanma

tf.Transform 0.30 sürümünden başlayarak, TF 2.x davranışları açıkça devre dışı bırakılmadığı sürece varsayılan davranış, bir TF 2.x SavedModel'in dışa aktarılmasıdır. Bu sayfa, dönüşüm grafiğini TensorFlow 2.x SavedModel olarak dışa aktarmak için tf.Transform kullanımına ilişkin bir kılavuz sağlar.

TF 2.x ile tf.Transform'daki yenilikler

Keras modellerini preprocessing_fn içine yükleme

Aşağıdaki örnekte gösterildiği gibi Keras modellerini yüklemek için lütfen tft.make_and_track_object API'sini kullanın.

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 modüllerini kullanma

TF 2.x hub modülleri tf.Transform yalnızca preprocessing_fn izlendiğinde ve TF 2.x SavedModel olarak dışa aktarıldığında çalışır (bu, tensorflow_transform 0.30 ile başlayan varsayılan davranıştır). Aşağıdaki örnekte gösterildiği gibi tf.hub modüllerini yüklemek için lütfen tft.make_and_track_object API'sini kullanın.

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

Olası geçiş sorunları

Mevcut bir tf.Transform işlem hattını TF 1.x'ten TF 2.x'e geçirirseniz aşağıdaki sorunlarla karşılaşılabilir:

RuntimeError: preprocessing_fn analizörlerin sırası belirleyici değil gibi görünüyor.

TF 2.x'te kullanıcı tarafından sağlanan preprocessing_fn birkaç kez izlenir. TFT analizörlerinin karşılaşılma sırası her izde değişirse bu hata ortaya çıkacaktır. Bu, TFT analizörlerinin çağrıldığı sıradaki herhangi bir determinizm dışı durumun ortadan kaldırılmasıyla düzeltilebilir.

transform_raw_features çıktısı beklenen özelliği içermiyor.

Örnek istisnalar:

KeyError: \<feature key>

veya

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features drop_unused_features parametresini yok sayar ve True'muş gibi davranır. Almaya çalıştığınız anahtarın içinde mevcut olup olmadığını kontrol etmek için lütfen bu API'deki çıktı sözlüğünün tüm kullanımlarını güncelleyin.

tf.estimator.BaselineClassifier, Tablo başlatılmadı hatasını görüyor.

Örnek istisna:

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

Tahminci tabanlı uygulayıcı ile Eğitmen desteği en iyi çabadır. Diğer tahmin ediciler çalışırken BaselineClassifier'da tablo başlatmayla ilgili sorunlar gördük. Lütfen tf.Transform TF 2.x'i devre dışı bırakın .

Bilinen sorunlar / Özellikler henüz desteklenmiyor

Kelime dağarcığının TFRecord biçiminde çıkarılması henüz desteklenmiyor.

tfrecord_gzip tft.vocabulary (ve diğer kelime API'lerinde) file_format parametresi için henüz geçerli bir değer olarak desteklenmiyor.

Eski tf.Transform davranışını koruma

tf.Transform işlem hattınızın TF 2.x ile çalışmaması gerekiyorsa eski davranışı aşağıdaki yollardan biriyle koruyabilirsiniz:

  • tf.compat.v1.disable_v2_behavior() öğesini çağırarak tf.Transform TF2'yi devre dışı bırakın
  • force_tf_compat_v1=True , tf.Transform bağımsız bir kitaplık olarak kullanılıyorsa tft_beam.Context veya TFX'teki Transform bileşenine aktarılıyor.