التحولات المشتركة

نوضح في هذا المستند كيفية إجراء تحويلات شائعة باستخدام 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 هي ميزة اختيارية، يتم تمثيلها كـ tf.SparseTensor في preprocessing_fn . من أجل تحويله إلى موتر كثيف، نحسب متوسطه، ونضبط المتوسط ​​ليكون القيمة الافتراضية عندما يكون مفقودًا من مثيل.

سيكون للموتر الكثيف الناتج الشكل [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])
  }