Sử dụng tf.Transform với TensorFlow 2.x

Bắt đầu với 0.30 phát hành tf.Transform , hành vi mặc định là để xuất khẩu một SavedModel TF 2.x trừ hành vi TF 2.x là rõ ràng người tàn tật. Trang này cung cấp một hướng dẫn sử dụng tf.Transform xuất khẩu đồ thị chuyển đổi như một TensorFlow 2.x SavedModel.

Tính năng mới trong tf.Transform với TF 2.x

Đang tải mô hình Keras trong preprocessing_fn

Vui lòng sử dụng các tft.make_and_track_object API để tải mô hình Keras như trong ví dụ dưới đây.

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[...])}

Sử dụng mô-đun TF 2.x tf.hub

TF module hub 2.x làm việc trong tf.Transform chỉ khi preprocessing_fn được truy tìm và xuất ra dưới dạng một SavedModel TF 2.x (đây là hành vi mặc định bắt đầu với tensorflow_transform 0.30 ). Vui lòng sử dụng các tft.make_and_track_object API để tải tf.hub module như trong ví dụ dưới đây.

def preprocessing_fn(inputs):
  hub_module = tft.make_and_track_object(lambda: hub.load(...))
  ...
  return {'hub_module_output': hub_module(inputs[...])}

Các vấn đề di chuyển tiềm ẩn

Nếu việc di chuyển một hiện tf.Transform đường ống từ TF 1.x để TF 2.x, các vấn đề sau đây có thể gặp phải:

RuntimeError: Trình tự phân tích trong bạn preprocessing_fn dường như là không xác định.

Trong TF 2.x, các preprocessing_fn được cung cấp bởi người dùng sẽ được truy nhiều lần. Nếu thứ tự mà các bộ phân tích TFT gặp phải thay đổi theo từng dấu vết, lỗi này sẽ tăng lên. Điều này có thể được khắc phục bằng cách loại bỏ bất kỳ yếu tố không xác định nào theo thứ tự mà các bộ phân tích TFT được sử dụng.

Sản lượng transform_raw_features không chứa tính năng dự kiến.

Ví dụ ngoại lệ:

KeyError: \<feature key>

hoặc

\<feature key> not found in features dictionary.

TFTransformOutput.transform_raw_features bỏ qua drop_unused_features tham số và cư xử như thể nó là True. Vui lòng cập nhật bất kỳ cách sử dụng nào của từ điển đầu ra từ API này để kiểm tra xem khóa bạn đang cố lấy có tồn tại trong đó không.

tf.estimator.BaselineClassifier thấy lỗi Bảng không được khởi tạo.

Ví dụ ngoại lệ:

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

Hỗ trợ cho Trainer với người thực thi dựa trên Estimator là nỗ lực hết sức. Trong khi các trình ước tính khác hoạt động, chúng tôi đã thấy các vấn đề với việc khởi tạo bảng trong BaselineClassifier. Xin vui lòng vô hiệu hóa 2.x TF trong tf.Transform .

Các sự cố đã biết / Tính năng chưa được hỗ trợ

Chưa hỗ trợ xuất các từ vựng ở định dạng TFRecord.

tfrecord_gzip chưa được hỗ trợ như một giá trị hợp lệ cho file_format tham số trong tft.vocabulary (và API từ vựng khác).

Giữ lại hành vi tf. Transform cũ

Nếu bạn tf.Transform đường ống không nên chạy với TF 2.x, bạn có thể giữ lại các hành vi di sản thuộc một trong các cách sau:

  • Vô hiệu hoá TF2 trong tf.Transform bằng cách gọi tf.compat.v1.disable_v2_behavior()
  • Đi qua force_tf_compat_v1=True để tft_beam.Context nếu sử dụng tf.Transform như một thư viện độc lập hoặc với thành phần chuyển đổi trong TFX.