Tensorflow মডেল বিশ্লেষণ মেট্রিক্স এবং প্লট

ওভারভিউ

TFMA নিম্নলিখিত মেট্রিক এবং প্লট সমর্থন করে:

  • স্ট্যান্ডার্ড মেট্রিক্স (keras tf.keras.metrics.* )
    • মনে রাখবেন কেরাস মেট্রিক্স ব্যবহার করার জন্য আপনার কেরাস মডেলের প্রয়োজন নেই। মেট্রিক্স সরাসরি মেট্রিক্স ক্লাস ব্যবহার করে বিমে গ্রাফের বাইরে গণনা করা হয়।
  • স্ট্যান্ডার্ড TFMA মেট্রিক্স এবং প্লট ( tfma.metrics.* )

  • কাস্টম keras মেট্রিক্স (থেকে প্রাপ্ত মেট্রিক্স tf.keras.metrics.Metric )

  • কাস্টম TFMA মেট্রিক্স (থেকে প্রাপ্ত মেট্রিক্স tfma.metrics.Metric কাস্টম মরীচি combiners বা অন্যান্য বৈশিষ্ট্যের মান থেকে প্রাপ্ত মেট্রিক্স) ব্যবহার করে)।

TFMA মাল্টি-ক্লাস/মাল্টি-লেবেল সমস্যার সাথে ব্যবহারের জন্য বাইনারি শ্রেণীবিভাগের মেট্রিক্স রূপান্তর করার জন্য অন্তর্নির্মিত সমর্থন প্রদান করে:

  • ক্লাস আইডি, টপ কে, ইত্যাদির উপর ভিত্তি করে বাইনারিকরণ।
  • মাইক্রো গড়, ম্যাক্রো গড়, ইত্যাদির উপর ভিত্তি করে একত্রিত মেট্রিক্স।

TFMA ক্যোয়ারী/র‍্যাঙ্কিং ভিত্তিক মেট্রিকগুলির জন্য অন্তর্নির্মিত সমর্থনও প্রদান করে যেখানে উদাহরণগুলি পাইপলাইনে স্বয়ংক্রিয়ভাবে একটি ক্যোয়ারী কী দ্বারা গোষ্ঠীভুক্ত হয়।

রিগ্রেশন, বাইনারি শ্রেণীবিভাগ, মাল্টি-ক্লাস/মাল্টি-লেবেল শ্রেণীবিভাগ, র‌্যাঙ্কিং ইত্যাদি সহ বিভিন্ন সমস্যার জন্য 50+ এর বেশি স্ট্যান্ডার্ড মেট্রিক্স এবং প্লট পাওয়া যায়।

কনফিগারেশন

(1) ব্যবহার আছে: TFMA কনফিগার মেট্রিক্স করার দুটি উপায় আছে 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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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 প্রতি, ইত্যাদি ব্যবহার প্রতি ক্লাসে মেট্রিক্স উত্পাদন করতে binarized যাবে 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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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

এই একই সেটআপ নিম্নলিখিত পাইথন কোড ব্যবহার করে তৈরি করা যেতে পারে:

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 এপিআই এছাড়াও মডেল নাম ক্ষণস্থায়ী সমর্থন করে:

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

মডেল তুলনা মেট্রিক্স

TFMA একটি বেসলাইন মডেলের বিপরীতে প্রার্থী মডেলের তুলনা মেট্রিক্স মূল্যায়ন সমর্থন করে। প্রার্থী এবং বেসলাইন মডেল পেয়ার সেটআপ করার একটি সহজ উপায় হল সঠিক মডেল নাম (tfma.BASELINE_KEY এবং tfma.CANDIDATE_KEY) সহ একটি eval_shared_model বরাবর পাস করা:


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 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 এপিআই এছাড়াও আউটপুট নাম ক্ষণস্থায়ী সমর্থন করে:

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 - একটি মোড়কের জন্য একটি ডবল প্রকার।
  • bytes_value - একটি মান বাইট।
  • bounded_value - একটি বাস্তব মান যা pointwise অনুমান হতে পারে, ঐচ্ছিকরূপে কিছু বাছাই আনুমানিক সীমা সঙ্গে প্রতিনিধিত্ব করে। বৈশিষ্ট্য আছে value , lower_bound এবং upper_bound
  • value_at_cutoffs - cutoffs এ মূল্য (যেমন স্পষ্টতা @ কে, রিকল @ কে)। সম্পত্তি হয়েছে values , প্রতিটি যা বৈশিষ্ট্য আছে cutoff এবং value
  • confusion_matrix_at_thresholds - প্রান্তিক মান এ গুলিয়ে ফেলা ম্যাট্রিক্স। সম্পত্তি হয়েছে matrices , যা প্রতিটি বৈশিষ্ট্য আছে threshold , precision , recall যেমন, এবং বিভ্রান্তির ম্যাট্রিক্স মান false_negatives
  • array_value - মেট্রিক্স যা মূল্যবোধের একটি অ্যারের ফেরত পাঠানোর জন্য।

