انضم إلينا في DevFest لأوكرانيا من 14 إلى 15 يونيو عبر الإنترنت سجل الآن

مقاييس ومخططات تحليل نموذج 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 .

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

يمكن binarized متعدد الطبقة / متعددة تسمية مقاييس لإنتاج المقاييس في الصف الواحد، في 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 .

علما بأن إعدادات تجميع مستقلة عن binarization الإعدادات بحيث يمكنك استخدام كل 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 حيث تستخدم فقط القيم ك العليا في الحساب. على سبيل المثال:

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 حيث تستخدم فقط القيم ك العليا في الحساب. على سبيل المثال:

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 تقييم المقاييس على النماذج ذات المخرجات المختلفة. تقوم النماذج متعددة المخرجات بتخزين تنبؤات المخرجات الخاصة بها في شكل dict مرتبط باسم الإخراج. عندما يتم استخدام النموذج متعدد الانتاج، وأسماء المخرجات المرتبطة مع مجموعة من المقاييس يجب أن تكون محددة في output_names قسم من MetricsSpec. على سبيل المثال:

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 يتم تعريفها باستخدام بروتو أن encapulates أنواع قيمة مختلفة بدعم من مقاييس مختلفة (على سبيل المثال double ، ConfusionMatrixAtThresholds ، الخ).

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

  • double_value - A المجمع لنوع مزدوج.
  • bytes_value - A بايت القيمة.
  • bounded_value - يمثل قيمة الحقيقية التي يمكن أن يكون تقدير pointwise، اختياريا مع الحدود التقريبية من نوع ما. له خصائص 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)، ومثال الوزن (sample_weight) كمعلمات إلى 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 في تنفيذها ثم تأكد من وحدة القياس هي متوفرة في وقت التقييم.

قياس

A tfma.metrics.Metric يتم تنفيذ تتكون من مجموعة من kwargs التي تحدد تهيئة المقاييس جنبا إلى جنب مع وظيفة لخلق الحسابية (ربما متعددة) اللازمة لcalcuate قيمة المقاييس. هناك نوعان حساب الرئيسية التي يمكن استخدامها: 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 يمكن استخدامها لأداء نفس الحسابية لكل من هذه المدخلات على حدة.

متري

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

لاحظ أن تشريح يحدث بين preprocessor و 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],
          preprocessor=_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

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

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

مثال

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