مقاييس ومخططات تحليل نموذج Tensorflow

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

ملخص

تدعم TFMA المقاييس والمؤامرات التالية:

  • مقاييس keras القياسية ( tf.keras.metrics.* )
    • لاحظ أنك لست بحاجة إلى نموذج keras لاستخدام مقاييس keras. يتم حساب المقاييس خارج الرسم البياني في الحزمة باستخدام فئات المقاييس مباشرة.
  • مقاييس ومخططات TFMA القياسية ( tfma.metrics.* )

  • مقاييس keras المخصصة (المقاييس المشتقة من tf.keras.metrics.Metric )

  • مقاييس TFMA المخصصة (المقاييس المشتقة من tfma.metrics.Metric ) باستخدام وحدات تجميع الحزمة المخصصة أو المقاييس المشتقة من مقاييس أخرى).

يوفر TFMA أيضًا دعمًا مدمجًا لتحويل مقاييس التصنيف الثنائي للاستخدام مع مشاكل الفئات المتعددة / متعددة التسميات:

  • الثنائيات على أساس معرف الفئة ، أعلى K ، إلخ.
  • المقاييس المجمعة على أساس المتوسط ​​الجزئي ، المتوسط ​​الكلي ، إلخ.

يوفر TFMA أيضًا دعمًا مدمجًا للمقاييس القائمة على الاستعلام / الترتيب حيث يتم تجميع الأمثلة بواسطة مفتاح استعلام تلقائيًا في خط الأنابيب.

يوجد مجتمعة أكثر من 50 من المقاييس القياسية والمؤامرات المتاحة لمجموعة متنوعة من المشكلات بما في ذلك الانحدار ، والتصنيف الثنائي ، والتصنيف متعدد الفئات / متعدد التصنيفات ، والترتيب ، وما إلى ذلك.

ترتيب

هناك طريقتان لتكوين المقاييس في TFMA: (1) باستخدام tfma.MetricsSpec أو (2) عن طريق إنشاء مثيلات من tf.keras.metrics.* و / أو tfma.metrics.* في بايثون واستخدام tfma.metrics.specs_from_metrics لتحويلها إلى قائمة tfma.MetricsSpec .

تصف الأقسام التالية أمثلة على التكوينات لأنواع مختلفة من مشاكل التعلم الآلي.

مقاييس الانحدار

فيما يلي مثال على إعداد التكوين لمشكلة الانحدار. استشر الوحدات النمطية tf.keras.metrics.* و tfma.metrics.* لمعرفة المقاييس الإضافية الممكنة المدعومة.

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    metrics { class_name: "ExampleCount" }
    metrics { class_name: "MeanSquaredError" }
    metrics { class_name: "Accuracy" }
    metrics { class_name: "MeanLabel" }
    metrics { class_name: "MeanPrediction" }
    metrics { class_name: "Calibration" }
    metrics {
      class_name: "CalibrationPlot"
      config: '"min_value": 0, "max_value": 10'
    }
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    tfma.metrics.ExampleCount(name='example_count'),
    tf.keras.metrics.MeanSquaredError(name='mse'),
    tf.keras.metrics.Accuracy(name='accuracy'),
    tfma.metrics.MeanLabel(name='mean_label'),
    tfma.metrics.MeanPrediction(name='mean_prediction'),
    tfma.metrics.Calibration(name='calibration'),
    tfma.metrics.CalibrationPlot(
        name='calibration', min_value=0, max_value=10)
]
metrics_specs = tfma.metrics.specs_from_metrics(metrics)

لاحظ أن هذا الإعداد متوفر أيضًا عن طريق استدعاء tfma.metrics.default_regression_specs .

مقاييس التصنيف الثنائي

