بدءًا من الإصدار 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، قد تتم مواجهة المشكلات التالية:
خطأ في وقت التشغيل: يبدو أن ترتيب المحللين في 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
ويتصرف كما لو كان صحيحًا. يرجى تحديث أي استخدامات لقاموس الإخراج من واجهة برمجة التطبيقات هذه للتحقق مما إذا كان المفتاح الذي تحاول استرداده موجودًا فيه.
يرى tf.estimator.BaselineClassifier خطأ عدم تهيئة الجدول.
استثناء المثال:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
يعد دعم المدرب مع المنفذ القائم على المقدر هو أفضل جهد. بينما يعمل المقدرون الآخرون، فقد رأينا مشكلات تتعلق بتهيئة الجدول في BaselineClassifier. الرجاء تعطيل TF 2.x في tf.Transform
.
المشكلات / الميزات المعروفة غير مدعومة بعد
إن إخراج المفردات بتنسيق TFRecord غير مدعوم بعد.
tfrecord_gzip
غير مدعوم حتى الآن كقيمة صالحة لمعلمة file_format
في tft.vocabulary
(وواجهات برمجة تطبيقات المفردات الأخرى).
الاحتفاظ بسلوك tf القديم. التحويل
إذا لم يكن من المفترض تشغيل مسار tf.Transform
مع TF 2.x، فيمكنك الاحتفاظ بالسلوك القديم بإحدى الطرق التالية:
- قم بتعطيل TF2 في
tf.Transform
عن طريق الاتصال بـtf.compat.v1.disable_v2_behavior()
- تمرير
force_tf_compat_v1=True
إلىtft_beam.Context
في حالة استخدامtf.Transform
كمكتبة مستقلة أو إلى مكون التحويل في TFX.