Tensorflow मॉडल विश्लेषण अक्सर पूछे जाने वाले प्रश्न

सामान्य

क्या एक EvalSavedModel अभी भी आवश्यक है?

पहले TFMA को एक विशेष EvalSavedModel का उपयोग करके सभी मेट्रिक्स को टेंसरफ़्लो ग्राफ़ में संग्रहीत करने की आवश्यकता होती थी। अब, बीम का उपयोग करके TF ग्राफ के बाहर मैट्रिक्स की गणना की जा सकती है। beam.CombineFn कार्यान्वयन।

कुछ मुख्य अंतर हैं:

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

क्या TFMA इन-ग्राफ मेट्रिक्स और बाहरी मेट्रिक्स दोनों के साथ काम कर सकता है?

TFMA एक हाइब्रिड दृष्टिकोण का उपयोग करने की अनुमति देता है जहां कुछ मेट्रिक्स की गणना ग्राफ में की जा सकती है जबकि अन्य की गणना बाहर की जा सकती है। यदि आपके पास वर्तमान में EvalSavedModel है तो आप इसका उपयोग जारी रख सकते हैं।

दो मामले हैं:

  1. सुविधा निष्कर्षण और मीट्रिक गणना दोनों के लिए TFMA EvalSavedModel का उपयोग करें, लेकिन अतिरिक्त संयोजक-आधारित मीट्रिक भी जोड़ें। इस मामले में आपको EvalSavedModel से सभी इन-ग्राफ मेट्रिक्स के साथ-साथ EvalSavedModel -आधारित से कोई भी अतिरिक्त मेट्रिक्स प्राप्त होंगे जो पहले समर्थित नहीं हो सकते थे।
  2. सुविधा/पूर्वानुमान निष्कर्षण के लिए TFMA EvalSavedModel का उपयोग करें, लेकिन सभी मीट्रिक गणनाओं के लिए संयोजन-आधारित मीट्रिक का उपयोग करें। यह मोड तब उपयोगी होता है जब EvalSavedModel में फीचर ट्रांसफॉर्मेशन मौजूद होते हैं जिनका उपयोग आप स्लाइसिंग के लिए करना चाहते हैं, लेकिन ग्राफ़ के बाहर सभी मेट्रिक कंप्यूटेशंस करना पसंद करते हैं।

स्थापित करना

कौन से मॉडल प्रकार समर्थित हैं?

TFMA keras मॉडल, जेनेरिक TF2 हस्ताक्षर API पर आधारित मॉडल, साथ ही TF अनुमानक आधारित मॉडल का समर्थन करता है (हालाँकि उपयोग के मामले के आधार पर अनुमानक आधारित मॉडल को उपयोग करने के लिए EvalSavedModel की आवश्यकता हो सकती है)।

समर्थित मॉडल प्रकारों और किसी भी प्रतिबंध की पूरी सूची के लिए get_started मार्गदर्शिका देखें।

मैं एक देशी केरस आधारित मॉडल के साथ काम करने के लिए टीएफएमए कैसे स्थापित करूं?

निम्नलिखित मान्यताओं के आधार पर केरस मॉडल के लिए एक उदाहरण विन्यास निम्नलिखित है:

  • सहेजा गया मॉडल सेवा के लिए है और हस्ताक्षर नाम serving_default का उपयोग करता है (इसे model_specs[0].signature_name का उपयोग करके बदला जा सकता है)।
  • model.compile(...) से निर्मित मेट्रिक्स का मूल्यांकन किया जाना चाहिए (इसे tfma.EvalConfig के भीतर options.include_default_metric के माध्यम से अक्षम किया जा सकता है)।
from google.protobuf import text_format

config = text_format.Parse("""
  model_specs {
    label_key: "<label-key>"
    example_weight_key: "<example-weight-key>"
  }
  metrics_specs {
    # Add metrics here. For example:
    #  metrics { class_name: "ConfusionMatrixPlot" }
    #  metrics { class_name: "CalibrationPlot" }
  }
  slicing_specs {}
""", tfma.EvalConfig())

