שימוש ב-tf.Transform עם TensorFlow 2.x

החל מהגרסה 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, תוכל לשמור על התנהגות מדור קודם באחת מהדרכים הבאות:

,

החל מהגרסה 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, תוכל לשמור על התנהגות מדור קודם באחת מהדרכים הבאות: