이 문서에서는 tf.transform을 사용하여 일반적인 변환을 수행하는 방법을 설명합니다.
예제에 따라 빔 파이프라인을 이미 구성했다고 가정하고 preprocessing_fn
및 가능한 모델에 추가해야 할 사항만 설명합니다.
문자열/범주형 데이터 사용
다음 preprocessing_fn
내림차순으로 토큰을 사용하여 특성 x
값에 대한 어휘를 계산하고 특성 x
값을 어휘의 인덱스로 변환한 후 마지막으로 출력에 대한 원-핫 인코딩을 수행합니다.
이는 예를 들어 레이블 기능이 범주형 문자열인 사용 사례에서 일반적입니다. 결과적인 원-핫 인코딩은 훈련 준비가 되었습니다.
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,
}
누락된 데이터에 대한 평균 대치
이 예에서 기능 x
preprocessing_fn
에서 tf.SparseTensor
로 표시되는 선택적 기능입니다. 이를 조밀한 텐서로 변환하기 위해 평균을 계산하고 인스턴스에서 누락된 경우 평균을 기본값으로 설정합니다.
결과로 생성되는 밀집 텐서는 [None, 1]
모양을 가지며 None
배치 차원을 나타내고 두 번째 차원의 경우 x
인스턴스당 가질 수 있는 값의 개수가 됩니다. 이 경우에는 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])
}