تكوين نموذج Eval المحفوظ

يمكن لتحليل نموذج TensorFlow (TFMA) تصدير الرسم البياني لتقييم النموذج إلى SavedModel خاص يسمى EvalSavedModel . (لاحظ أنه يتم استخدام الرسم البياني للتقييم وليس الرسم البياني للتدريب أو الاستدلال.) يحتوي EvalSavedModel على معلومات إضافية تسمح لـ TFMA بحساب نفس مقاييس التقييم المحددة في النموذج بطريقة موزعة على كمية كبيرة من البيانات والبيانات المحددة من قبل المستخدم. شرائح.

تعديل نموذج موجود

لاستخدام نموذج موجود مع TFMA، قم أولاً بتعديل النموذج لتصدير EvalSavedModel . يتم ذلك عن طريق إضافة استدعاء إلى tfma.export.export_eval_savedmodel وهو مشابه لـ estimator.export_savedmodel . على سبيل المثال:

# Define, train and export your estimator as usual
estimator = tf.estimator.DNNClassifier(...)
estimator.train(...)
estimator.export_savedmodel(...)

# Also export the EvalSavedModel
tfma.export.export_eval_savedmodel(
  estimator=estimator, export_dir_base=export_dir,
  eval_input_receiver_fn=eval_input_receiver_fn)

يجب تعريف eval_input_receiver_fn ويكون مشابهًا لـ serving_input_receiver_fn لـ estimator.export_savedmodel . مثل serving_input_receiver_fn ، تحدد الدالة eval_input_receiver_fn مثالًا لعنصر نائب للإدخال، وتوزع الميزات من المثال، وترجع الميزات التي تم تحليلها. يقوم بتوزيع وإرجاع التسمية.

يحدد المقتطف التالي مثالًا eval_input_receiver_fn :

country = tf.feature_column.categorical_column_with_hash('country', 100)
language = tf.feature_column.categorical_column_with_hash('language', 100)
age = tf.feature_column.numeric_column('age')
label = tf.feature_column.numeric_column('label')

def eval_input_receiver_fn():
  serialized_tf_example = tf.compat.v1.placeholder(
      dtype=tf.string, shape=[None], name='input_example_placeholder')

  # This *must* be a dictionary containing a single key 'examples', which
  # points to the input placeholder.
  receiver_tensors = {'examples': serialized_tf_example}

  feature_spec =  tf.feature_column.make_parse_example_spec(
      [country, language, age, label])
  features = tf.io.parse_example(serialized_tf_example, feature_spec)

  return tfma.export.EvalInputReceiver(
    features=features,
    receiver_tensors=receiver_tensors,
    labels=features['label'])

في هذا المثال يمكنك أن ترى أن:

  • يمكن أن تكون labels أيضًا قاموسًا. مفيد لنموذج متعدد الرؤوس.
  • من المرجح أن تكون الدالة eval_input_receiver_fn هي نفسها الدالة serving_input_receiver_fn الخاصة بك. ولكن، في بعض الحالات، قد ترغب في تحديد ميزات إضافية للتقطيع. على سبيل المثال، يمكنك تقديم ميزة age_category التي تقسم ميزة age إلى مجموعات بيانات متعددة. يمكنك بعد ذلك تقسيم هذه الميزة في TFMA للمساعدة في فهم كيفية اختلاف أداء النموذج الخاص بك عبر الفئات العمرية المختلفة.

إضافة مقاييس ما بعد التصدير

يمكن إضافة المقاييس الإضافية غير المضمنة في النموذج باستخدام add_metrics_callbacks . لمزيد من التفاصيل، راجع مساعدة بايثون لتحليل run_model_analysis .

أمثلة نهاية إلى نهاية

جرّب المثال الشامل الشامل الذي يتضمن TensorFlow Transform للمعالجة المسبقة للميزات، ومقدرات TensorFlow للتدريب، وتحليل نموذج TensorFlow وJupyter للتقييم، و TensorFlow Serving للعرض.

إضافة مقياس تصدير مخصص للنشر

إذا كنت ترغب في إضافة مقياس تصدير النشر المخصص الخاص بك في TFMA، فيرجى مراجعة الوثائق هنا .