Trong tài liệu này, chúng tôi mô tả cách thực hiện các phép biến đổi phổ biến với tf.transform.
Chúng tôi giả sử bạn đã xây dựng đường dẫn chùm tia dọc theo dòng của các ví dụ và chỉ mô tả những gì cần được thêm vào preprocessing_fn
và có thể cả mô hình.
Sử dụng dữ liệu Chuỗi/Phân loại
Quá preprocessing_fn
sau đây sẽ tính toán từ vựng dựa trên các giá trị của tính năng x
bằng mã thông báo theo thứ tự tần số giảm dần, chuyển đổi các giá trị tính năng x
thành chỉ mục của chúng trong từ vựng và cuối cùng thực hiện mã hóa một lần cho đầu ra.
Điều này thường xảy ra, chẳng hạn như trong các trường hợp sử dụng trong đó đặc điểm nhãn là một chuỗi phân loại. Mã hóa one-hot thu được đã sẵn sàng để huấn luyện.
def preprocessing_fn(inputs):
integerized = tft.compute_and_apply_vocabulary(
inputs['x'],
num_oov_buckets=1,
vocab_filename='x_vocab')
one_hot_encoded = tf.one_hot(
integerized,
depth=tf.cast(tft.experimental.get_vocabulary_size_by_name('x_vocab') + 1,
tf.int32),
on_value=1.0,
off_value=0.0)
return {
'x_out': one_hot_encoded,
}
Giá trị trung bình cho dữ liệu bị thiếu
Trong ví dụ này, tính năng x
là một tính năng tùy chọn, được biểu thị dưới dạng tf.SparseTensor
trong preprocessing_fn
. Để chuyển đổi nó thành một tensor dày đặc, chúng tôi tính toán giá trị trung bình của nó và đặt giá trị trung bình thành giá trị mặc định khi nó bị thiếu trong một phiên bản.
Tensor dày đặc thu được sẽ có hình dạng [None, 1]
, None
đại diện cho thứ nguyên lô và đối với thứ nguyên thứ hai, nó sẽ là số giá trị mà x
có thể có cho mỗi phiên bản. Trong trường hợp này là 1.
def preprocessing_fn(inputs):
return {
'x_out': tft.sparse_tensor_to_dense_with_shape(
inputs['x'], default_value=tft.mean(x), shape=[None, 1])
}