เริ่มต้นด้วยการเปิด 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