পোস্ট এক্সপোর্ট মেট্রিক্স
নাম অনুসারে, এটি একটি মেট্রিক যা মূল্যায়নের আগে রপ্তানি-পরবর্তী যোগ করা হয়।
TFMA বেশ কয়েকটি পূর্ব-নির্ধারিত মূল্যায়ন মেট্রিক্সের সাথে প্যাকেজ করা হয়েছে, যেমন উদাহরণ_কাউন্ট, auc, confusion_matrix_at_thresholds, precision_recall_at_k, mse, mae, কয়েকটি নাম। (সম্পূর্ণ তালিকা এখানে ।)
আপনি যদি আপনার ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক একটি বিদ্যমান মেট্রিক খুঁজে না পান, বা একটি মেট্রিক কাস্টমাইজ করতে চান, আপনি আপনার নিজস্ব কাস্টম মেট্রিক সংজ্ঞায়িত করতে পারেন। বিস্তারিত জানার জন্য পড়ুন!
TFMA-তে কাস্টম মেট্রিক্স যোগ করা হচ্ছে
TFMA 1.x-এ কাস্টম মেট্রিক্স সংজ্ঞায়িত করা
বিমূর্ত বেস ক্লাস প্রসারিত করুন
একটি কাস্টম মেট্রিক যোগ করতে, _PostExportMetric বিমূর্ত শ্রেণী সম্প্রসারিত একটি নতুন ক্লাস তৈরি করুন এবং এর কনস্ট্রাক্টরকে সংজ্ঞায়িত করুন এবং বিমূর্ত/অপ্রয়োগিত পদ্ধতিগুলি প্রয়োগ করুন।
কনস্ট্রাক্টর সংজ্ঞায়িত করুন
কনস্ট্রাক্টরে, কাস্টম মেট্রিকের জন্য প্রয়োজনীয় লেবেল_কী, পূর্বাভাস_কী, উদাহরণ_ওজন_কী, মেট্রিক_ট্যাগ ইত্যাদির মতো সমস্ত প্রাসঙ্গিক তথ্য প্যারামিটার হিসাবে নিন।
বিমূর্ত / অপ্রয়োজনীয় পদ্ধতি প্রয়োগ করুন
যে মডেলটির মূল্যায়ন করা হচ্ছে তার সাথে মেট্রিকের সামঞ্জস্যতা পরীক্ষা করার জন্য এই পদ্ধতিটি প্রয়োগ করুন, যেমন সমস্ত প্রয়োজনীয় বৈশিষ্ট্য, প্রত্যাশিত লেবেল এবং ভবিষ্যদ্বাণী কী উপযুক্ত ডেটা প্রকারে মডেলটিতে উপস্থিত রয়েছে কিনা তা পরীক্ষা করা। এটি তিনটি আর্গুমেন্ট লাগে:
- বৈশিষ্ট্য_ডিক্ট
- ভবিষ্যদ্বাণী_ডিক্ট
- labels_dict
এই অভিধানগুলিতে মডেলের জন্য টেনসরের উল্লেখ রয়েছে।
মেট্রিক গণনা করার জন্য মেট্রিক অপ্স (মান এবং আপডেট অপ্স) প্রদান করতে এই পদ্ধতিটি প্রয়োগ করুন। check_compatibility পদ্ধতির অনুরূপ, এটি তিনটি আর্গুমেন্টও নেয়:
- বৈশিষ্ট্য_ডিক্ট
- ভবিষ্যদ্বাণী_ডিক্ট
- labels_dict
মডেলের জন্য টেনসরের এই রেফারেন্সগুলি ব্যবহার করে আপনার মেট্রিক গণনা যুক্তি সংজ্ঞায়িত করুন।
populate_stats_and_pop এবং populate_plots_and_pop
কাঁচা মেট্রিক ফলাফলকে MetricValue এবং PlotData প্রোটো ফর্ম্যাটে রূপান্তর করতে এই মেট্রিকটি প্রয়োগ করুন। এটি তিনটি আর্গুমেন্ট লাগে:
- slice_key: স্লাইস মেট্রিকের নাম।
- combined_metrics: কাঁচা ফলাফল ধারণকারী অভিধান।
- output_metrics: আউটপুট ডিকশনারিতে মেট্রিক আছে যা পছন্দসই প্রোটো ফরম্যাটে।
@_export('my_metric')
class _MyMetric(_PostExportMetric):
def __init__(self,
target_prediction_keys: Optional[List[Text]] = None,
labels_key: Optional[Text] = None,
metric_tag: Optional[Text] = None):
self._target_prediction_keys = target_prediction_keys
self._label_keys = label_keys
self._metric_tag = metric_tag
self._metric_key = 'my_metric_key'
def check_compatibility(self, features_dict:types.TensorTypeMaybeDict,
predictions_dict: types.TensorTypeMaybeDict,
labels_dict: types.TensorTypeMaybeDict) -> None:
# Add compatibility check needed for the metric here.
def get_metric_ops(self, features_dict: types.TensorTypeMaybeDict,
predictions_dict: types.TensorTypeMaybeDict,
labels_dict: types.TensorTypeMaybeDict
) -> Dict[bytes, Tuple[types.TensorType,
types.TensorType]]:
# Metric computation logic here.
# Define value and update ops.
value_op = compute_metric_value(...)
update_op = create_update_op(... )
return {self._metric_key: (value_op, update_op)}
def populate_stats_and_pop(
self, slice_key: slicer.SliceKeyType, combined_metrics: Dict[Text, Any],
output_metrics: Dict[Text, metrics_pb2.MetricValue]) -> None:
# Parses the metric and converts it into required metric format.
metric_result = combined_metrics[self._metric_key]
output_metrics[self._metric_key].double_value.value = metric_result
ব্যবহার
# Custom metric callback
custom_metric_callback = my_metric(
labels_key='label',
target_prediction_keys=['prediction'])
fairness_indicators_callback =
post_export_metrics.fairness_indicators(
thresholds=[0.1, 0.3, 0.5, 0.7, 0.9], labels_key=label)
add_metrics_callbacks = [custom_metric_callback,
fairness_indicators_callback]
eval_shared_model = tfma.default_eval_shared_model(
eval_saved_model_path=eval_saved_model_path,
add_metrics_callbacks=add_metrics_callbacks)
eval_config = tfma.EvalConfig(...)
# Run evaluation
tfma.run_model_analysis(
eval_config=eval_config, eval_shared_model=eval_shared_model)