कॉन्फ़िगर किए जा सकने वाले अन्य प्रकार के मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें.

मैं एक सामान्य TF2 हस्ताक्षर आधारित मॉडल के साथ काम करने के लिए TFMA को कैसे सेटअप करूं?

निम्नलिखित सामान्य TF2 मॉडल के लिए एक उदाहरण विन्यास है। नीचे, signature_name विशिष्ट हस्ताक्षर का नाम है जिसका मूल्यांकन के लिए उपयोग किया जाना चाहिए।

from google.protobuf import text_format

config = text_format.Parse("""
  model_specs {
    signature_name: "<signature-name>"
    label_key: "<label-key>"
    example_weight_key: "<example-weight-key>"
  }
  metrics_specs {
    # Add metrics here. For example:
    #  metrics { class_name: "BinaryCrossentropy" }
    #  metrics { class_name: "ConfusionMatrixPlot" }
    #  metrics { class_name: "CalibrationPlot" }
  }
  slicing_specs {}
""", tfma.EvalConfig())

कॉन्फ़िगर किए जा सकने वाले अन्य प्रकार के मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें.

मैं एक अनुमानक आधारित मॉडल के साथ काम करने के लिए टीएफएमए कैसे स्थापित करूं?

इस मामले में तीन विकल्प हैं।

Option1: सर्विंग मॉडल का उपयोग करें

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

निम्नलिखित एक उदाहरण कॉन्फिग है जो यह मानता है कि serving_default का उपयोग किया गया हस्ताक्षर नाम है:

from google.protobuf import text_format

config = text_format.Parse("""
  model_specs {
    label_key: "<label-key>"
    example_weight_key: "<example-weight-key>"
  }
  metrics_specs {
    # Add metrics here.
  }
  slicing_specs {}
""", tfma.EvalConfig())

कॉन्फ़िगर किए जा सकने वाले अन्य प्रकार के मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें.

Option2: अतिरिक्त संयोजक-आधारित मेट्रिक्स के साथ EvalSavedModel का उपयोग करें

इस मामले में, सुविधा/पूर्वानुमान निष्कर्षण और मूल्यांकन दोनों के लिए EvalSavedModel का उपयोग करें और अतिरिक्त संयोजक आधारित मीट्रिक भी जोड़ें।

निम्नलिखित एक उदाहरण विन्यास है:

from google.protobuf import text_format

config = text_format.Parse("""
  model_specs {
    signature_name: "eval"
  }
  metrics_specs {
    # Add metrics here.
  }
  slicing_specs {}
""", tfma.EvalConfig())

अन्य प्रकार के मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें जिन्हें कॉन्फ़िगर किया जा सकता है और EvalSavedModel को स्थापित करने के बारे में अधिक जानकारी के लिए EvalSavedModel देखें।

Option3: केवल फ़ीचर / प्रेडिक्शन एक्सट्रैक्शन के लिए EvalSavedModel मॉडल का उपयोग करें

विकल्प (2) के समान, लेकिन सुविधा/पूर्वानुमान निष्कर्षण के लिए केवल EvalSavedModel का उपयोग करें। यह विकल्प तब उपयोगी होता है जब केवल बाहरी मेट्रिक्स वांछित हों, लेकिन ऐसे फीचर ट्रांसफॉर्मेशन हैं जिन्हें आप स्लाइस करना चाहते हैं। विकल्प (1) के समान, प्रशिक्षण के दौरान जोड़े गए किसी भी मीट्रिक को मूल्यांकन में शामिल नहीं किया जाएगा।

इस मामले में कॉन्फ़िगरेशन ऊपर जैसा ही है केवल include_default_metrics अक्षम है।

from google.protobuf import text_format

config = text_format.Parse("""
  model_specs {
    signature_name: "eval"
  }
  metrics_specs {
    # Add metrics here.
  }
  slicing_specs {}
  options {
    include_default_metrics { value: false }
  }
""", tfma.EvalConfig())