فيما يلي مثال على إعداد التكوين لمشكلة تصنيف ثنائي. استشر الوحدات النمطية tf.keras.metrics.* و tfma.metrics.* لمعرفة المقاييس الإضافية الممكنة المدعومة.

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    metrics { class_name: "ExampleCount" }
    metrics { class_name: "BinaryCrossentropy" }
    metrics { class_name: "BinaryAccuracy" }
    metrics { class_name: "AUC" }
    metrics { class_name: "AUCPrecisionRecall" }
    metrics { class_name: "MeanLabel" }
    metrics { class_name: "MeanPrediction" }
    metrics { class_name: "Calibration" }
    metrics { class_name: "ConfusionMatrixPlot" }
    metrics { class_name: "CalibrationPlot" }
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    tfma.metrics.ExampleCount(name='example_count'),
    tf.keras.metrics.BinaryCrossentropy(name='binary_crossentropy'),
    tf.keras.metrics.BinaryAccuracy(name='accuracy'),
    tf.keras.metrics.AUC(name='auc', num_thresholds=10000),
    tf.keras.metrics.AUC(
        name='auc_precision_recall', curve='PR', num_thresholds=10000),
    tf.keras.metrics.Precision(name='precision'),
    tf.keras.metrics.Recall(name='recall'),
    tfma.metrics.MeanLabel(name='mean_label'),
    tfma.metrics.MeanPrediction(name='mean_prediction'),
    tfma.metrics.Calibration(name='calibration'),
    tfma.metrics.ConfusionMatrixPlot(name='confusion_matrix_plot'),
    tfma.metrics.CalibrationPlot(name='calibration_plot')
]
metrics_specs = tfma.metrics.specs_from_metrics(metrics)

لاحظ أن هذا الإعداد متوفر أيضًا عن طريق استدعاء tfma.metrics.default_binary_classification_specs .

مقاييس التصنيف متعدد الفئات / متعدد التصنيفات

فيما يلي مثال على إعداد التكوين لمشكلة تصنيف متعدد الفئات. استشر الوحدات النمطية tf.keras.metrics.* و tfma.metrics.* لمعرفة المقاييس الإضافية الممكنة المدعومة.

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    metrics { class_name: "ExampleCount" }
    metrics { class_name: "SparseCategoricalCrossentropy" }
    metrics { class_name: "SparseCategoricalAccuracy" }
    metrics { class_name: "Precision" config: '"top_k": 1' }
    metrics { class_name: "Precision" config: '"top_k": 3' }
    metrics { class_name: "Recall" config: '"top_k": 1' }
    metrics { class_name: "Recall" config: '"top_k": 3' }
    metrics { class_name: "MultiClassConfusionMatrixPlot" }
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    tfma.metrics.ExampleCount(name='example_count'),
    tf.keras.metrics.SparseCategoricalCrossentropy(
        name='sparse_categorical_crossentropy'),
    tf.keras.metrics.SparseCategoricalAccuracy(name='accuracy'),
    tf.keras.metrics.Precision(name='precision', top_k=1),
    tf.keras.metrics.Precision(name='precision', top_k=3),
    tf.keras.metrics.Recall(name='recall', top_k=1),
    tf.keras.metrics.Recall(name='recall', top_k=3),
    tfma.metrics.MultiClassConfusionMatrixPlot(
        name='multi_class_confusion_matrix_plot'),
]
metrics_specs = tfma.metrics.specs_from_metrics(metrics)

لاحظ أن هذا الإعداد متاح أيضًا عن طريق استدعاء tfma.metrics.default_multi_class_classification_specs .

المقاييس الثنائية متعددة الفئات / متعددة التسميات

يمكن تحويل المقاييس متعددة الفئات / العلامات المتعددة إلى ثنائية لإنتاج مقاييس لكل فئة ، ولكل top_k ، وما إلى ذلك باستخدام tfma.BinarizationOptions . علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    binarize: { class_ids: { values: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] } }
    // Metrics to binarize
    metrics { class_name: "AUC" }
    ...
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    // Metrics to binarize
    tf.keras.metrics.AUC(name='auc', num_thresholds=10000),
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics, binarize=tfma.BinarizationOptions(
        class_ids={'values': [0,1,2,3,4,5,6,7,8,9]}))

