টেনসরফ্লো এক্সটেন্ডেড (টিএফএক্স) এর মূল উপাদানগুলির একটি উদাহরণ
টেনসরফ্লো মডেল অ্যানালাইসিস (টিএফএমএ) হ'ল ডেটা বিভিন্ন স্লাইস জুড়ে মডেল মূল্যায়ন সম্পাদনের জন্য একটি গ্রন্থাগার। টিএফএমএ অ্যাপাচি বিম ব্যবহার করে প্রচুর পরিমাণে ডেটা বিতরণের উপায়ে তার গণনা সম্পাদন করে।
এই উদাহরণটি কোলাব নোটবুকটি তুলে ধরেছে যে কীভাবে টিএফএমএ ডেটাসেটের বৈশিষ্ট্যগুলির সাথে সম্পর্কিত কোনও মডেলটির পারফরম্যান্স তদন্ত এবং কল্পনা করতে ব্যবহার করা যেতে পারে। আমরা এমন একটি মডেল ব্যবহার করব যা আমরা আগে প্রশিক্ষণ দিয়েছি, এবং এখন আপনি ফলাফলের সাথে খেলতে পারবেন! আমরা প্রশিক্ষিত মডেলটি ছিল শিকাগো ট্যাক্সি উদাহরণের জন্য , যা শিকাগো সিটি দ্বারা প্রকাশিত ট্যাক্সি ট্রিপস ডেটাসেট ব্যবহার করে। বিগকোয়ারী ইউআই-তে সম্পূর্ণ ডেটাসেট অন্বেষণ করুন।
একজন মডেলার এবং বিকাশকারী হিসাবে, এই ডেটা কীভাবে ব্যবহৃত হবে এবং কোনও মডেলের পূর্বাভাসের সম্ভাব্য সুবিধা এবং ক্ষতি হতে পারে সে সম্পর্কে ভাবুন। এর মতো একটি মডেল সামাজিক পক্ষপাত এবং বৈষম্যকে আরও শক্তিশালী করতে পারে। আপনি যে সমস্যাটি সমাধান করতে চান তার সাথে সম্পর্কিত কোনও বৈশিষ্ট্য নাকি এটি পক্ষপাতিত্ব প্রবর্তন করবে? আরও তথ্যের জন্য, এমএল ফেয়ারনেস সম্পর্কে পড়ুন।
ডেটাসেটের কলামগুলি হ'ল:
পিকআপ_কমিনিটি_আরিয়া | ভাড়া | ট্রিপ_স্টার্ট_ম্যাথ |
ট্রিপ_স্টার্ট_আর | ট্রিপ_স্টার্ট_দিন | ট্রিপ_স্টার্ট_টাইমস্ট্যাম্প |
পিকআপ_লিটটিউড | বাছাই_ দীর্ঘতা | ড্রপ অফ_লিটটিউড |
ড্রপ অফ | ট্রিপ_মিলস | পিকআপ_সেনসাস_ট্র্যাক্ট |
ড্রপ অফ_সেনসাস_ট্র্যাক্ট | শোধের ধরণ | প্রতিষ্ঠান |
ট্রিপ_সেকেন্ডস | ড্রপ অফ কম্যুনিটি_আড়িয়া | পরামর্শ |
জুপিটার এক্সটেনশানগুলি ইনস্টল করুন
jupyter nbextension enable --py widgetsnbextension --sys-prefix
jupyter nbextension install --py --symlink tensorflow_model_analysis --sys-prefix
jupyter nbextension enable --py tensorflow_model_analysis --sys-prefix
টেনসরফ্লো মডেল বিশ্লেষণ (টিএফএমএ) ইনস্টল করুন
এটি সমস্ত নির্ভরতা টানবে এবং এক মিনিট সময় নেবে।
সমস্ত নির্ভরতা সঠিকভাবে ইনস্টল করা আছে তা নিশ্চিত করার জন্য নোট, কোনও ত্রুটি না হওয়ার আগে আপনার একাধিকবার এই ইনস্টল পদক্ষেপটি পুনরায় চালনার প্রয়োজন হতে পারে।
# This setup was tested with TF 2.3 and TFMA 0.24 (using colab), but it should
# also work with the latest release.
import sys
# Confirm that we're using Python 3
assert sys.version_info.major==3, 'This notebook must be run using Python 3.'
print('Installing TensorFlow')
import tensorflow as tf
print('TF version: {}'.format(tf.__version__))
print('Installing Tensorflow Model Analysis and Dependencies')
!pip install -q tensorflow_model_analysis
import apache_beam as beam
print('Beam version: {}'.format(beam.__version__))
import tensorflow_model_analysis as tfma
print('TFMA version: {}'.format(tfma.__version__))
ফাইলগুলি লোড করুন
আমরা একটি টার ফাইল ডাউনলোড করব যা আমাদের প্রয়োজনীয় সমস্ত কিছু রয়েছে। এটি অন্তর্ভুক্ত:
- প্রশিক্ষণ এবং মূল্যায়ন ডাটাবেস
- ডেটা স্কিমা
- প্রশিক্ষিত এবং পরিবেশন করা সংরক্ষিত মডেলগুলি (কেরাস এবং অনুমানক) এবং ইভাল সেভ করা মডেলগুলি (অনুমানক)।
# Download the tar file from GCP and extract it
import io, os, tempfile
TAR_NAME = 'saved_models-2.2'
BASE_DIR = tempfile.mkdtemp()
DATA_DIR = os.path.join(BASE_DIR, TAR_NAME, 'data')
MODELS_DIR = os.path.join(BASE_DIR, TAR_NAME, 'models')
SCHEMA = os.path.join(BASE_DIR, TAR_NAME, 'schema.pbtxt')
OUTPUT_DIR = os.path.join(BASE_DIR, 'output')
!curl -O https://storage.googleapis.com/artifacts.tfx-oss-public.appspot.com/datasets/{TAR_NAME}.tar
!tar xf {TAR_NAME}.tar
!mv {TAR_NAME} {BASE_DIR}
!rm {TAR_NAME}.tar
print("Here's what we downloaded:")
!ls -R {BASE_DIR}
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 6800k 100 6800k 0 0 25.4M 0 --:--:-- --:--:-- --:--:-- 25.3M Here's what we downloaded: /tmp/tmpj6t03cp6: saved_models-2.2 /tmp/tmpj6t03cp6/saved_models-2.2: data models schema.pbtxt /tmp/tmpj6t03cp6/saved_models-2.2/data: eval train /tmp/tmpj6t03cp6/saved_models-2.2/data/eval: data.csv /tmp/tmpj6t03cp6/saved_models-2.2/data/train: data.csv /tmp/tmpj6t03cp6/saved_models-2.2/models: estimator keras /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator: eval_model_dir serving_model_dir /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/eval_model_dir: 1591221811 /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/eval_model_dir/1591221811: saved_model.pb tmp.pbtxt variables /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/eval_model_dir/1591221811/variables: variables.data-00000-of-00001 variables.index /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/serving_model_dir: checkpoint eval_chicago-taxi-eval events.out.tfevents.1591221780.my-pipeline-b57vp-237544850 export graph.pbtxt model.ckpt-100.data-00000-of-00001 model.ckpt-100.index model.ckpt-100.meta /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/serving_model_dir/eval_chicago-taxi-eval: events.out.tfevents.1591221799.my-pipeline-b57vp-237544850 /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/serving_model_dir/export: chicago-taxi /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/serving_model_dir/export/chicago-taxi: 1591221801 /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/serving_model_dir/export/chicago-taxi/1591221801: saved_model.pb variables /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/serving_model_dir/export/chicago-taxi/1591221801/variables: variables.data-00000-of-00001 variables.index /tmp/tmpj6t03cp6/saved_models-2.2/models/keras: 0 1 2 /tmp/tmpj6t03cp6/saved_models-2.2/models/keras/0: saved_model.pb variables /tmp/tmpj6t03cp6/saved_models-2.2/models/keras/0/variables: variables.data-00000-of-00001 variables.index /tmp/tmpj6t03cp6/saved_models-2.2/models/keras/1: saved_model.pb variables /tmp/tmpj6t03cp6/saved_models-2.2/models/keras/1/variables: variables.data-00000-of-00001 variables.index /tmp/tmpj6t03cp6/saved_models-2.2/models/keras/2: saved_model.pb variables /tmp/tmpj6t03cp6/saved_models-2.2/models/keras/2/variables: variables.data-00000-of-00001 variables.index
স্কিমাকে পার্স করুন
আমরা যে জিনিসগুলি ডাউনলোড করেছি তার মধ্যে আমাদের ডেটাগুলির জন্য একটি স্কিমা ছিল যা টেনসরফ্লো ডেটা বৈধকরণ দ্বারা তৈরি হয়েছিল। আসুন এখনই পার্স যাতে আমরা এটি টিএফএমএ দিয়ে ব্যবহার করতে পারি।
import tensorflow as tf
from google.protobuf import text_format
from tensorflow.python.lib.io import file_io
from tensorflow_metadata.proto.v0 import schema_pb2
from tensorflow.core.example import example_pb2
schema = schema_pb2.Schema()
contents = file_io.read_file_to_string(SCHEMA)
schema = text_format.Parse(contents, schema)
টিএফআরকর্ডস তৈরি করতে স্কিমা ব্যবহার করুন
আমাদের ডেটাসেটে আমাদের টিএফএমএর অ্যাক্সেস দেওয়া দরকার, সুতরাং আসুন একটি টিএফআরকর্ডস ফাইল তৈরি করুন। আমরা এটি তৈরিতে আমাদের স্কিমা ব্যবহার করতে পারি, যেহেতু এটি প্রতিটি বৈশিষ্ট্যের জন্য আমাদের সঠিক ধরণের দেয়।
import csv
datafile = os.path.join(DATA_DIR, 'eval', 'data.csv')
reader = csv.DictReader(open(datafile, 'r'))
examples = []
for line in reader:
example = example_pb2.Example()
for feature in schema.feature:
key = feature.name
if feature.type == schema_pb2.FLOAT:
example.features.feature[key].float_list.value[:] = (
[float(line[key])] if len(line[key]) > 0 else [])
elif feature.type == schema_pb2.INT:
example.features.feature[key].int64_list.value[:] = (
[int(line[key])] if len(line[key]) > 0 else [])
elif feature.type == schema_pb2.BYTES:
example.features.feature[key].bytes_list.value[:] = (
[line[key].encode('utf8')] if len(line[key]) > 0 else [])
# Add a new column 'big_tipper' that indicates if tips was > 20% of the fare.
# TODO(b/157064428): Remove after label transformation is supported for Keras.
big_tipper = float(line['tips']) > float(line['fare']) * 0.2
example.features.feature['big_tipper'].float_list.value[:] = [big_tipper]
examples.append(example)
tfrecord_file = os.path.join(BASE_DIR, 'train_data.rio')
with tf.io.TFRecordWriter(tfrecord_file) as writer:
for example in examples:
writer.write(example.SerializeToString())
!ls {tfrecord_file}
/tmp/tmpj6t03cp6/train_data.rio
TFMA সেটআপ এবং রান করুন Run
টিএফএমএ টিএফ কেরাস মডেল, জেনেরিক টিএফ 2 স্বাক্ষর এপিআইয়ের উপর ভিত্তি করে মডেলগুলি পাশাপাশি টিএফ এস্টিমেটার ভিত্তিক মডেলগুলি সহ বিভিন্ন মডেলের বিভিন্ন ধরণের সমর্থন করে। গেট_স্টার্ট গাইডটিতে সমর্থিত মডেলগুলির সম্পূর্ণ তালিকা এবং কোনও বিধিনিষেধ রয়েছে। এই উদাহরণের জন্য আমরা দেখাব যে কীভাবে কেরাস ভিত্তিক মডেলটি কনফিগার করতে হয় পাশাপাশি একটি প্রাক্কলনকারী ভিত্তিক মডেল যা EvalSavedModel
হিসাবে সংরক্ষণ করা হয়েছিল। অন্যান্য কনফিগারেশনের উদাহরণগুলির জন্য FAQ দেখুন।
টিএফএমএ মেট্রিকগুলি গণনার জন্য সমর্থন সরবরাহ করে যা প্রশিক্ষণের সময় (যেমন অন্তর্নির্মিত মেট্রিক্স) ব্যবহৃত হত পাশাপাশি মডেলগুলি TFMA কনফিগারেশন সেটিংসের অংশ হিসাবে সংরক্ষণের পরে সংজ্ঞায়িত হয়। আমাদের কেরাস সেটআপের জন্য আমরা আমাদের মেট্রিক্স এবং প্লটগুলি ম্যানুয়ালি আমাদের কনফিগারেশনের অংশ হিসাবে যুক্ত করে দেখাব (সমর্থিত ম্যাট্রিক এবং প্লট সম্পর্কিত তথ্যের জন্য মেট্রিক গাইড দেখুন)। অনুমানকারী সেটআপের জন্য আমরা বিল্ট-ইন মেট্রিকগুলি ব্যবহার করব যা মডেলটির সাথে সংরক্ষণ করা হয়েছিল। আমাদের সেটআপগুলিতে নীচের বিভাগগুলিতে আরও বিশদভাবে আলোচনা করা হয়েছে এমন কয়েকটি স্লাইসিং স্পক্সও অন্তর্ভুক্ত রয়েছে।
tfma.EvalConfig
এবং tfma.EvalSharedModel
তৈরি করার পরে আমরা tfma.run_model_analysis ব্যবহার করে tfma.run_model_analysis
চালাতে tfma.run_model_analysis
। এটি একটি tfma.EvalResult
তৈরি করবে tfma.EvalResult
যা আমরা পরে আমাদের মেট্রিক্স এবং প্লটগুলি রেন্ডারিংয়ের জন্য ব্যবহার করতে পারি।
কেরাস
import tensorflow_model_analysis as tfma
# Setup tfma.EvalConfig settings
keras_eval_config = text_format.Parse("""
## Model information
model_specs {
# For keras (and serving models) we need to add a `label_key`.
label_key: "big_tipper"
}
## Post training metric information. These will be merged with any built-in
## metrics from training.
metrics_specs {
metrics { class_name: "ExampleCount" }
metrics { class_name: "BinaryAccuracy" }
metrics { class_name: "BinaryCrossentropy" }
metrics { class_name: "AUC" }
metrics { class_name: "AUCPrecisionRecall" }
metrics { class_name: "Precision" }
metrics { class_name: "Recall" }
metrics { class_name: "MeanLabel" }
metrics { class_name: "MeanPrediction" }
metrics { class_name: "Calibration" }
metrics { class_name: "CalibrationPlot" }
metrics { class_name: "ConfusionMatrixPlot" }
# ... add additional metrics and plots ...
}
## Slicing information
slicing_specs {} # overall slice
slicing_specs {
feature_keys: ["trip_start_hour"]
}
slicing_specs {
feature_keys: ["trip_start_day"]
}
slicing_specs {
feature_values: {
key: "trip_start_month"
value: "1"
}
}
slicing_specs {
feature_keys: ["trip_start_hour", "trip_start_day"]
}
""", tfma.EvalConfig())
# Create a tfma.EvalSharedModel that points at our keras model.
keras_model_path = os.path.join(MODELS_DIR, 'keras', '2')
keras_eval_shared_model = tfma.default_eval_shared_model(
eval_saved_model_path=keras_model_path,
eval_config=keras_eval_config)
keras_output_path = os.path.join(OUTPUT_DIR, 'keras')
# Run TFMA
keras_eval_result = tfma.run_model_analysis(
eval_shared_model=keras_eval_shared_model,
eval_config=keras_eval_config,
data_location=tfrecord_file,
output_path=keras_output_path)
WARNING:absl:Tensorflow version (2.3.1) found. Note that TFMA support for TF 2.0 is currently in beta WARNING:apache_beam.runners.interactive.interactive_environment:Dependencies required for Interactive Beam PCollection visualization are not available, please use: `pip install apache-beam[interactive]` to install necessary dependencies to enable all data visualization features. WARNING:apache_beam.io.tfrecordio:Couldn't find python-snappy so the implementation of _TFRecordUtil._masked_crc32c is not as fast as it could be. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:70: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version. Instructions for updating: Use eager execution and: `tf.data.TFRecordDataset(path)` WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:70: tf_record_iterator (from tensorflow.python.lib.io.tf_record) is deprecated and will be removed in a future version. Instructions for updating: Use eager execution and: `tf.data.TFRecordDataset(path)`
অনুমানক
import tensorflow_model_analysis as tfma
# Setup tfma.EvalConfig settings
estimator_eval_config = text_format.Parse("""
## Model information
model_specs {
# To use EvalSavedModel set `signature_name` to "eval".
signature_name: "eval"
}
## Post training metric information. These will be merged with any built-in
## metrics from training.
metrics_specs {
metrics { class_name: "ConfusionMatrixPlot" }
# ... add additional metrics and plots ...
}
## Slicing information
slicing_specs {} # overall slice
slicing_specs {
feature_keys: ["trip_start_hour"]
}
slicing_specs {
feature_keys: ["trip_start_day"]
}
slicing_specs {
feature_values: {
key: "trip_start_month"
value: "1"
}
}
slicing_specs {
feature_keys: ["trip_start_hour", "trip_start_day"]
}
""", tfma.EvalConfig())
# Create a tfma.EvalSharedModel that points at our eval saved model.
estimator_base_model_path = os.path.join(
MODELS_DIR, 'estimator', 'eval_model_dir')
estimator_model_path = os.path.join(
estimator_base_model_path, os.listdir(estimator_base_model_path)[0])
estimator_eval_shared_model = tfma.default_eval_shared_model(
eval_saved_model_path=estimator_model_path,
eval_config=estimator_eval_config)
estimator_output_path = os.path.join(OUTPUT_DIR, 'estimator')
# Run TFMA
estimator_eval_result = tfma.run_model_analysis(
eval_shared_model=estimator_eval_shared_model,
eval_config=estimator_eval_config,
data_location=tfrecord_file,
output_path=estimator_output_path)
WARNING:absl:Tensorflow version (2.3.1) found. Note that TFMA support for TF 2.0 is currently in beta WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/eval_saved_model/load.py:169: load (from tensorflow.python.saved_model.loader_impl) is deprecated and will be removed in a future version. Instructions for updating: This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.loader.load or tf.compat.v1.saved_model.load. There will be a new function for importing SavedModels in Tensorflow 2.0. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/eval_saved_model/load.py:169: load (from tensorflow.python.saved_model.loader_impl) is deprecated and will be removed in a future version. Instructions for updating: This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.loader.load or tf.compat.v1.saved_model.load. There will be a new function for importing SavedModels in Tensorflow 2.0. INFO:tensorflow:Restoring parameters from /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/eval_model_dir/1591221811/variables/variables INFO:tensorflow:Restoring parameters from /tmp/tmpj6t03cp6/saved_models-2.2/models/estimator/eval_model_dir/1591221811/variables/variables WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/eval_saved_model/graph_ref.py:189: get_tensor_from_tensor_info (from tensorflow.python.saved_model.utils_impl) is deprecated and will be removed in a future version. Instructions for updating: This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.utils.get_tensor_from_tensor_info or tf.compat.v1.saved_model.get_tensor_from_tensor_info. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/eval_saved_model/graph_ref.py:189: get_tensor_from_tensor_info (from tensorflow.python.saved_model.utils_impl) is deprecated and will be removed in a future version. Instructions for updating: This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.utils.get_tensor_from_tensor_info or tf.compat.v1.saved_model.get_tensor_from_tensor_info.
ভিজ্যুয়ালাইজিং মেট্রিকস এবং প্লট
এখন যেহেতু আমরা মূল্যায়নটি চালিয়েছি, আসুন TFMA ব্যবহার করে আমাদের দৃশ্যায়নগুলি একবার দেখুন। নিম্নলিখিত উদাহরণগুলির জন্য, আমরা কেরাস মডেলটিতে মূল্যায়ন চালানো থেকে ফলাফলগুলি কল্পনা করব। অনুমানকারী ভিত্তিক মডেলটি দেখতে আমাদের estimator_eval_result
ভেরিয়েবলের দিকে eval_result
করার জন্য eval_result
আপডেট করুন।
রেন্ডারিং মেট্রিক্স
মেট্রিকগুলি দেখতে আপনি tfma.view.render_slicing_metrics
ব্যবহার tfma.view.render_slicing_metrics
ডিফল্টরূপে দর্শনগুলি Overall
স্লাইস প্রদর্শন করবে। নির্দিষ্ট স্লাইসটি দেখতে আপনি কলামটির নাম ব্যবহার করতে পারেন ( slicing_column
সেট slicing_column
) বা একটি tfma.SlicingSpec
মেট্রিক্স ভিজুয়ালাইজেশন নিম্নলিখিত ক্রিয়াগুলি সমর্থন করে:
- প্যানে ক্লিক করে টেনে আনুন
- জুম করতে স্ক্রোল করুন
- ভিউটি পুনরায় সেট করতে ডান ক্লিক করুন
- আরও বিশদ দেখতে পছন্দসই ডেটা পয়েন্টের উপরে ঘুরে দেখুন।
- নীচে নির্বাচনগুলি ব্যবহার করে চারটি ভিন্ন ধরণের ভিউ থেকে নির্বাচন করুন।
উদাহরণস্বরূপ, আমরা আমাদের পূর্ববর্তী slicing_specs
থেকে trip_start_hour
বৈশিষ্ট্যটি slicing_column
জন্য slicing_column
সেট করব।
tfma.view.render_slicing_metrics(eval_result, slicing_column='trip_start_hour')
SlicingMetricsViewer(config={'weightedExamplesColumn': 'example_count'}, data=[{'slice': 'trip_start_hour:2', …
স্লাইস ওভারভিউ
ডিফল্ট ভিজ্যুয়ালাইজেশন হ'ল স্লাইস ওভারভিউ when এটি প্রতিটি স্লাইসের জন্য মেট্রিকের মান দেখায়। যেহেতু আমরা উপরে trip_start_hour
নির্বাচন করেছি, এটি আমাদের প্রতি ঘন্টা ধরে যথার্থতা এবং trip_start_hour
মতো মেট্রিকগুলি দেখায় যা আমাদের কয়েক ঘন্টা নির্দিষ্ট নয় এমন সমস্যাগুলির জন্য সন্ধান করতে দেয় যা অন্যদের নয়।
উপরের দৃশ্যায়নে:
- কলাম
trip_start_hours
ক্লিক করে বৈশিষ্ট্য কলামটি, যা আমাদেরtrip_start_hours
বৈশিষ্ট্যটি সাজানোর চেষ্টা করুন feature - নির্ভুলতার সাথে বাছাই করার চেষ্টা করুন এবং লক্ষ্য করুন যে উদাহরণ সহ কয়েকটি ঘন্টার জন্য যথার্থতা 0, যা কোনও সমস্যা নির্দেশ করতে পারে
চার্টটি আমাদের স্লাইসে বিভিন্ন মেট্রিক নির্বাচন করতে এবং প্রদর্শন করতে দেয়।
- "শো" মেনু থেকে বিভিন্ন ম্যাট্রিক নির্বাচন করার চেষ্টা করুন
- "শো" মেনুতে পুনর্নির্মাণ নির্বাচন করার চেষ্টা করুন, এবং লক্ষ্য করুন যে উদাহরণগুলির সাথে কয়েক ঘন্টার জন্য পুনরুদ্ধার 0, যা কোনও সমস্যা নির্দেশ করতে পারে
কম সংখ্যক উদাহরণ, বা "ওজন" সহ স্লাইসগুলি ফিল্টার করার জন্য একটি থ্রেশহোল্ড সেট করাও সম্ভব। আপনি ন্যূনতম সংখ্যার উদাহরণ টাইপ করতে পারেন, বা স্লাইডারটি ব্যবহার করতে পারেন।
মেট্রিক্স হিস্টোগ্রাম
এই ভিউটি একটি বিকল্প ভিজ্যুয়ালাইজেশন হিসাবে মেট্রিক্স হিস্টোগ্রামকেও সমর্থন করে, যা স্লাইসের সংখ্যা বেশি হলে ডিফল্ট দর্শন is ফলাফলগুলি বালতিগুলিতে বিভক্ত হবে এবং টুকরো / মোট ওজন / উভয়ই ভিজ্যুয়ালাইজ করা যায়। কলামগুলির শিরোনামে ক্লিক করে কলামগুলি বাছাই করা যায়। ছোট ওজনযুক্ত স্লাইসগুলি থ্রেশহোল্ড সেট করে ফিল্টার করা যায়। ধূসর ব্যান্ডটি টেনে নিয়ে আরও ফিল্টারিং প্রয়োগ করা যেতে পারে। ব্যাপ্তিটি পুনরায় সেট করতে, ব্যান্ডটিতে ডাবল ক্লিক করুন। ফিল্টারিং ভিজ্যুয়ালাইজেশন এবং মেট্রিক্স টেবিলগুলিতে আউটলিয়ারগুলি অপসারণ করতেও ব্যবহার করা যেতে পারে। লিনিয়ার স্কেলের পরিবর্তে লোগারিডমিক স্কেলে স্যুইচ করতে গিয়ার আইকনটি ক্লিক করুন।
- ভিজ্যুয়ালাইজেশন মেনুতে "ম্যাট্রিক্স হিস্টোগ্রাম" নির্বাচন করার চেষ্টা করুন
আরও স্লাইস
আমাদের প্রাথমিক tfma.EvalConfig
একটি সম্পূর্ণ তালিকা তৈরি slicing_specs
, যা আমরা tfma.view.render_slicing_metrics
পাস করা স্লাইস তথ্য আপডেট করে কল্পনা করতে tfma.view.render_slicing_metrics
। এখানে আমরা trip_start_day
স্লাইস (সপ্তাহের দিন) নির্বাচন করব। পরিবর্তন করার চেষ্টা করুন trip_start_day
করার trip_start_month
এবং আবার রেন্ডারিং বিভিন্ন টুকরা পরীক্ষা করা।
tfma.view.render_slicing_metrics(eval_result, slicing_column='trip_start_day')
SlicingMetricsViewer(config={'weightedExamplesColumn': 'example_count'}, data=[{'slice': 'trip_start_day:3', '…
টিএফএমএ বৈশিষ্ট্যগুলির সংমিশ্রণ বিশ্লেষণ করতে বৈশিষ্ট্য ক্রস তৈরিকে সমর্থন করে। আমাদের আসল সেটিংস ক্রস trip_start_hour
এবং trip_start_day
:
tfma.view.render_slicing_metrics(
eval_result,
slicing_spec=tfma.SlicingSpec(
feature_keys=['trip_start_hour', 'trip_start_day']))
SlicingMetricsViewer(config={'weightedExamplesColumn': 'example_count'}, data=[{'slice': 'trip_start_day_X_tri…
দুটি কলাম অতিক্রম করে প্রচুর সংমিশ্রণ তৈরি হয়! দুপুরে শুরু হওয়া ট্রিপগুলি দেখার জন্য আমাদের ক্রসটি সঙ্কুচিত করা যাক। তারপরে ভিজ্যুয়ালাইজেশন থেকে binary_accuracy
নির্বাচন করুন:
tfma.view.render_slicing_metrics(
eval_result,
slicing_spec=tfma.SlicingSpec(
feature_keys=['trip_start_day'], feature_values={'trip_start_hour': '12'}))
SlicingMetricsViewer(config={'weightedExamplesColumn': 'example_count'}, data=[{'slice': 'trip_start_day_X_tri…
প্লেন্ডার রেন্ডারিং
কোন প্লট যে যোগ করা হয় নি tfma.EvalConfig
পোস্টে প্রশিক্ষণ যেমন metric_specs
ব্যবহার প্রদর্শিত হতে পারে tfma.view.render_plot
।
মেট্রিকের মতো, প্লটগুলি স্লাইস দ্বারা দেখা যায়। মেট্রিকগুলির বিপরীতে, কেবল একটি নির্দিষ্ট স্লাইস মানের জন্য প্লটগুলি প্রদর্শিত হতে পারে তাই tfma.SlicingSpec
ব্যবহার করা আবশ্যক এবং এটি অবশ্যই একটি স্লাইস বৈশিষ্ট্য নাম এবং মান উভয় নির্দিষ্ট করতে হবে। যদি কোনও স্লাইস সরবরাহ না করা হয় তবে Overall
স্লাইসের প্লটগুলি ব্যবহৃত হয়।
উদাহরণে আমরা প্রদর্শন করার হন CalibrationPlot
এবং ConfusionMatrixPlot
প্লট যে জন্য নির্ণিত ছিল trip_start_hour:1
ফালি।
tfma.view.render_plot(
eval_result,
tfma.SlicingSpec(feature_values={'trip_start_hour': '1'}))
PlotViewer(config={'sliceName': 'trip_start_hour:1', 'metricKeys': {'calibrationPlot': {'metricName': 'calibra…
সময়ের সাথে সাথে ট্র্যাকিং মডেল পারফরম্যান্স
আপনার প্রশিক্ষণ ডেটাসেটটি আপনার মডেলটি প্রশিক্ষণের জন্য ব্যবহৃত হবে এবং আশা করা যায় যে আপনার পরীক্ষার ডেটাসেট এবং উত্পাদনে আপনার মডেলটিতে যে ডেটা প্রেরণ করা হবে সেগুলির প্রতিনিধি হবেন। যাইহোক, অনুমানের অনুরোধগুলিতে থাকা ডেটাটি আপনার প্রশিক্ষণের ডেটার মতোই থাকতে পারে, অনেক ক্ষেত্রে এটি যথেষ্ট পরিমাণে পরিবর্তন করতে শুরু করবে যাতে আপনার মডেলের কার্য সম্পাদন বদলে যায়।
এর অর্থ হ'ল চলমান ভিত্তিতে আপনার মডেলটির কর্মক্ষমতা নিরীক্ষণ এবং পরিমাপ করা প্রয়োজন, যাতে আপনি সচেতন হতে পারেন এবং পরিবর্তনের ক্ষেত্রে প্রতিক্রিয়া জানাতে পারেন। TFMA কীভাবে সহায়তা করতে পারে তা একবার দেখে নেওয়া যাক।
আসুন 3 টি ভিন্ন মডেলের রান লোড করুন এবং তারা কীভাবে render_time_series
ব্যবহার করে তুলনা করে তা দেখতে render_time_series
ব্যবহার render_time_series
।
# Note this re-uses the EvalConfig from the keras setup.
# Run eval on each saved model
output_paths = []
for i in range(3):
# Create a tfma.EvalSharedModel that points at our saved model.
eval_shared_model = tfma.default_eval_shared_model(
eval_saved_model_path=os.path.join(MODELS_DIR, 'keras', str(i)),
eval_config=keras_eval_config)
output_path = os.path.join(OUTPUT_DIR, 'time_series', str(i))
output_paths.append(output_path)
# Run TFMA
tfma.run_model_analysis(eval_shared_model=eval_shared_model,
eval_config=keras_eval_config,
data_location=tfrecord_file,
output_path=output_path)
WARNING:absl:Tensorflow version (2.3.1) found. Note that TFMA support for TF 2.0 is currently in beta WARNING:absl:Tensorflow version (2.3.1) found. Note that TFMA support for TF 2.0 is currently in beta WARNING:absl:Tensorflow version (2.3.1) found. Note that TFMA support for TF 2.0 is currently in beta
প্রথমত, আমরা কল্পনা করব যে আমরা গতকাল আমাদের মডেলকে প্রশিক্ষণ দিয়েছি এবং মোতায়েন করেছি এবং এখন আমরা দেখতে চাই যে এটি আজ যে নতুন ডেটা আসছে তাতে কীভাবে চলছে। ভিসুয়ালাইজেশন এউসি প্রদর্শন করে শুরু হবে। ইউআই থেকে আপনি এটি করতে পারেন:
- "মেট্রিক সিরিজ যুক্ত করুন" মেনু ব্যবহার করে অন্যান্য মেট্রিক যুক্ত করুন।
- এক্স এ ক্লিক করে অযাচিত গ্রাফ বন্ধ করুন
- আরও বিশদ পেতে ডেটা পয়েন্টগুলি (গ্রাফের রেখার অংশগুলির শেষ) ধরে রাখুন
eval_results_from_disk = tfma.load_eval_results(output_paths[:2])
tfma.view.render_time_series(eval_results_from_disk)
TimeSeriesViewer(config={'isModelCentric': True}, data=[{'metrics': {'': {'': {'calibration': {'doubleValue': …
এখন আমরা কল্পনা করব যে আর একটি দিন কেটে গেছে এবং আমরা দেখতে চাই যে এটি আগের নতুন দিনের তুলনায় আজ যে নতুন ডেটা আসছে তা কীভাবে চলছে:
eval_results_from_disk = tfma.load_eval_results(output_paths)
tfma.view.render_time_series(eval_results_from_disk)
TimeSeriesViewer(config={'isModelCentric': True}, data=[{'metrics': {'': {'': {'calibration': {'doubleValue': …
মডেল বৈধকরণ
TFMA একই সময়ে একাধিক মডেল মূল্যায়ন করতে কনফিগার করা যেতে পারে। সাধারণত মেট্রিকের পারফরম্যান্সের পার্থক্যগুলি (যেমন এওসি, ইত্যাদি) বেসলাইনটির সাথে কী তা নির্ধারণ করতে একটি বেসলাইন (যেমন বর্তমানে পরিবেশনকারী মডেল) এর বিপরীতে একটি নতুন মডেলের তুলনা করার জন্য এটি করা হয়। থ্রেশহোল্ডগুলি কনফিগার করা হলে, টিএফএমএ একটি tfma.ValidationResult
তৈরি করবে produce
দুটি মডেলের তুলনায় আমাদের কেরাস মূল্যায়নটিকে আবার কনফিগার করতে দাও: একজন প্রার্থী এবং একটি বেসলাইন। আমরা tmfa.MetricThreshold
মেট্রিকটিতে tmfa.MetricThreshold
সেট করে tmfa.MetricThreshold
বিপরীতে প্রার্থীর পারফরম্যান্সও বৈধ করব।
WARNING:absl:Tensorflow version (2.3.1) found. Note that TFMA support for TF 2.0 is currently in beta /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_model_analysis/evaluators/metrics_validator.py:66: RuntimeWarning: invalid value encountered in true_divide ratio = diff / metrics[key.make_baseline_key(baseline_model_name)]
বেসলাইনটির বিপরীতে এক বা একাধিক মডেলের সাথে মূল্যায়ন চলাকালীন, টিএফএমএ মূল্যায়নের সময় গণনা করা সমস্ত মেট্রিকের জন্য স্বয়ংক্রিয়ভাবে পৃথক মেট্রিক যুক্ত করে। এই মেট্রিকগুলির নাম সংশ্লিষ্ট মেট্রিকের নামে রাখা হয়েছে তবে মেট্রিকের সাথে _diff
যুক্ত হয়েছে।
আমাদের রান দ্বারা উত্পাদিত মেট্রিকগুলি একবার দেখে নেওয়া যাক:
tfma.view.render_time_series(eval_result_with_validation)
TimeSeriesViewer(config={'isModelCentric': True}, data=[{'metrics': {'': {'': {'calibration_diff': {'doubleVal…
এখন আসুন আমাদের বৈধতা পরীক্ষা থেকে আউটপুট দেখুন। বৈধকরণের ফলাফলগুলি দেখতে আমরাtfma.load_validator_result
ব্যবহারtfma.load_validator_result
। আমাদের উদাহরণস্বরূপ, বৈধতা ব্যর্থ হয় কারণ এওসি প্রান্তিকের নীচে।
validation_result = tfma.load_validation_result(validation_output_path)
print(validation_result.validation_ok)
False