अन्य प्रकार के मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें जिन्हें कॉन्फ़िगर किया जा सकता है और EvalSavedModel को स्थापित करने के बारे में अधिक जानकारी के लिए EvalSavedModel देखें।

केरस मॉडल-से-अनुमानक आधारित मॉडल के साथ काम करने के लिए मैं TFMA को कैसे सेटअप करूं?

keras model_to_estimator सेटअप अनुमानक विन्यास के समान है। हालांकि अनुमानक के लिए मॉडल कैसे काम करता है, इसके लिए विशिष्ट कुछ अंतर हैं। विशेष रूप से, मॉडल-से-एसिमटेटर अपने आउटपुट को एक ताना के रूप में लौटाता है जहां ताना कुंजी संबंधित केरस मॉडल में अंतिम आउटपुट परत का नाम है (यदि कोई नाम प्रदान नहीं किया गया है, तो केरस आपके लिए एक डिफ़ॉल्ट नाम चुनेंगे जैसे कि dense_1 या output_1 )। TFMA के दृष्टिकोण से, यह व्यवहार बहु-आउटपुट मॉडल के लिए आउटपुट के समान है, भले ही मॉडल टू एस्टीमेटर केवल एक मॉडल के लिए हो। इस अंतर को ध्यान में रखने के लिए, आउटपुट नाम सेट करने के लिए एक अतिरिक्त चरण की आवश्यकता होती है। हालांकि, वही तीन विकल्प अनुमानक के रूप में लागू होते हैं।

निम्नलिखित एक अनुमानक आधारित विन्यास के लिए आवश्यक परिवर्तनों का एक उदाहरण है:

from google.protobuf import text_format

config = text_format.Parse("""
  ... as for estimator ...
  metrics_specs {
    output_names: ["<keras-output-layer>"]
    # Add metrics here.
  }
  ... as for estimator ...
""", tfma.EvalConfig())

मैं पूर्व-परिकलित (यानी मॉडल-अज्ञेयवादी) भविष्यवाणियों के साथ काम करने के लिए TFMA को कैसे सेटअप करूं? ( TFRecord और tf.Example )

पूर्व-परिकलित पूर्वानुमानों के साथ काम करने के लिए TFMA को कॉन्फ़िगर करने के लिए, डिफ़ॉल्ट tfma.PredictExtractor को अक्षम किया जाना चाहिए और tfma.InputExtractor को अन्य इनपुट सुविधाओं के साथ भविष्यवाणियों को पार्स करने के लिए कॉन्फ़िगर किया जाना चाहिए। यह tfma.ModelSpec को लेबल और वज़न के साथ भविष्यवाणियों के लिए उपयोग की जाने वाली सुविधा कुंजी के नाम से कॉन्फ़िगर करके पूरा किया जाता है।

निम्नलिखित एक उदाहरण सेटअप है:

from google.protobuf import text_format

config = text_format.Parse("""
  model_specs {
    prediction_key: "<prediction-key>"
    label_key: "<label-key>"
    example_weight_key: "<example-weight-key>"
  }
  metrics_specs {
    # Add metrics here.
  }
  slicing_specs {}
""", tfma.EvalConfig())

कॉन्फ़िगर की जा सकने वाली मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें.

ध्यान दें कि पूरी तरह से एक tfma.ModelSpec कॉन्फ़िगर किया जा रहा है एक मॉडल वास्तव में उपयोग नहीं किया जा रहा है (यानी कोई tfma.EvalSharedModel नहीं है)। मॉडल विश्लेषण चलाने के लिए कॉल निम्नानुसार दिख सकता है:

