يمكن لتحليل نموذج 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، فيرجى مراجعة الوثائق هنا .