Menggunakan tf.Transform dengan TensorFlow 2.x

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 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:

,

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 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: