Tensorflow মডেল বিশ্লেষণ মডেল বৈধতা

ওভারভিউ

TFMA মান প্রান্তিক মান ও উপর ভিত্তি করে পরিবর্তন প্রান্তিক মান স্থাপন করে একটি মডেল যাচাই সমর্থন সমর্থিত বৈশিষ্ট্যের মান

কনফিগারেশন

GenericValueThreshold

মান থ্রেশহোল্ড অনুরূপ মেট্রিক্স নিম্ন সীমার চেয়ে বড় এবং/অথবা উপরের সীমার চেয়ে ছোট কিনা তা পরীক্ষা করে প্রার্থীর মডেলটি গেট করার জন্য দরকারী। ব্যবহারকারী নিম্ন_বাউন্ড এবং উপরের_বাউন্ড মানগুলির একটি বা উভয়টি সেট করতে পারেন। নিম্ন_সীমা সেট না থাকলে ঋণাত্মক অসীমতে ডিফল্ট হয়, এবং সেট না থাকলে উপরের_বাউন্ড ডিফল্ট হয় অনন্তে।

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 পরিবর্তন প্রার্থী এবং বেসলাইন মডেলের বৈশিষ্ট্যের মান মধ্যে মান থাকল হিসাবে গণনা করা হয়, যথা, v_c - v_b যেখানে v_c উল্লেখ করে প্রার্থী মেট্রিক মান এবং v_b বেসলাইন মান উল্লেখ করে। আপেক্ষিক মান প্রার্থীর মেট্রিক এবং বেসলাইন, যথা, v_c / v_b মধ্যে আপেক্ষিক পার্থক্য নেই। পরম এবং আপেক্ষিক থ্রেশহোল্ড উভয় মানদণ্ড দ্বারা গেট মডেলে সহ-অস্তিত্ব করতে পারে। থ্রেশহোল্ড মান সেট আপ করার পাশাপাশি, ব্যবহারকারীকে মেট্রিক ডিরেকশন কনফিগার করতে হবে। অনুকূলভাবে উচ্চ মান সহ মেট্রিকগুলির জন্য (যেমন, AUC), দিকটি 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 সেট করা থাকবে। যখন ব্যর্থতা থাকে, তখন সংশ্লিষ্ট মেট্রিক্স, থ্রেশহোল্ড এবং পর্যবেক্ষণ করা মেট্রিক মান সম্পর্কে তথ্য প্রদান করা হয়। নিম্নলিখিত একটি উদাহরণ যেখানে "weighted_examle_count" একটি মান থ্রেশহোল্ড ব্যর্থ হচ্ছে (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 }
      }
    }
  }