المقاييس التجميعية متعددة الفئات / متعددة التسميات

يمكن تجميع المقاييس متعددة الفئات / العلامات المتعددة لإنتاج قيمة مجمعة واحدة لمقياس تصنيف ثنائي باستخدام tfma.AggregationOptions .

لاحظ أن إعدادات التجميع مستقلة عن إعدادات التحويل الثنائي بحيث يمكنك استخدام كل من tfma.AggregationOptions و tfma.BinarizationOptions في نفس الوقت.

المتوسط ​​الجزئي

يمكن إجراء المتوسط ​​الجزئي باستخدام خيار micro_average داخل tfma.AggregationOptions . علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    aggregate: { micro_average: true }
    // Metrics to aggregate
    metrics { class_name: "AUC" }
    ...
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    // Metrics to aggregate
    tf.keras.metrics.AUC(name='auc', num_thresholds=10000),
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics, aggregate=tfma.AggregationOptions(micro_average=True))

كما يدعم المتوسط ​​المصغر أيضًا إعداد top_k حيث يتم استخدام قيم k الأعلى فقط في الحساب. علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    aggregate: {
      micro_average: true
      top_k_list: { values: [1, 3] }
    }
    // Metrics to aggregate
    metrics { class_name: "AUC" }
    ...
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    // Metrics to aggregate
    tf.keras.metrics.AUC(name='auc', num_thresholds=10000),
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics,
    aggregate=tfma.AggregationOptions(micro_average=True,
                                      top_k_list={'values': [1, 3]}))

ماكرو / متوسط ​​الماكرو المرجح

يمكن إجراء متوسط ​​الماكرو باستخدام خيارات macro_average أو weighted_macro_average ضمن tfma.AggregationOptions . ما لم يتم استخدام إعدادات top_k ، يتطلب الماكرو ضبط class_weights من أجل معرفة الفئات التي يجب حساب المتوسط ​​لها. إذا لم يتم توفير class_weight ، فسيتم افتراض 0.0. علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    aggregate: {
      macro_average: true
      class_weights: { key: 0 value: 1.0 }
      class_weights: { key: 1 value: 1.0 }
      class_weights: { key: 2 value: 1.0 }
      class_weights: { key: 3 value: 1.0 }
      class_weights: { key: 4 value: 1.0 }
      class_weights: { key: 5 value: 1.0 }
      class_weights: { key: 6 value: 1.0 }
      class_weights: { key: 7 value: 1.0 }
      class_weights: { key: 8 value: 1.0 }
      class_weights: { key: 9 value: 1.0 }
    }
    // Metrics to aggregate
    metrics { class_name: "AUC" }
    ...
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    // Metrics to aggregate
    tf.keras.metrics.AUC(name='auc', num_thresholds=10000),
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics,
    aggregate=tfma.AggregationOptions(
        macro_average=True, class_weights={i: 1.0 for i in range(10)}))

مثل المتوسط ​​الجزئي ، يدعم متوسط ​​الماكرو أيضًا إعداد top_k حيث يتم استخدام قيم k الأعلى فقط في الحساب. علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    aggregate: {
      macro_average: true
      top_k_list: { values: [1, 3] }
    }
    // Metrics to aggregate
    metrics { class_name: "AUC" }
    ...
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    // Metrics to aggregate
    tf.keras.metrics.AUC(name='auc', num_thresholds=10000),
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics,
    aggregate=tfma.AggregationOptions(macro_average=True,
                                      top_k_list={'values': [1, 3]}))

المقاييس القائمة على الاستعلام / الترتيب

