เริ่มต้นด้วยการเปิดตัว 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.
การสนับสนุนสำหรับ Trainer ที่มีผู้ดำเนินการที่ใช้ 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