इस दस्तावेज़ में हम वर्णन करते हैं कि 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])
}