يتم تمكين المقاييس القائمة على الاستعلام / الترتيب عن طريق تحديد خيار query_key في مواصفات المقاييس. علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    query_key: "doc_id"
    metrics {
      class_name: "NDCG"
      config: '"gain_key": "gain", "top_k_list": [1, 2]'
    }
    metrics { class_name: "MinLabelPosition" }
  }
""", tfma.EvalConfig()).metrics_specs

يمكن إنشاء هذا الإعداد نفسه باستخدام كود python التالي:

metrics = [
    tfma.metrics.NDCG(name='ndcg', gain_key='gain', top_k_list=[1, 2]),
    tfma.metrics.MinLabelPosition(name='min_label_position')
]
metrics_specs = tfma.metrics.specs_from_metrics(metrics, query_key='doc_id')

مقاييس التقييم متعددة النماذج

تدعم TFMA تقييم نماذج متعددة في نفس الوقت. عند إجراء تقييم متعدد النماذج ، سيتم حساب المقاييس لكل نموذج. علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    # no model_names means all models
    ...
  }
""", tfma.EvalConfig()).metrics_specs

إذا كانت المقاييس بحاجة إلى أن يتم حسابها لمجموعة فرعية من النماذج ، model_names في metric_specs . علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    model_names: ["my-model1"]
    ...
  }
""", tfma.EvalConfig()).metrics_specs

تدعم واجهة specs_from_metrics API أيضًا تمرير أسماء النماذج:

metrics = [
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics, model_names=['my-model1'])

مقاييس مقارنة النماذج

تدعم TFMA تقييم مقاييس المقارنة لنموذج مرشح مقابل نموذج أساسي. تتمثل إحدى الطرق البسيطة لإعداد زوج النموذج المرشح والخط الأساسي في تمرير نموذج Eval_shared_model بأسماء النماذج المناسبة (tfma.BASELINE_KEY و tfma.CANDIDATE_KEY):


eval_config = text_format.Parse("""
  model_specs {
    # ... model_spec without names ...
  }
  metrics_spec {
    # ... metrics ...
  }
""", tfma.EvalConfig())

eval_shared_models = [
  tfma.default_eval_shared_model(
      model_name=tfma.CANDIDATE_KEY,
      eval_saved_model_path='/path/to/saved/candidate/model',
      eval_config=eval_config),
  tfma.default_eval_shared_model(
      model_name=tfma.BASELINE_KEY,
      eval_saved_model_path='/path/to/saved/baseline/model',
      eval_config=eval_config),
]

eval_result = tfma.run_model_analysis(
    eval_shared_models,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location="/path/to/file/containing/tfrecords",
    output_path="/path/for/output")

يتم حساب مقاييس المقارنة تلقائيًا لجميع المقاييس المختلفة (حاليًا فقط مقاييس القيمة العددية مثل الدقة و AUC).

مقاييس نموذج متعدد المخرجات

تدعم TFMA تقييم المقاييس على النماذج التي لها مخرجات مختلفة. تقوم النماذج متعددة المخرجات بتخزين تنبؤات المخرجات الخاصة بها في شكل إملاء يتم تحديده بواسطة اسم الإخراج. عند استخدام النماذج متعددة المخرجات ، يجب تحديد أسماء المخرجات المرتبطة بمجموعة من المقاييس في قسم أسماء المخرجات في output_names . علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    output_names: ["my-output"]
    ...
  }
""", tfma.EvalConfig()).metrics_specs

تدعم واجهة specs_from_metrics API أيضًا تمرير أسماء المخرجات:

metrics = [
    ...
]
metrics_specs = tfma.metrics.specs_from_metrics(
    metrics, output_names=['my-output'])

تخصيص إعدادات القياس