প্লট কী

PlotKeys ছাড়া ঐতিহাসিক কারণে সব প্লট মান একটি একক প্রোটো সঞ্চিত হয়, তাই চক্রান্ত কী নাম নেই মেট্রিক কী একই রকম।

প্লট মান

সমস্ত সমর্থিত প্লট একটি একক প্রোটো নামক সংরক্ষণ করা হয় PlotData

ইভাল রেজাল্ট

পরীক্ষা নিরীক্ষার রান থেকে ফেরত একটি হল tfma.EvalResult । এই রেকর্ড রয়েছে slicing_metrics করে একটি মাল্টি লেভেল অভি যেখানে মাত্রা যথাক্রমে আউটপুট নাম, শ্রেণী আইডি, মেট্রিক নাম, এবং মেট্রিক মান মিলা যেমন মেট্রিক কী সঙ্কেতাক্ষরে লিখা। এটি একটি জুপিটার নোটবুকে UI প্রদর্শনের জন্য ব্যবহার করার উদ্দেশ্যে। তাহলে অন্তর্নিহিত তথ্য প্রয়োজন হয় অ্যাক্সেস metrics ফলে ফাইল পরিবর্তে ব্যবহার করা উচিত (দেখুন metrics_for_slice.proto )।

কাস্টমাইজেশন

