ওভারভিউ
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))
জেনেরিক চেঞ্জ থ্রেশহোল্ড
সংশ্লিষ্ট মেট্রিক একটি বেসলাইন মডেলের চেয়ে বড়/ছোট কিনা তা পরীক্ষা করে প্রার্থীর মডেল গেট করার জন্য থ্রেহোল্ড পরিবর্তন উপযোগী। দুটি উপায়ে পরিবর্তন পরিমাপ করা যায়: পরম পরিবর্তন এবং আপেক্ষিক পরিবর্তন। প্রার্থীর মেট্রিক্স এবং বেসলাইন মডেলের মধ্যে মানের পার্থক্য হিসাবে সম্পূর্ণ পরিবর্তন গণনা করা হয়, যথা, 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 }
}
}
}