החל מהגרסה 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
אנא השתמש בממשק API tft.make_and_track_object
כדי לטעון דגמי 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
). אנא השתמש בממשק API tft.make_and_track_object
כדי לטעון מודולי 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 רואה שגיאה לא אתחול הטבלה.
חריג לדוגמה:
tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.
תמיכה ב-Trainer עם מנהל מבוסס הערכה היא המאמץ הטוב ביותר. בעוד שמעריכים אחרים עובדים, ראינו בעיות באתחול הטבלה ב-BaselineClassifier. אנא השבת את TF 2.x ב- tf.Transform
.
בעיות ידועות / תכונות שעדיין אינן נתמכות
הפלט של אוצר מילים בפורמט TFRecord אינו נתמך עדיין.
tfrecord_gzip
עדיין אינו נתמך כערך חוקי עבור פרמטר file_format
ב- tft.vocabulary
(ובממשקי API אחרים של אוצר מילים).
שמירה על המורשת tf.Transform התנהגות
אם צינור tf.Transform
שלך לא אמור לפעול עם TF 2.x, תוכל לשמור על התנהגות מדור קודם באחת מהדרכים הבאות:
- השבת את TF2 ב-
tf.Transform
על ידי קריאה ל-tf.compat.v1.disable_v2_behavior()
- Passing
force_tf_compat_v1=True
ל-tft_beam.Context
אם משתמשים ב-tf.Transform
כספרייה עצמאית או לרכיב Transform ב-TFX.