কাস্টম মেট্রিক্স ছাড়াও যেগুলি একটি সংরক্ষিত কেরাস (বা লিগ্যাসি EvalSavedModel) এর অংশ হিসাবে যোগ করা হয়। TFMA পোস্ট সেভিং-এ মেট্রিক্স কাস্টমাইজ করার দুটি উপায় রয়েছে: (1) একটি কাস্টম কেরাস মেট্রিক ক্লাস সংজ্ঞায়িত করে এবং (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 তৈরি করতে হলে, ব্যবহারকারীদের প্রসারিত করতে প্রয়োজন tf.keras.metrics.Metric তাদের বাস্তবায়ন এবং তারপর নিশ্চিত মেট্রিক এর মডিউল মূল্যায়ন সময় পাওয়া যাবে না।

লক্ষ্য করুন সংরক্ষণ করুন পোস্টে মডেল যোগ মেট্রিক্স জন্য, TFMA শুধুমাত্র মেট্রিক্স সেই লেবেল নেওয়া সমর্থন (অর্থাত y_true), ভবিষ্যদ্বাণী (y_pred), এবং উদাহরণ ওজন (sample_weight) এর প্যারামিটার হিসেবে update_state পদ্ধতি।

কেরাস মেট্রিক উদাহরণ

নিম্নলিখিত একটি কাস্টম কেরাস মেট্রিকের একটি উদাহরণ:

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 বাস্তবায়ন kwargs যে কম্পিউটেশন (সম্ভবত একাধিক) মেট্রিক্স মান calcuate করা প্রয়োজন তৈরি করার জন্য একটি ফাংশন সহ বৈশিষ্ট্যের মান কনফিগারেশন নির্ধারণ একটি সেট আপ তৈরি করা হয়। আছে: দুটি প্রধান গণনার ধরনের ব্যবহার করা সম্ভব হয় tfma.metrics.MetricComputation এবং tfma.metrics.DerivedMetricComputation নিচে বিভাগে বর্ণনা করা হয় যে। যে ফাংশনটি এই গণনাগুলি তৈরি করে তা ইনপুট হিসাবে নিম্নলিখিত পরামিতিগুলি পাস করা হবে:

  • eval_config: tfam.EvalConfig
    • eval কনফিগারেশনটি মূল্যায়নকারীর কাছে পাঠানো হয়েছে (মডেল স্পেক সেটিংস খোঁজার জন্য উপযোগী যেমন ভবিষ্যদ্বাণী কী ব্যবহার করতে হবে ইত্যাদি)।
  • 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 একটি সংমিশ্রণ গঠিত preprocessor এবং একটি combinerpreprocessor একটি হল beam.DoFn যে তার ইনপুট হিসাবে নির্যাস নেয় এবং প্রাথমিক অবস্থায় যে (দেখুন combiner দ্বারা ব্যবহৃত হবে আউটপুট স্থাপত্য কি নির্যাস উপর আরও তথ্যের জন্য)। একটি এমন preprocessor সংজ্ঞায়িত করা হয় না, তবে combiner পাস হবে StandardMetricInputs (আদর্শ মেট্রিক ইনপুট লেবেল, পূর্বানুমানগুলি এবং example_weights রয়েছে)। combiner একটি হল beam.CombineFn যে তার ইনপুট হিসাবে একটি tuple (ফালি কী, প্রাক প্রসেসর আউটপুট) নেয় এবং তার ফলে (slice_key, মেট্রিক ফলাফল অভি) এর tuple আউটপুট।

মনে রাখবেন যে, slicing মধ্যে ঘটে preprocessor এবং combiner

মনে রাখবেন, যে মেট্রিক গণনার উভয় মান মেট্রিক ইনপুট ব্যবহার করতে, কিন্তু থেকে বৈশিষ্ট্যগুলি কয়েক সঙ্গে এটি বৃদ্ধি করতে চায় কিনা features নির্যাস, তারপর বিশেষ FeaturePreprocessor ব্যবহার করা যেতে পারে, যা একটি একক একাধিক combiners থেকে অনুরোধ বৈশিষ্ট্য একত্র করে দেবে শেয়ার্ড স্ট্যান্ডার্ডমেট্রিক্স ইনপুট মান যা সমস্ত কম্বাইনারকে দেওয়া হয় (কম্বাইনাররা তাদের আগ্রহী বৈশিষ্ট্যগুলি পড়ার জন্য এবং বাকিগুলিকে উপেক্ষা করার জন্য দায়ী)।

উদাহরণ

ExampleCount কম্পিউট করার জন্য TFMA মেট্রিক সংজ্ঞার একটি খুব সহজ উদাহরণ নিচে দেওয়া হল:

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}

DerivedMetric Computation

একজন DerivedMetricComputation ফলে ফাংশন যে অন্যান্য মেট্রিক কম্পিউটেশন আউটপুট উপর ভিত্তি করে মেট্রিক মান নির্ণয় করতে ব্যবহার করা হয় গঠিত। ফলাফল ফাংশন তার ইনপুট হিসাবে গণনা করা মানগুলির একটি ডিক্ট নেয় এবং অতিরিক্ত মেট্রিক ফলাফলের একটি ডিক্ট আউটপুট করে।

মনে রাখবেন যে একটি মেট্রিক দ্বারা তৈরি গণনার তালিকায় একটি প্রাপ্ত গণনা নির্ভর করে এমন গণনাগুলি অন্তর্ভুক্ত করা গ্রহণযোগ্য (প্রস্তাবিত)৷ এটি একাধিক মেট্রিক্সের মধ্যে ভাগ করা গণনাগুলিকে প্রাক-তৈরি এবং পাস করতে হবে না। মূল্যায়নকারী স্বয়ংক্রিয়ভাবে কম্পিউটেশনগুলিকে ডি-ডুপ করবে যেগুলির একই সংজ্ঞা রয়েছে তাই একটি কম্পিউটেশন আসলে চালানো হয়।

উদাহরণ

TJUR মেট্রিক্স উদ্ভূত মেট্রিক্স একটি ভাল উদাহরণ প্রদান করে।