Tensorflow मॉडल विश्लेषण मॉडल सत्यापन

अवलोकन

TFMA मूल्य थ्रेसहोल्ड और के आधार पर परिवर्तन थ्रेसहोल्ड की स्थापना करके एक मॉडल को मान्य करने का समर्थन समर्थित मैट्रिक्स

विन्यास

जेनेरिक वैल्यू थ्रेसहोल्ड

वैल्यू थ्रेशोल्ड उम्मीदवार मॉडल को गेट करने के लिए उपयोगी है, यह जाँच कर कि क्या संबंधित मेट्रिक्स निचले बाउंड से बड़ा है और / या ऊपरी बाउंड से छोटा है। उपयोगकर्ता एक या दोनों लोअर_बाउंड और अपर_बाउंड मान सेट कर सकता है। यदि सेट नहीं किया गया है तो निचला_बाउंड नकारात्मक अनंत के लिए डिफ़ॉल्ट है, और ऊपरी_बाउंड अनसेट होने पर अनंत तक डिफ़ॉल्ट है।

import tensorflow_model_analysis as tfma

lower_bound = tfma.GenericValueThreshold(lower_bound={'value':0})
upper_bound = tfma.GenericValueThreshold(upper_bound={'value':1})
lower_upper_bound = tfma.GenericValueThreshold(lower_bound={'value':0},
                                               upper_bound={'value':1))

जेनेरिक चेंज दहलीज

परिवर्तन थ्रेशोल्ड यह जाँच कर उम्मीदवार मॉडल को गेट करने के लिए उपयोगी है कि संबंधित मीट्रिक बेसलाइन मॉडल की तुलना में बड़ा/छोटा है या नहीं। परिवर्तन को मापने के दो तरीके हैं: पूर्ण परिवर्तन और सापेक्ष परिवर्तन। Aboslute परिवर्तन उम्मीदवार और आधारभूत मॉडल की मीट्रिक के बीच मूल्य diference के रूप में गणना की जाती है, अर्थात्, v_c - v_b जहां v_c को दर्शाता उम्मीदवार मीट्रिक मान और v_b आधारभूत मूल्य को दर्शाता है। सापेक्ष मूल्य उम्मीदवार के मीट्रिक और आधारभूत, अर्थात्, v_c / v_b के बीच सापेक्ष अंतर है। निरपेक्ष और सापेक्ष सीमा दोनों मानदंडों द्वारा गेट मॉडल में सह-अस्तित्व में हो सकती है। थ्रेशोल्ड मान सेट करने के अलावा, उपयोगकर्ता को मेट्रिकडायरेक्शन को भी कॉन्फ़िगर करने की आवश्यकता होती है। अनुकूल रूप से उच्च मूल्यों (जैसे, एयूसी) के साथ मेट्रिक्स के लिए, दिशा को HIGHER_IS_BETTER पर सेट करें, अनुकूल रूप से कम मान वाले मेट्रिक्स के लिए (जैसे, हानि), दिशा को LOWER_IS_BETTER पर सेट करें। परिवर्तन थ्रेशोल्ड के लिए उम्मीदवार मॉडल के साथ एक आधारभूत मॉडल का मूल्यांकन करने की आवश्यकता होती है। देखें आरंभ करने की मार्गदर्शिका एक उदाहरण के लिए।

import tensorflow_model_analysis as tfma

absolute_higher_is_better = tfma.GenericChangeThreshold(absolute={'value':1},
                                                        direction=tfma.MetricDirection.HIGHER_IS_BETTER)
absolute_lower_is_better = tfma.GenericChangeThreshold(absolute={'value':1},
                                                       direction=tfma.MetricDirection.LOWER_IS_BETTER)
relative_higher_is_better = tfma.GenericChangeThreshold(relative={'value':1},
                                                        direction=tfma.MetricDirection.HIGHER_IS_BETTER)
relative_lower_is_better = tfma.GenericChangeThreshold(relative={'value':1},
                                                       direction=tfma.MetricDirection.LOWER_IS_BETTER)
