การใช้ tf.Transform ด้วย TensorFlow 2.x

เริ่มต้นด้วยการเปิด tf.Transform 0.30 ลักษณะการทำงานเริ่มต้นคือการส่งออก 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 เห็นข้อผิดพลาดในการเตรียมใช้งานตารางไม่ได้

ข้อยกเว้นตัวอย่าง:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.

การสนับสนุนสำหรับเทรนเนอร์ที่มีผู้ดำเนินการที่ใช้ Estimator ถือเป็นความพยายามอย่างดีที่สุด ในขณะที่ตัวประมาณค่าอื่นๆ ทำงาน เราได้พบปัญหาเกี่ยวกับการเริ่มต้นตารางใน 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()
  • การส่งผ่าน force_tf_compat_v1=True ไปยัง tft_beam.Context หากใช้ tf.Transform เป็นไลบรารีแบบสแตนด์อโลนหรือไปยังส่วนประกอบ Transform ใน TFX
,

เริ่มต้นด้วยการเปิด tf.Transform 0.30 ลักษณะการทำงานเริ่มต้นคือการส่งออก 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 เห็นข้อผิดพลาดในการเตรียมใช้งานตารางไม่ได้

ข้อยกเว้นตัวอย่าง:

tensorflow.python.framework.errors_impl.FailedPreconditionError: Table not initialized.

การสนับสนุนสำหรับเทรนเนอร์ที่มีผู้ดำเนินการที่ใช้ Estimator ถือเป็นความพยายามอย่างดีที่สุด ในขณะที่ตัวประมาณค่าอื่นๆ ทำงาน เราได้พบปัญหาเกี่ยวกับการเริ่มต้นตารางใน 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()
  • การส่งผ่าน force_tf_compat_v1=True ไปยัง tft_beam.Context หากใช้ tf.Transform เป็นไลบรารีแบบสแตนด์อโลนหรือไปยังส่วนประกอบ Transform ใน TFX