eval_result = tfma.run_model_analysis(
    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/metrics_for_slice_proto")

मैं पूर्व-परिकलित (यानी मॉडल-अज्ञेयवादी) भविष्यवाणियों के साथ काम करने के लिए TFMA को कैसे सेटअप करूं? ( pd.DataFrame )

स्मृति में फ़िट हो सकने वाले छोटे डेटासेट के लिए, TFRecord का एक विकल्प pandas.DataFrame s है। TFMA tfma.analyze_raw_data API का उपयोग करके pandas.DataFrame s पर कार्य कर सकता है। tfma.MetricsSpec और tfma.SlicingSpec की व्याख्या के लिए, सेटअप मार्गदर्शिका देखें। कॉन्फ़िगर की जा सकने वाली मीट्रिक के बारे में अधिक जानकारी के लिए मीट्रिक देखें.

निम्नलिखित एक उदाहरण सेटअप है:

# Run in a Jupyter Notebook.

df_data = ...  # your pd.DataFrame

eval_config = text_format.Parse("""
  model_specs {
    label_key: 'label'
    prediction_key: 'prediction'
  }
  metrics_specs {
    metrics { class_name: "AUC" }
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  slicing_specs {}
  slicing_specs {
    feature_keys: 'language'
  }
""", config.EvalConfig())

eval_result = tfma.analyze_raw_data(df_data, eval_config)

tfma.view.render_slicing_metrics(eval_result)

मैट्रिक्स

किस प्रकार के मीट्रिक समर्थित हैं?

TFMA सहित कई प्रकार के मेट्रिक्स का समर्थन करता है:

क्या बहु-आउटपुट मॉडल के मेट्रिक्स समर्थित हैं?

हाँ। अधिक विवरण के लिए मेट्रिक्स मार्गदर्शिका देखें।

क्या बहु-मॉडल के मेट्रिक्स समर्थित हैं?

हाँ। अधिक विवरण के लिए मेट्रिक्स मार्गदर्शिका देखें।

क्या मीट्रिक सेटिंग (नाम, आदि) को अनुकूलित किया जा सकता है?

हाँ। मीट्रिक कॉन्फ़िगरेशन में config सेटिंग्स जोड़कर मीट्रिक सेटिंग्स को अनुकूलित किया जा सकता है (उदाहरण के लिए विशिष्ट थ्रेशोल्ड सेट करना, आदि)। देखें मीट्रिक मार्गदर्शिका में अधिक विवरण हैं.

क्या कस्टम मेट्रिक्स समर्थित हैं?

हाँ। या तो एक कस्टम tf.keras.metrics.Metric कार्यान्वयन लिखकर या एक कस्टम बीम लिखकर। beam.CombineFn कार्यान्वयन। मेट्रिक्स गाइड में अधिक विवरण हैं।

किस प्रकार के मीट्रिक समर्थित नहीं हैं?

जब तक आपके मीट्रिक की गणना बीम. beam.CombineFn का उपयोग करके की जा सकती है, तब तक tfma.metrics.Metric के आधार पर गणना की जा सकने वाली मीट्रिक के प्रकारों पर कोई प्रतिबंध नहीं है। यदि tf.keras.metrics.Metric से प्राप्त मीट्रिक के साथ काम कर रहे हैं तो निम्न मानदंड पूरे होने चाहिए:

  • प्रत्येक उदाहरण पर मीट्रिक के लिए स्वतंत्र रूप से पर्याप्त आँकड़ों की गणना करना संभव होना चाहिए, फिर इन पर्याप्त आँकड़ों को सभी उदाहरणों में जोड़कर संयोजित करें, और केवल इन पर्याप्त आँकड़ों से मीट्रिक मान निर्धारित करें।
  • उदाहरण के लिए, सटीकता के लिए पर्याप्त आंकड़े "कुल सही" और "कुल उदाहरण" हैं। अलग-अलग उदाहरणों के लिए इन दो संख्याओं की गणना करना संभव है, और उन उदाहरणों के लिए सही मान प्राप्त करने के लिए उन्हें उदाहरणों के समूह के लिए जोड़ना संभव है। अंतिम सटीकता की गणना "कुल सही / कुल उदाहरण" का उपयोग करके की जा सकती है।

ऐड-ऑन

क्या मैं अपने मॉडल में निष्पक्षता या पूर्वाग्रह का मूल्यांकन करने के लिए TFMA का उपयोग कर सकता हूं?

TFMA में एक फेयरनेसइंडिकेटर ऐड-ऑन शामिल है जो वर्गीकरण मॉडल में अनपेक्षित पूर्वाग्रह के प्रभावों का मूल्यांकन करने के लिए निर्यात-पश्चात मेट्रिक्स प्रदान करता है।

अनुकूलन

क्या होगा अगर मुझे और अनुकूलन की आवश्यकता है?

TFMA बहुत लचीला है और आपको कस्टम Extractors , Evaluators , और/या Writers का उपयोग करके पाइपलाइन के लगभग सभी भागों को अनुकूलित करने की अनुमति देता है। आर्किटेक्चर दस्तावेज़ में इन अबास्ट्रक्शन पर अधिक विस्तार से चर्चा की गई है।

समस्या निवारण, डिबगिंग और सहायता प्राप्त करना

क्यों नहीं MultiClassConfusionMatrix मेट्रिक्स binarized ConfusionMatrix मेट्रिक्स से मेल खाते हैं

ये वास्तव में अलग-अलग गणनाएं हैं। Binarization प्रत्येक वर्ग आईडी के लिए स्वतंत्र रूप से तुलना करता है (अर्थात प्रत्येक वर्ग के लिए भविष्यवाणी की तुलना प्रदान की गई थ्रेसहोल्ड के विरुद्ध अलग से की जाती है)। इस मामले में दो या दो से अधिक वर्गों के लिए यह संभव है कि सभी संकेत दें कि वे भविष्यवाणी से मेल खाते हैं क्योंकि उनका अनुमानित मूल्य थ्रेशोल्ड से अधिक था (यह कम थ्रेसहोल्ड पर और भी अधिक स्पष्ट होगा)। मल्टीक्लास कन्फ्यूजन मैट्रिक्स के मामले में, अभी भी केवल एक वास्तविक अनुमानित मूल्य है और यह या तो वास्तविक मूल्य से मेल खाता है या नहीं। थ्रेसहोल्ड का उपयोग केवल भविष्यवाणी को किसी भी वर्ग से मेल खाने के लिए मजबूर करने के लिए किया जाता है यदि यह थ्रेसहोल्ड से कम है। थ्रेशोल्ड जितना अधिक होगा, एक द्विअर्थी वर्ग की भविष्यवाणी के मिलान के लिए उतना ही कठिन होगा। इसी तरह थ्रेशोल्ड जितना कम होगा, एक द्विअर्थी वर्ग की भविष्यवाणियों का मिलान करना उतना ही आसान होगा। इसका मतलब है कि थ्रेशोल्ड> 0.5 पर द्विपदीय मान और मल्टीक्लास मैट्रिक्स मान करीब संरेखित होंगे और थ्रेसहोल्ड <0.5 पर वे दूर होंगे।

उदाहरण के लिए, मान लें कि हमारे पास 10 कक्षाएं हैं जहां कक्षा 2 की भविष्यवाणी 0.8 की संभावना के साथ की गई थी, लेकिन वास्तविक वर्ग कक्षा 1 थी जिसकी संभावना 0.15 थी। यदि आप कक्षा 1 पर द्विअर्थीकरण करते हैं और 0.1 की सीमा का उपयोग करते हैं, तो कक्षा 1 को सही (0.15> 0.1) माना जाएगा, इसलिए इसे एक टीपी के रूप में गिना जाएगा, हालांकि, बहुवर्गीय मामले के लिए, कक्षा 2 को सही माना जाएगा (0.8 > 0.1) और चूंकि कक्षा 1 वास्तविक थी, इसलिए इसे FN के रूप में गिना जाएगा। क्योंकि कम थ्रेसहोल्ड पर अधिक मूल्यों को सकारात्मक माना जाएगा, सामान्य तौर पर बहुवर्गीय भ्रम मैट्रिक्स की तुलना में द्विपदीय भ्रम मैट्रिक्स के लिए उच्च टीपी और एफपी मायने रखता है, और इसी तरह कम टीएन और एफएन।

निम्नलिखित MultiClassConfusionMatrixAtThresholds और किसी एक वर्ग के द्विअर्थीकरण से संबंधित गणनाओं के बीच देखे गए अंतरों का एक उदाहरण है।

MultiClassConfusionMatrixAtThresholds बनाम Binarized

मेरे सटीक@1 और रिकॉल@1 मीट्रिक का मान समान क्यों है?

1 परिशुद्धता और रिकॉल के शीर्ष k मान पर एक ही बात है। प्रेसिजन TP / (TP + FP) के बराबर है और रिकॉल TP / (TP + FN) के बराबर है। शीर्ष पूर्वानुमान हमेशा सकारात्मक होता है और लेबल से मेल खाएगा या नहीं। दूसरे शब्दों में, N उदाहरणों के साथ, TP + FP = N । हालाँकि, यदि लेबल शीर्ष भविष्यवाणी से मेल नहीं खाता है, तो इसका मतलब यह भी है कि एक गैर-शीर्ष k भविष्यवाणी का मिलान किया गया था और शीर्ष k को 1 पर सेट करने के साथ, सभी गैर-शीर्ष 1 भविष्यवाणियां 0 होंगी। इसका अर्थ है कि FN होना चाहिए (N - TP) या N = TP + FN । अंतिम परिणाम precision@1 = TP / N = recall@1 है। ध्यान दें कि यह केवल तभी लागू होता है जब प्रति उदाहरण एक ही लेबल होता है, बहु-लेबल के लिए नहीं।

मेरे माध्य_लेबल और माध्य_पूर्वानुमान मीट्रिक हमेशा 0.5 क्यों होते हैं?

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

eval_config = text_format.Parse("""
  ...
  metrics_specs {
    binarize { class_ids: { values: [0] } }
    metrics { class_name: "MeanLabel" }
    metrics { class_name: "MeanPrediction" }
    ...
  }
  ...
""", config.EvalConfig())

MultiLabelConfusionMatrixPlot की व्याख्या कैसे करें?

किसी विशेष लेबल को देखते हुए, MultiLabelConfusionMatrixPlot (और संबद्ध MultiLabelConfusionMatrix ) का उपयोग अन्य लेबलों के परिणामों और उनकी भविष्यवाणियों की तुलना करने के लिए किया जा सकता है जब चुना गया लेबल वास्तव में सही था। उदाहरण के लिए, मान लें कि हमारे पास bird , plane और superman के तीन वर्ग हैं और हम यह दर्शाने के लिए चित्रों को वर्गीकृत कर रहे हैं कि उनमें इनमें से कोई एक या अधिक वर्ग हैं या नहीं। MultiLabelConfusionMatrix प्रत्येक वास्तविक वर्ग के कार्टेशियन उत्पाद को एक दूसरे वर्ग (जिसे अनुमानित वर्ग कहा जाता है) के विरुद्ध गणना करेगा। ध्यान दें कि जबकि जोड़ी (actual, predicted) है, predicted वर्ग आवश्यक रूप से सकारात्मक भविष्यवाणी नहीं करता है, यह केवल वास्तविक बनाम अनुमानित मैट्रिक्स में अनुमानित कॉलम का प्रतिनिधित्व करता है। उदाहरण के लिए, मान लें कि हमने निम्नलिखित मैट्रिक्स की गणना की है:

   (bird, bird)         ->    { tp: 6, fp: 0, fn: 2, tn: 0}
   (bird, plane)        ->    { tp: 2, fp: 2, fn: 2, tn: 2}
   (bird, superman)     ->    { tp: 1, fp: 1, fn: 4, tn: 2}
   (plane, bird)        ->    { tp: 3, fp: 1, fn: 1, tn: 3}
   (plane, plane)       ->    { tp: 4, fp: 0, fn: 4, tn: 0}
   (plane, superman)    ->    { tp: 1, fp: 3, fn: 3, tn: 1}
   (superman, bird)     ->    { tp: 3, fp: 2, fn: 2, tn: 2}
   (superman, plane)    ->    { tp: 2, fp: 3, fn: 2, tn: 2}
   (superman, superman) ->    { tp: 4, fp: 0, fn: 5, tn: 0}

   num_examples: 20

MultiLabelConfusionMatrixPlot में इस डेटा को प्रदर्शित करने के तीन तरीके हैं। सभी मामलों में तालिका को पढ़ने का तरीका वास्तविक वर्ग के दृष्टिकोण से पंक्ति दर पंक्ति है।

1) कुल भविष्यवाणी गणना