يسمح TFMA بتخصيص الإعدادات المستخدمة بمقاييس مختلفة. على سبيل المثال ، قد ترغب في تغيير الاسم ، وتعيين العتبات ، وما إلى ذلك. ويتم ذلك عن طريق إضافة قسم config إلى التكوين المتري. يتم تحديد التكوين باستخدام إصدار سلسلة JSON للمعلمات التي سيتم تمريرها إلى طريقة المقاييس __init__ (لسهولة الاستخدام ، قد يتم حذف الأقواس البادئة والتالية "{" و "}"). علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    metrics {
      class_name: "ConfusionMatrixAtThresholds"
      config: '"thresholds": [0.3, 0.5, 0.8]'
    }
  }
""", tfma.MetricsSpec()).metrics_specs

هذا التخصيص مدعوم بالطبع أيضًا بشكل مباشر:

metrics = [
   tfma.metrics.ConfusionMatrixAtThresholds(thresholds=[0.3, 0.5, 0.8]),
]
metrics_specs = tfma.metrics.specs_from_metrics(metrics)

النواتج

ناتج التقييم المتري عبارة عن سلسلة من المفاتيح / القيم المترية و / أو مفاتيح / قيم المؤامرة بناءً على التكوين المستخدم.

مفاتيح متري

يتم تعريف MetricKeys باستخدام نوع مفتاح منظم. يحدد هذا المفتاح بشكل فريد كل جانب من الجوانب التالية للمقياس:

  • اسم المقياس ( auc ، mean_label ، إلخ)
  • اسم النموذج (يُستخدم فقط في حالة التقييم متعدد النماذج)
  • اسم الإخراج (يستخدم فقط إذا تم تقييم النماذج متعددة المخرجات)
  • المفتاح الفرعي (على سبيل المثال ، معرف الفئة إذا تم تحويل النموذج متعدد الفئات إلى ثنائي)

قيمة المقياس

يتم تعريف MetricValues ​​باستخدام بروتو يلخص أنواع القيم المختلفة التي تدعمها المقاييس المختلفة (على سبيل المثال ، double ، ConfusionMatrixAtThresholds ، إلخ).

فيما يلي أنواع قيم المقاييس المدعومة:

  • double_value - غلاف لنوع مزدوج.
  • bytes_value - قيمة بايت.
  • bounded_value - يمثل قيمة حقيقية يمكن أن تكون تقديرًا نقطيًا ، اختياريًا مع حدود تقريبية من نوع ما. لها value خصائص ، و lower_bound و upper_bound .
  • value_at_cutoffs - القيمة عند القطع (على سبيل المثال ، الدقة @ K ، الاستدعاء @ K). لها values ممتلكات ، لكل منها خصائص cutoff value .
  • confusion_matrix_at_thresholds - مصفوفة الارتباك عند العتبات. يحتوي على matrices خاصية ، لكل منها خصائص قيم مصفوفة threshold precision recall والارتباك مثل false_negatives .
  • array_value - للمقاييس التي تُرجع مصفوفة من القيم.

مؤامرة مفاتيح

تتشابه مفاتيح PlotKeys مع المفاتيح المترية باستثناء أنه لأسباب تاريخية يتم تخزين جميع قيم المؤامرات في بروتو واحد بحيث لا يكون لمفتاح الرسم اسمًا.

قيم المؤامرة

يتم تخزين جميع المؤامرات المدعومة في نموذج أولي واحد يسمى PlotData .

EvalResult

العائد من تشغيل التقييم هو tfma.EvalResult . يحتوي هذا السجل على slicing_metrics التي تشفر المفتاح المتري كإملاء متعدد المستويات حيث تتوافق المستويات مع اسم الإخراج ومعرف الفئة واسم المقياس وقيمة المقياس على التوالي. الغرض من هذا هو استخدامه لعرض واجهة المستخدم في دفتر ملاحظات كوكب المشتري. إذا كان الوصول إلى البيانات الأساسية مطلوبًا ، فيجب استخدام ملف نتائج metrics بدلاً من ذلك (انظر metrics_for_slice.proto ).

التخصيص

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

في كلتا الحالتين ، يتم تكوين المقاييس عن طريق تحديد اسم فئة المقياس والوحدة النمطية المرتبطة بها. علي سبيل المثال:

from google.protobuf import text_format

metrics_specs = text_format.Parse("""
  metrics_specs {
    metrics { class_name: "MyMetric" module: "my.module"}
  }
