पोस्ट निर्यात मेट्रिक्स

जैसा कि नाम से पता चलता है, यह एक मीट्रिक है जिसे मूल्यांकन से पहले, निर्यात के बाद जोड़ा जाता है।

टीएफएमए को कई पूर्व-परिभाषित मूल्यांकन मेट्रिक्स के साथ पैक किया गया है, जैसे उदाहरण_काउंट, एयूसी, कन्फ्यूजन_मैट्रिक्स_एट_थ्रेसहोल्ड्स, प्रिसिजन_रिकॉल_एट_के, एमएसई, एमएई, आदि। (पूरी सूची यहां ।)

यदि आपको अपने उपयोग-मामले के लिए कोई मौजूदा मीट्रिक प्रासंगिक नहीं मिलती है, या आप किसी मीट्रिक को कस्टमाइज़ करना चाहते हैं, तो आप अपनी स्वयं की कस्टम मीट्रिक परिभाषित कर सकते हैं। जानकारी के लिए पढ़ें!

टीएफएमए में कस्टम मेट्रिक्स जोड़ना

TFMA 1.x में कस्टम मेट्रिक्स को परिभाषित करना

सार बेस क्लास बढ़ाएँ

एक कस्टम मेट्रिक जोड़ने के लिए, _PostExportMetric एब्सट्रैक्ट क्लास का विस्तार करते हुए एक नया क्लास बनाएं और इसके कंस्ट्रक्टर को परिभाषित करें और एब्सट्रैक्ट/अनइम्प्लीमेंटेड तरीकों को लागू करें।

कंस्ट्रक्टर को परिभाषित करें

कंस्ट्रक्टर में, कस्टम मीट्रिक के लिए आवश्यक सभी प्रासंगिक जानकारी जैसे लेबल_की, प्रेडिक्शन_की, उदाहरण_वेट_की, मीट्रिक_टैग इत्यादि को पैरामीटर के रूप में लें।

सार/अकार्यान्वित तरीकों को लागू करें
  • check_compatibility

    मूल्यांकन किए जा रहे मॉडल के साथ मीट्रिक की अनुकूलता की जांच करने के लिए इस विधि को लागू करें, यानी यह जांचना कि मॉडल में सभी आवश्यक सुविधाएं, अपेक्षित लेबल और भविष्यवाणी कुंजी उचित डेटा प्रकार में मौजूद हैं या नहीं। इसमें तीन तर्क लगते हैं:

    • फीचर्स_डिक्ट
    • भविष्यवाणियां_निर्देश
    • लेबल_डिक्ट

    इन शब्दकोशों में मॉडल के लिए टेन्सर्स के संदर्भ शामिल हैं।

  • get_metric_ops

    मीट्रिक की गणना करने के लिए मीट्रिक ऑप्स (मूल्य और अद्यतन ऑप्स) प्रदान करने के लिए इस विधि को लागू करें। check_compatibility विधि के समान, इसमें भी तीन तर्क लगते हैं:

    • फीचर्स_डिक्ट
    • भविष्यवाणियां_निर्देश
    • लेबल_डिक्ट

    मॉडल के लिए टेंसर के इन संदर्भों का उपयोग करके अपने मीट्रिक गणना तर्क को परिभाषित करें।

  • पॉप्युलेट_स्टैट्स_एंड_पॉप और पॉप्युलेट_प्लॉट्स_एंड_पॉप

    कच्चे मीट्रिक परिणामों को मेट्रिकवैल्यू और प्लॉटडेटा प्रोटो प्रारूप में बदलने के लिए इस मीट्रिक को लागू करें। इसमें तीन तर्क लगते हैं:

    • स्लाइस_की: स्लाइस मेट्रिक का नाम संबंधित है।
    • संयुक्त_मेट्रिक्स: कच्चे परिणामों वाला शब्दकोश।
    • आउटपुट_मेट्रिक्स: आउटपुट डिक्शनरी जिसमें वांछित प्रोटो प्रारूप में मीट्रिक शामिल है।
@_export('my_metric')
class _MyMetric(_PostExportMetric):
   def __init__(self,
                target_prediction_keys: Optional[List[Text]] = None,
                labels_key: Optional[Text] = None,
                metric_tag: Optional[Text] = None):
      self._target_prediction_keys = target_prediction_keys
      self._label_keys = label_keys
      self._metric_tag = metric_tag
      self._metric_key = 'my_metric_key'

   def check_compatibility(self, features_dict:types.TensorTypeMaybeDict,
                           predictions_dict: types.TensorTypeMaybeDict,
                           labels_dict: types.TensorTypeMaybeDict) -> None:
       # Add compatibility check needed for the metric here.

   def get_metric_ops(self, features_dict: types.TensorTypeMaybeDict,
                      predictions_dict: types.TensorTypeMaybeDict,
                      labels_dict: types.TensorTypeMaybeDict
                     ) -> Dict[bytes, Tuple[types.TensorType,
                     types.TensorType]]:
        # Metric computation logic here.
        # Define value and update ops.
        value_op = compute_metric_value(...)
        update_op = create_update_op(... )
        return {self._metric_key: (value_op, update_op)}

   def populate_stats_and_pop(
       self, slice_key: slicer.SliceKeyType, combined_metrics: Dict[Text, Any],
       output_metrics: Dict[Text, metrics_pb2.MetricValue]) -> None:
       # Parses the metric and converts it into required metric format.
       metric_result = combined_metrics[self._metric_key]
       output_metrics[self._metric_key].double_value.value = metric_result

प्रयोग

# Custom metric callback
custom_metric_callback = my_metric(
    labels_key='label',
    target_prediction_keys=['prediction'])

fairness_indicators_callback =
   post_export_metrics.fairness_indicators(
        thresholds=[0.1, 0.3, 0.5, 0.7, 0.9], labels_key=label)

add_metrics_callbacks = [custom_metric_callback,
   fairness_indicators_callback]

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path=eval_saved_model_path,
    add_metrics_callbacks=add_metrics_callbacks)

eval_config = tfma.EvalConfig(...)

# Run evaluation
tfma.run_model_analysis(
    eval_config=eval_config, eval_shared_model=eval_shared_model)