इस मामले में, दी गई पंक्ति (अर्थात वास्तविक वर्ग) के लिए अन्य वर्गों के लिए TP + FP क्या मायने रखता है। उपरोक्त गणनाओं के लिए, हमारा प्रदर्शन इस प्रकार होगा:

अनुमानित पक्षी अनुमानित विमान प्रेडिक्टेड सुपरमैन
वास्तविक पक्षी 6 4 2
वास्तविक विमान 4 4 4
वास्तविक सुपरमैन 5 5 4

जब तस्वीरों में वास्तव में एक bird था तो हमने उनमें से 6 की सही भविष्यवाणी की। साथ ही हमने plane (या तो सही या गलत) 4 बार और superman (या तो सही या गलत) 2 बार भविष्यवाणी की।

2) गलत भविष्यवाणी गणना

इस मामले में, किसी दी गई पंक्ति (अर्थात वास्तविक वर्ग) के लिए अन्य वर्गों के लिए FP क्या मायने रखता है। उपरोक्त गणनाओं के लिए, हमारा प्रदर्शन इस प्रकार होगा:

अनुमानित पक्षी अनुमानित विमान प्रेडिक्टेड सुपरमैन
वास्तविक पक्षी 0 2 1
वास्तविक विमान 1 0 3
वास्तविक सुपरमैन 2 3 0

