با انتشار 0.30
tf.Transform
، رفتار پیشفرض صادر کردن یک TF 2.x SavedModel است، مگر اینکه رفتارهای TF 2.x به صراحت غیرفعال شده باشند. این صفحه راهنمایی برای استفاده از 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
ردیابی شده و بهعنوان یک TF 2.x 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
شما غیر قطعی به نظر می رسد.
در TF 2.x، preprocessing_fn
ارائه شده توسط کاربر چندین بار ردیابی می شود. اگر ترتیب مواجه شدن با آنالایزرهای TFT با هر ردیابی تغییر کند، این خطا مطرح می شود. این را می توان با حذف هرگونه عدم قطعیت در ترتیب فراخوانی تحلیلگرهای TFT برطرف کرد.
خروجی transform_raw_features
دارای ویژگی مورد انتظار نیست.
استثناهای مثال:
KeyError: \<feature key
یا
\<feature key> not found in features dictionary.
TFTransformOutput.transform_raw_features
پارامتر drop_unused_features
را نادیده می گیرد و طوری رفتار می کند که گویی True است. لطفاً هرگونه استفاده از فرهنگ لغت خروجی را از این API بهروزرسانی کنید تا بررسی کنید آیا کلیدی که میخواهید بازیابی کنید در آن وجود دارد یا خیر.
tf.estimator.BaselineClassifier خطای Table Not Initialized را می بیند.
مثال استثنا:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
پشتیبانی از ترینر با مجری مبتنی بر برآوردگر بهترین تلاش است. در حالی که برآوردگرهای دیگر کار می کنند، ما مشکلاتی را در مورد مقداردهی اولیه جدول در BaselineClassifier دیده ایم. لطفاً TF 2.x را در tf.Transform
غیرفعال کنید .
مسائل شناخته شده / ویژگی هایی که هنوز پشتیبانی نمی شوند
خروجی واژگان در قالب TFRecord هنوز پشتیبانی نمی شود.
tfrecord_gzip
هنوز به عنوان یک مقدار معتبر برای پارامتر file_format
در tft.vocabulary
(و سایر APIهای واژگان) پشتیبانی نمی شود.
حفظ tf میراث. رفتار را تغییر دهید
اگر خط لوله tf.Transform
شما نباید با TF 2.x اجرا شود، میتوانید رفتار قدیمی را به یکی از روشهای زیر حفظ کنید:
- غیرفعال کردن TF2 در
tf.Transform
با فراخوانیtf.compat.v1.disable_v2_behavior()
- عبور
force_tf_compat_v1=True
در صورت استفاده ازtf.Transform
به عنوان یک کتابخانه مستقل یا به جزء Transform در TFX، باtft_beam.Context
درست است.