Dimulai dengan rilis tf.Transform
0.30
, perilaku defaultnya adalah mengekspor TF 2.x SavedModel kecuali perilaku TF 2.x dinonaktifkan secara eksplisit. Halaman ini menyediakan panduan penggunaan tf.Transform
untuk mengekspor grafik transformasi sebagai TensorFlow 2.x SavedModel.
Baru di tf.Transform dengan TF 2.x
Memuat model Keras dalam preprocessing_fn
Silakan gunakan API tft.make_and_track_object
untuk memuat model Keras seperti yang ditunjukkan pada contoh di bawah ini.
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[...])}
Menggunakan modul TF 2.x tf.hub
Modul hub TF 2.x berfungsi di tf.Transform
hanya ketika preprocessing_fn
dilacak dan diekspor sebagai TF 2.x SavedModel (ini adalah perilaku default yang dimulai dengan tensorflow_transform 0.30
). Silakan gunakan API tft.make_and_track_object
untuk memuat modul tf.hub
seperti yang ditunjukkan pada contoh di bawah ini.
def preprocessing_fn(inputs):
hub_module = tft.make_and_track_object(lambda: hub.load(...))
...
return {'hub_module_output': hub_module(inputs[...])}
Potensi masalah migrasi
Jika memigrasikan alur tf.Transform
yang ada dari TF 1.x ke TF 2.x, masalah berikut mungkin terjadi:
RuntimeError: Urutan penganalisis di preprocessing_fn
Anda tampaknya non-deterministik.
Di TF 2.x, preprocessing_fn
yang disediakan oleh pengguna dilacak beberapa kali. Jika urutan kemunculan penganalisis TFT berubah pada setiap penelusuran, kesalahan ini akan dimunculkan. Hal ini dapat diperbaiki dengan menghapus segala non-determinisme dalam urutan pemanggilan penganalisis TFT.
Output dari transform_raw_features
tidak berisi fitur yang diharapkan.
Contoh pengecualian:
KeyError: \<feature key
atau
\<feature key> not found in features dictionary.
TFTransformOutput.transform_raw_features
mengabaikan parameter drop_unused_features
dan berperilaku seolah-olah benar. Harap perbarui setiap penggunaan kamus keluaran dari API ini untuk memeriksa apakah kunci yang Anda coba ambil ada di dalamnya.
tf.estimator.BaselineClassifier melihat kesalahan Tabel tidak diinisialisasi.
Contoh pengecualian:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
Dukungan untuk Pelatih dengan pelaksana berbasis Estimator adalah upaya terbaik. Meskipun estimator lain berfungsi, kami telah melihat masalah dengan inisialisasi tabel di BaselineClassifier. Harap nonaktifkan TF 2.x di tf.Transform
.
Masalah umum/Fitur belum didukung
Mengeluarkan kosakata dalam format TFRecord belum didukung.
tfrecord_gzip
belum didukung sebagai nilai valid untuk parameter file_format
di tft.vocabulary
(dan API kosakata lainnya).
Mempertahankan perilaku tf.Transform yang lama
Jika pipeline tf.Transform
Anda tidak dijalankan dengan TF 2.x, Anda dapat mempertahankan perilaku lama dengan salah satu cara berikut:
- Nonaktifkan TF2 di
tf.Transform
dengan memanggiltf.compat.v1.disable_v2_behavior()
- Meneruskan
force_tf_compat_v1=True
ketft_beam.Context
jika menggunakantf.Transform
sebagai pustaka mandiri atau ke komponen Transform di TFX.