जब तस्वीरों में वास्तव में एक bird होता है तो हमने plane की 2 बार और superman की 1 बार गलत भविष्यवाणी की।

3) झूठी नकारात्मक गणना

इस मामले में, किसी दी गई पंक्ति (अर्थात वास्तविक वर्ग) के लिए अन्य वर्गों के लिए FN क्या मायने रखता है। उपरोक्त गणनाओं के लिए, हमारा प्रदर्शन इस प्रकार होगा:

अनुमानित पक्षी अनुमानित विमान प्रेडिक्टेड सुपरमैन
वास्तविक पक्षी 2 2 4
वास्तविक विमान 1 4 3
वास्तविक सुपरमैन 2 2 5

जब तस्वीरों में वास्तव में एक bird था तो हम 2 बार इसकी भविष्यवाणी करने में विफल रहे। वहीं, हम 2 बार plane और 4 बार superman की भविष्यवाणी करने में विफल रहे।

मुझे भविष्यवाणी कुंजी नहीं मिलने के बारे में त्रुटि क्यों मिलती है?

कुछ मॉडल एक शब्दकोश के रूप में अपनी भविष्यवाणी का उत्पादन करते हैं। उदाहरण के लिए, बाइनरी वर्गीकरण समस्या के लिए एक TF अनुमानक probabilities , class_ids , आदि वाले शब्दकोश को आउटपुट करता है। ज्यादातर मामलों में TFMA में सामान्य रूप से उपयोग किए जाने वाले प्रमुख नाम जैसे कि predictions , probabilities , आदि खोजने के लिए चूक होती है। हालाँकि, यदि आपका मॉडल बहुत अनुकूलित है तो यह हो सकता है TFMA द्वारा ज्ञात नहीं नामों के तहत आउटपुट कुंजियाँ। शोध के मामलों में एक prediciton_key सेटिंग को tfma.ModelSpec में जोड़ा जाना चाहिए ताकि उस कुंजी के नाम की पहचान की जा सके जिसके तहत आउटपुट संग्रहीत है।