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 durum, 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 sözlük 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ğıraraktf.TransformTF2'yi devre dışı bırakın -
force_tf_compat_v1=Truetf.Transformbağımsız bir kitaplık olarak kullanılıyorsatft_beam.Contextveya TFX'teki Transform bileşenine aktarılıyor.