absolute_and_relative = tfma.GenericChangeThreshold(relative={'value':1},
                                                    absolute={'value':0.2},
                                                    direction=tfma.MetricDirection.LOWER_IS_BETTER)

चीजों को एक साथ रखना

निम्न उदाहरण मूल्य और परिवर्तन थ्रेसहोल्ड को जोड़ता है:

import tensorflow_model_analysis as tfma

lower_bound = tfma.GenericValueThreshold(lower_bound={'value':0.7})
relative_higher_is_better =
    tfma.GenericChangeThreshold(relative={'value':1.01},
                                direction=tfma.MetricDirection.HIGHER_IS_BETTER)
auc_threshold = tfma.MetricThreshold(value_threshold=lower_bound,
                                     change_threshold=relative_higher_is_better)

कॉन्फ़िगरेशन को प्रोटो प्रारूप में लिखना अधिक पठनीय हो सकता है:

from google.protobuf import text_format

auc_threshold = text_format.Parse("""
  value_threshold { lower_bound { value: 0.6 } }
  change_threshold { relative { value: 1.01 } }
""", tfma.MetricThreshold())

मेट्रिक थ्रेशोल्ड को मॉडल ट्रेनिंग टाइम मेट्रिक्स (या तो EvalSavedModel या Keras सेव्ड मॉडल) और पोस्ट ट्रेनिंग मेट्रिक्स (TFMA कॉन्फिगरेशन में परिभाषित) दोनों पर गेट पर सेट किया जा सकता है। प्रशिक्षण समय मेट्रिक्स के लिए, थ्रेशोल्ड को tfma.MetricsSpec में निर्दिष्ट किया गया है:

metrics_spec = tfma.MetricSpec(thresholds={'auc': auc_threshold})

प्रशिक्षण के बाद के मेट्रिक्स के लिए, थ्रेशोल्ड को सीधे tfma.MetricConfig में परिभाषित किया गया है:

metric_config = tfma.MetricConfig(class_name='TotalWeightedExample',
                                  threshold=lower_bound)

यहाँ EvalConfig में अन्य सेटिंग्स के साथ एक उदाहरण दिया गया है:

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  metrics_spec {
    # Training Time metric thresholds
    thresholds {
      key: "auc"
      value: {
        value_threshold {
          lower_bound { value: 0.7 }
        }
        change_threshold {
          direction: HIGHER_IS_BETTER
          absolute { value: -1e-10 }
        }
      }
    }
    # Post Training metrics and their thesholds.
    metrics {
      # This assumes a binary classification model.
      class_name: "AUC"
      threshold {
        value_threshold {
          lower_bound { value: 0 }
        }
      }
    }
  }
  slicing_specs {}
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_models = [
  tfma.default_eval_shared_model(
      model_name=tfma.CANDIDATE_KEY,
      eval_saved_model_path='/path/to/saved/candiate/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")

tfma.view.render_slicing_metrics(eval_result)
tfma.load_validation_result(output_path)

उत्पादन

मूल्यांकनकर्ता द्वारा मेट्रिक्स फ़ाइल आउटपुट के अलावा, जब सत्यापन का उपयोग किया जाता है, तो एक अतिरिक्त "सत्यापन" फ़ाइल भी आउटपुट होती है। पेलोड स्वरूप है ValidationResult । जब कोई विफलता न हो तो आउटपुट में "validation_ok" True पर सेट होगा। जब विफलताएं होती हैं, तो संबंधित मीट्रिक, थ्रेसहोल्ड और देखे गए मीट्रिक मानों के बारे में जानकारी प्रदान की जाती है। निम्नलिखित एक उदाहरण है जहां "वेटेड_एक्समले_काउंट" एक मान सीमा को विफल कर रहा है (1.5 1.0 से छोटा नहीं है, इस प्रकार विफलता):

  validation_ok: False
  metric_validations_per_slice {
    failures {
      metric_key {
        name: "weighted_example_count"
        model_name: "candidate"
      }
      metric_threshold {
        value_threshold {
          upper_bound { value: 1.0 }
        }
      }
      metric_value {
        double_value { value: 1.5 }
      }
    }
  }