""", tfma.EvalConfig()).metrics_specs

مقاييس Keras المخصصة

لإنشاء مقياس keras مخصص ، يحتاج المستخدمون إلى توسيع tf.keras.metrics.Metric مع تنفيذها ثم التأكد من توفر وحدة القياس في وقت التقييم.

لاحظ أنه لمقاييس حفظ نموذج النشر المضافة ، يدعم TFMA فقط المقاييس التي تأخذ التسمية (مثل y_true) والتنبؤ (y_pred) ومثال الوزن (وزن العينة) كمعلمات لطريقة update_state .

مثال Keras Metric

فيما يلي مثال على مقياس keras المخصص:

class MyMetric(tf.keras.metrics.Mean):

  def __init__(self, name='my_metric', dtype=None):
    super(MyMetric, self).__init__(name=name, dtype=dtype)

  def update_state(self, y_true, y_pred, sample_weight=None):
    return super(MyMetric, self).update_state(
        y_pred, sample_weight=sample_weight)

مقاييس TFMA المخصصة

لإنشاء مقياس TFMA مخصص ، يحتاج المستخدمون إلى توسيع tfma.metrics.Metric مع تنفيذها ثم التأكد من توفر وحدة القياس في وقت التقييم.

قياس

يتكون التنفيذ المتري من مجموعة من tfma.metrics.Metric التي تحدد تكوين المقاييس جنبًا إلى جنب مع وظيفة لإنشاء الحسابات (ربما متعددة) اللازمة لحساب قيمة المقاييس. هناك نوعان رئيسيان من الحسابات التي يمكن استخدامها: tfma.metrics.MetricComputation و tfma.metrics.DerivedMetricComputation الموصوفة في الأقسام أدناه. سيتم تمرير المعلمات التالية كمدخلات للدالة التي تنشئ هذه الحسابات:

  • eval_config: tfam.EvalConfig
    • تم تمرير config config إلى المقيم (مفيد للبحث عن إعدادات مواصفات النموذج مثل مفتاح التنبؤ المراد استخدامه ، وما إلى ذلك).
  • model_names: List[Text]
    • قائمة بأسماء النماذج لحساب المقاييس لـ (لا شيء إذا كان نموذجًا واحدًا)
  • output_names: List[Text] .
    • قائمة بأسماء المخرجات لحساب المقاييس لـ (لا شيء إذا كان نموذجًا واحدًا)
  • sub_keys: List[tfma.SubKey] .
    • قائمة المفاتيح الفرعية (معرف الفئة ، أعلى K ، إلخ) لحساب المقاييس لـ (أو لا شيء)
  • aggregation_type: tfma.AggregationType
    • نوع التجميع في حالة حساب مقياس التجميع.
  • class_weights: Dict[int, float] .
    • أوزان الفئة المراد استخدامها في حالة حساب مقياس التجميع.
  • query_key: Text
    • يتم استخدام مفتاح الاستعلام في حالة حساب مقياس قائم على الاستعلام / الترتيب.

إذا لم يكن المقياس مرتبطًا بواحد أو أكثر من هذه الإعدادات ، فقد يترك هذه المعلمات خارج تعريف التوقيع الخاص به.

إذا تم حساب القياس بنفس الطريقة لكل نموذج ومخرج ومفتاح فرعي ، فيمكن استخدام الأداة المساعدة tfma.metrics.merge_per_key_computations لإجراء نفس الحسابات لكل من هذه المدخلات على حدة.

متري

يتكون MetricComputation من مجموعة من preprocessors combiner . المعالجات التمهيدية هي قائمة بالمعالجات preprocessor ، وهي حزمة. preprocessors تأخذ المقتطفات كمدخلات لها beam.DoFn الحالة الأولية التي سيتم استخدامها بواسطة المجمع (انظر الهندسة لمزيد من المعلومات حول ما هي المقتطفات). سيتم تنفيذ جميع المعالجات الأولية بالتسلسل حسب ترتيب القائمة. إذا كانت preprocessors فارغة ، فسيتم تمرير أداة التجميع StandardMetricInputs (تحتوي المدخلات المترية القياسية على التسميات والتنبؤات و example_weights). المُدمج عبارة عن beam.CombineFn يأخذ مجموعة من (مفتاح الشريحة ، إخراج المعالج المسبق) كمدخلات وإخراج مجموعة من ( combiner ، metric resultsict) كنتيجة لها.

لاحظ أن التقطيع يحدث بين preprocessors combiner .

لاحظ أنه إذا أراد الحساب المتري الاستفادة من كلٍّ من المدخلات المترية القياسية ، ولكن زيادتها ببعض الميزات من مقتطفات features ، فيمكن استخدام معالِج FeaturePreprocessor الخاص الذي سيدمج الميزات المطلوبة من مُجمِّعات متعددة في وحدة واحدة قيمة StandardMetricsInputs المشتركة التي يتم تمريرها إلى جميع المجمعات (المجمعين مسؤولون عن قراءة الميزات التي يهتمون بها وتجاهل الباقي).

مثال

فيما يلي مثال بسيط جدًا على تعريف مقياس TFMA لحساب ExampleCount:

class ExampleCount(tfma.metrics.Metric):

  def __init__(self, name: Text = 'example_count'):
    super(ExampleCount, self).__init__(_example_count, name=name)


def _example_count(
    name: Text = 'example_count') -> tfma.metrics.MetricComputations:
  key = tfma.metrics.MetricKey(name=name)
  return [
      tfma.metrics.MetricComputation(
          keys=[key],
          preprocessors=[_ExampleCountPreprocessor()],
          combiner=_ExampleCountCombiner(key))
  ]


class _ExampleCountPreprocessor(beam.DoFn):

  def process(self, extracts: tfma.Extracts) -> Iterable[int]:
    yield 1


class _ExampleCountCombiner(beam.CombineFn):

  def __init__(self, metric_key: tfma.metrics.MetricKey):
    self._metric_key = metric_key

  def create_accumulator(self) -> int:
    return 0

  def add_input(self, accumulator: int, state: int) -> int:
    return accumulator + state

  def merge_accumulators(self, accumulators: Iterable[int]) -> int:
    accumulators = iter(accumulators)
    result = next(accumulator)
    for accumulator in accumulators:
      result += accumulator
    return result

  def extract_output(self,
                     accumulator: int) -> Dict[tfma.metrics.MetricKey, int]:
    return {self._metric_key: accumulator}

مشتقة MetricComputation

يتكون DerivedMetricComputation من دالة نتيجة تُستخدم لحساب القيم المترية بناءً على ناتج الحسابات المترية الأخرى. تأخذ دالة النتيجة إملاء من القيم المحسوبة كمدخلات ومخرجات لإملاء نتائج قياس إضافية.

لاحظ أنه من المقبول (موصى به) تضمين الحسابات التي يعتمد عليها الحساب المشتق في قائمة الحسابات التي تم إنشاؤها بواسطة مقياس. هذا تجنب الاضطرار إلى الإنشاء المسبق وتمرير الحسابات المشتركة بين مقاييس متعددة. سيقوم المقيم تلقائيًا بإلغاء العمليات الحسابية التي لها نفس التعريف بحيث يتم تشغيل عملية حسابية واحدة بالفعل.

مثال

توفر مقاييس TJUR مثالًا جيدًا للمقاييس المشتقة.