সাহায্য Kaggle উপর TensorFlow সঙ্গে গ্রেট বেরিয়ার রিফ রক্ষা চ্যালেঞ্জ যোগদান

টেনসরফ্লো মডেল বিশ্লেষণ

টেনসরফ্লো এক্সটেন্ডেড (TFX) এর একটি মূল উপাদানের একটি উদাহরণ

TensorFlow মডেল বিশ্লেষণ (TFMA) ডেটার বিভিন্ন টুকরা জুড়ে মডেল মূল্যায়ন সম্পাদন জন্য একটি লাইব্রেরী। TFMA ব্যবহার করে তথ্য বিশাল পরিমাণ উপর একটি বিতরণ পদ্ধতিতে তার কম্পিউটেশন সঞ্চালিত এ্যাপাচি রশ্মি

এই উদাহরণ কোল্যাব নোটবুকটি ব্যাখ্যা করে যে কীভাবে ডেটাসেটের বৈশিষ্ট্যগুলির সাথে সম্পর্কিত একটি মডেলের কার্যকারিতা তদন্ত এবং কল্পনা করতে TFMA ব্যবহার করা যেতে পারে। আমরা এমন একটি মডেল ব্যবহার করব যা আমরা আগে প্রশিক্ষিত করেছি এবং এখন আপনি ফলাফলের সাথে খেলতে পারবেন! মডেল আমরা প্রশিক্ষিত ছিল শিকাগো ট্যাক্সি উদাহরণ , যা ব্যবহার ট্যাক্সি ডেটা সেটটি Trips শিকাগো শহরের দ্বারা মুক্তি। পূর্ণ ডেটা সেটটি এক্সপ্লোর BigQuery- তে UI 'তে

একজন মডেলার এবং বিকাশকারী হিসাবে, এই ডেটা কীভাবে ব্যবহার করা হয় এবং মডেলের ভবিষ্যদ্বাণীগুলির সম্ভাব্য সুবিধা এবং ক্ষতি হতে পারে সে সম্পর্কে চিন্তা করুন। এই ধরনের একটি মডেল সামাজিক পক্ষপাত এবং বৈষম্যকে শক্তিশালী করতে পারে। আপনি যে সমস্যার সমাধান করতে চান তার সাথে কি একটি বৈশিষ্ট্য প্রাসঙ্গিক বা এটি পক্ষপাতের পরিচয় দেবে? আরো তথ্যের জন্য, সম্পর্কে পড়তে এমএল সততা

ডেটাসেটের কলামগুলি হল:

পিকআপ_কমিউনিটি_এরিয়া ভাড়া ট্রিপ_শুরু_মাস
ট্রিপ_শুরু_ঘণ্টা ট্রিপ_শুরু_দিন ট্রিপ_স্টার্ট_টাইমস্ট্যাম্প
পিকআপ_অক্ষাংশ পিকআপ_দ্রাঘিমাংশ ড্রপঅফ_অক্ষাংশ
ড্রপঅফ_দ্রাঘিমাংশ ট্রিপ_মাইল পিকআপ_সেনসাস_ট্র্যাক্ট
ড্রপঅফ_সেনসাস_ট্র্যাক্ট শোধের ধরণ প্রতিষ্ঠান
ট্রিপ_সেকেন্ড ড্রপঅফ_কমিউনিটি_এরিয়া পরামর্শ

জুপিটার এক্সটেনশন ইনস্টল করুন

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 

TensorFlow মডেল বিশ্লেষণ (TFMA) ইনস্টল করুন

এটি সমস্ত নির্ভরতাকে টানবে এবং এক মিনিট সময় নেবে৷

# Upgrade pip to the latest, and install TFMA.
pip install -U pip
pip install tensorflow-model-analysis

নীচের ঘরগুলি চালানোর আগে আপনাকে অবশ্যই রানটাইমটি পুনরায় চালু করতে হবে।

# This setup was tested with TF 2.5 and TFMA 0.31 (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.'

import tensorflow as tf
print('TF version: {}'.format(tf.__version__))
import apache_beam as beam
print('Beam version: {}'.format(beam.__version__))
import tensorflow_model_analysis as tfma
print('TFMA version: {}'.format(tfma.__version__))
TF version: 2.4.4
Beam version: 2.34.0
TFMA version: 0.29.0

ফাইলগুলি লোড করুন

আমরা একটি টার ফাইল ডাউনলোড করব যাতে আমাদের প্রয়োজনীয় সবকিছু রয়েছে। এটি অন্তর্ভুক্ত:

  • প্রশিক্ষণ এবং মূল্যায়ন ডেটাসেট
  • ডেটা স্কিমা
  • সংরক্ষিত মডেল (কেরা এবং অনুমানকারী) এবং ইভাল সংরক্ষিত মডেল (আনুমানিক) প্রশিক্ষণ এবং পরিবেশন করা।
# 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  28.2M      0 --:--:-- --:--:-- --:--:-- 28.2M
Here's what we downloaded:
/tmp/tmp_at9q62d:
saved_models-2.2

/tmp/tmp_at9q62d/saved_models-2.2:
data  models  schema.pbtxt

/tmp/tmp_at9q62d/saved_models-2.2/data:
eval  train

/tmp/tmp_at9q62d/saved_models-2.2/data/eval:
data.csv

/tmp/tmp_at9q62d/saved_models-2.2/data/train:
data.csv

/tmp/tmp_at9q62d/saved_models-2.2/models:
estimator  keras

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator:
eval_model_dir  serving_model_dir

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/eval_model_dir:
1591221811

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/eval_model_dir/1591221811:
saved_model.pb  tmp.pbtxt  variables

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/eval_model_dir/1591221811/variables:
variables.data-00000-of-00001  variables.index

/tmp/tmp_at9q62d/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/tmp_at9q62d/saved_models-2.2/models/estimator/serving_model_dir/eval_chicago-taxi-eval:
events.out.tfevents.1591221799.my-pipeline-b57vp-237544850

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/serving_model_dir/export:
chicago-taxi

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/serving_model_dir/export/chicago-taxi:
1591221801

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/serving_model_dir/export/chicago-taxi/1591221801:
saved_model.pb  variables

/tmp/tmp_at9q62d/saved_models-2.2/models/estimator/serving_model_dir/export/chicago-taxi/1591221801/variables:
variables.data-00000-of-00001  variables.index

/tmp/tmp_at9q62d/saved_models-2.2/models/keras:
0  1  2

/tmp/tmp_at9q62d/saved_models-2.2/models/keras/0:
saved_model.pb  variables

/tmp/tmp_at9q62d/saved_models-2.2/models/keras/0/variables:
variables.data-00000-of-00001  variables.index

/tmp/tmp_at9q62d/saved_models-2.2/models/keras/1:
saved_model.pb  variables

/tmp/tmp_at9q62d/saved_models-2.2/models/keras/1/variables:
variables.data-00000-of-00001  variables.index

/tmp/tmp_at9q62d/saved_models-2.2/models/keras/2:
saved_model.pb  variables

/tmp/tmp_at9q62d/saved_models-2.2/models/keras/2/variables:
variables.data-00000-of-00001  variables.index

স্কিমা পার্স করুন

জিনিস আমরা ডাউনলোড করা মধ্যে আমাদের তথ্য যে দ্বারা তৈরি করা হয়েছে একটি স্কিমা ছিল TensorFlow ডেটা ভ্যালিডেশন । এখন এটিকে পার্স করা যাক যাতে আমরা এটি TFMA এর সাথে ব্যবহার করতে পারি।

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)

TFRecords তৈরি করতে স্কিমা ব্যবহার করুন

আমাদের ডেটাসেটে TFMA অ্যাক্সেস দিতে হবে, তাই আসুন একটি TFRecords ফাইল তৈরি করি। আমরা এটি তৈরি করতে আমাদের স্কিমা ব্যবহার করতে পারি, যেহেতু এটি আমাদের প্রতিটি বৈশিষ্ট্যের জন্য সঠিক ধরন দেয়।

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/tmp_at9q62d/train_data.rio

TFMA সেটআপ করুন এবং চালান

TFMA TF কেরাস মডেল, জেনেরিক TF2 স্বাক্ষর API-এর উপর ভিত্তি করে মডেল, সেইসাথে TF অনুমানকারী ভিত্তিক মডেল সহ বিভিন্ন ধরনের মডেল সমর্থন করে। Get_started নির্দেশিকা মডেল প্রকার সমর্থিত এবং কোন সীমাবদ্ধতা সম্পূর্ণ তালিকা হয়েছে। এই উদাহরণস্বরূপ আমরা keras একটি মূল্নির্ধারক ভিত্তিক মডেল যে একটি হিসেবে সংরক্ষিত হয় এবং সেইসাথে ভিত্তিক মডেল কনফিগার করার পদ্ধতির দেখানোর জন্য যাচ্ছি EvalSavedModel । দেখুন প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী অন্যান্য কনফিগারেশনের উদাহরণ জন্য।

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

একটি তৈরি হয়ে গেলে tfma.EvalConfig এবং tfma.EvalSharedModel আমরা কি তবে ব্যবহার TFMA চালাতে পারেন tfma.run_model_analysis । এই তৈরি করবে 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)
2021-12-04 10:18:15.463173: W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcusolver.so.10'; dlerror: libcusolver.so.10: cannot open shared object file: No such file or directory
2021-12-04 10:18:15.464249: W tensorflow/core/common_runtime/gpu/gpu_device.cc:1757] Cannot dlopen some GPU libraries. Please make sure the missing libraries mentioned above are installed properly if you would like to use GPU. Follow the guide at https://www.tensorflow.org/install/gpu for how to download and setup the required libraries for your platform.
Skipping registering GPU devices...
WARNING:absl:Tensorflow version (2.4.4) 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:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.
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.7/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:113: 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.7/site-packages/tensorflow_model_analysis/writers/metrics_plots_and_validations_writer.py:113: 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.4.4) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/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.7/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/tmp_at9q62d/saved_models-2.2/models/estimator/eval_model_dir/1591221811/variables/variables
INFO:tensorflow:Restoring parameters from /tmp/tmp_at9q62d/saved_models-2.2/models/estimator/eval_model_dir/1591221811/variables/variables
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/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.7/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 ব্যবহার করে আমাদের ভিজ্যুয়ালাইজেশনগুলি একবার দেখে নেওয়া যাক। নিম্নলিখিত উদাহরণগুলির জন্য, আমরা কেরাস মডেলে মূল্যায়ন চালানোর ফলাফলগুলি কল্পনা করব। মূল্নির্ধারক ভিত্তিক মডেল আপডেট দেখতে eval_result আমাদের এ বিন্দু estimator_eval_result পরিবর্তনশীল।

eval_result = keras_eval_result
# eval_result = estimator_eval_result

রেন্ডারিং মেট্রিক্স

দৃশ্য মেট্রিক্স করতে ব্যবহার tfma.view.render_slicing_metrics

ডিফল্টরূপে মতামত প্রদর্শন করা হবে Overall ফালি। একটি নির্দিষ্ট ফালি দেখার জন্য আপনাকে পারেন কলাম (সেটিংস এর দ্বারা নাম ব্যবহার করতে পারেন slicing_column ) অথবা একটি প্রদান tfma.SlicingSpec

মেট্রিক্স ভিজ্যুয়ালাইজেশন নিম্নলিখিত মিথস্ক্রিয়া সমর্থন করে:

  • প্যান করতে ক্লিক করুন এবং টেনে আনুন
  • জুম করতে স্ক্রোল করুন
  • ভিউ রিসেট করতে ডান ক্লিক করুন
  • আরও বিশদ দেখতে পছন্দসই ডেটা পয়েন্টের উপর হোভার করুন।
  • নীচের নির্বাচনগুলি ব্যবহার করে চারটি ভিন্ন ধরণের ভিউ থেকে নির্বাচন করুন৷

উদাহরণস্বরূপ, আমরা সেটিং করা হবে slicing_column তাকান trip_start_hour আমাদের আগের থেকে বৈশিষ্ট্য slicing_specs

tfma.view.render_slicing_metrics(eval_result, slicing_column='trip_start_hour')
SlicingMetricsViewer(config={'weightedExamplesColumn': 'example_count'}, data=[{'slice': 'trip_start_hour:2', …

স্লাইস ওভারভিউ

যখন টুকরা সংখ্যা ছোট ডিফল্ট ঠাহর স্লাইস সংক্ষিপ্ত বিবরণ নেই। এটি প্রতিটি স্লাইসের জন্য মেট্রিক্সের মান দেখায়। যেহেতু আমরা নির্বাচন করেছেন trip_start_hour উপরে, এটা আমাদের সঠিকতা এবং AUC প্রতি ঘন্টায়, যা আমাদের সমস্যা যে কিছু ঘন্টা এবং না অন্যদের কাছে নির্দিষ্ট জন্য চেহারা করতে পারবেন মত বৈশিষ্ট্যের মান দেখাচ্ছে।

উপরের ভিজ্যুয়ালাইজেশনে:

  • বৈশিষ্ট্য কলাম, যা আমাদের নেই বাছাই করার চেষ্টা করুন trip_start_hours কলাম শিরোনাম উপর, বৈশিষ্ট্য ক্লিক করে
  • স্পষ্টতা দ্বারা বাছাই চেষ্টা করুন এবং যে বিজ্ঞপ্তি উদাহরণ ঘন্টার কিছু স্পষ্টতা 0 একটি সমস্যা ইঙ্গিত হতে পারে যা

চার্টটি আমাদের স্লাইসে বিভিন্ন মেট্রিক্স নির্বাচন এবং প্রদর্শন করার অনুমতি দেয়।

  • "দেখান" মেনু থেকে বিভিন্ন মেট্রিক্স নির্বাচন করার চেষ্টা করুন
  • "দেখান" মেনুতে রিকল নির্বাচনের চেষ্টা করুন, এবং বিজ্ঞপ্তি উদাহরণ ঘন্টার কিছু রিকল 0, যা সমস্যার ইঙ্গিত দিতে পারে যে

ছোট সংখ্যক উদাহরণ বা "ওজন" সহ স্লাইস ফিল্টার করার জন্য একটি থ্রেশহোল্ড সেট করাও সম্ভব। আপনি ন্যূনতম সংখ্যক উদাহরণ টাইপ করতে পারেন, অথবা স্লাইডার ব্যবহার করতে পারেন।

মেট্রিক্স হিস্টোগ্রাম

এই দেখুন এছাড়াও একটি বিকল্প কল্পনা, যা ডিফল্ট ভিউ যখন টুকরা সংখ্যা বড় হিসাবে একটি মেট্রিক্স হিস্টোগ্রাম সমর্থন করে। ফলাফলগুলিকে বালতিতে ভাগ করা হবে এবং স্লাইসের সংখ্যা / মোট ওজন / উভয়ই কল্পনা করা যেতে পারে। কলাম হেডারে ক্লিক করে কলাম সাজানো যায়। ছোট ওজন সহ স্লাইস থ্রেশহোল্ড সেট করে ফিল্টার করা যেতে পারে। ধূসর ব্যান্ড টেনে আরও ফিল্টারিং প্রয়োগ করা যেতে পারে। রেঞ্জ রিসেট করতে, ব্যান্ডে ডাবল ক্লিক করুন। ফিল্টারিং ভিজ্যুয়ালাইজেশন এবং মেট্রিক্স টেবিলে বহিরাগত অপসারণ করতে ব্যবহার করা যেতে পারে। লিনিয়ার স্কেলের পরিবর্তে লগারিদমিক স্কেলে স্যুইচ করতে গিয়ার আইকনে ক্লিক করুন।

  • ভিজ্যুয়ালাইজেশন মেনুতে "মেট্রিক্স হিস্টোগ্রাম" নির্বাচন করার চেষ্টা করুন

আরো স্লাইস

আমাদের প্রাথমিক tfma.EvalConfig একটি সম্পূর্ণ তালিকা নির্মিত slicing_specs , যা আমরা পাস আপডেট ফালি তথ্য ঠাহর করতে 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', '…

TFMA বৈশিষ্ট্যগুলির সমন্বয় বিশ্লেষণ করার জন্য বৈশিষ্ট্য ক্রস তৈরি করতেও সমর্থন করে। আমাদের মূল সেটিংস একটি ক্রস নির্মিত 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 বিভিন্ন মডেল রান এবং ব্যবহার TFMA কিভাবে তারা ব্যবহার তুলনা দেখতে 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.4.4) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.
WARNING:absl:Tensorflow version (2.4.4) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.
WARNING:absl:Tensorflow version (2.4.4) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.

প্রথমত, আমরা কল্পনা করব যে আমরা গতকাল আমাদের মডেলকে প্রশিক্ষিত এবং স্থাপন করেছি, এবং এখন আমরা দেখতে চাই যে এটি আজকের নতুন ডেটাতে কীভাবে কাজ করছে। AUC প্রদর্শনের মাধ্যমে ভিজ্যুয়ালাইজেশন শুরু হবে। UI থেকে আপনি করতে পারেন:

  • "মেট্রিক সিরিজ যোগ করুন" মেনু ব্যবহার করে অন্যান্য মেট্রিক যোগ করুন।
  • x এ ক্লিক করে অবাঞ্ছিত গ্রাফ বন্ধ করুন
  • আরও বিশদ বিবরণ পেতে ডেটা পয়েন্টের উপর হোভার করুন (গ্রাফে লাইন সেগমেন্টের শেষ)
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': {'': {'': {'binary_accuracy': {'doubleValu…

এখন আমরা কল্পনা করব যে অন্য একটি দিন কেটে গেছে এবং আমরা দেখতে চাই যে এটি আগের দুই দিনের তুলনায় আজকের নতুন ডেটাতে কীভাবে কাজ করছে:

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': {'': {'': {'binary_accuracy': {'doubleValu…

মডেলের বৈধতা

একই সময়ে একাধিক মডেল মূল্যায়ন করার জন্য TFMA কনফিগার করা যেতে পারে। সাধারণত এটি একটি বেসলাইনের সাথে একটি নতুন মডেলের তুলনা করা হয় (যেমন বর্তমানে পরিবেশন করা মডেল) মেট্রিক্সে কর্মক্ষমতা পার্থক্যগুলি (যেমন AUC, ইত্যাদি) বেসলাইনের সাথে সম্পর্কিত তা নির্ধারণ করতে। যখন প্রান্তিক মান কনফিগার করা হয়, TFMA একটি উত্পাদন করা হবে tfma.ValidationResult কিনা তা নির্দেশ কর্মক্ষমতা expecations ম্যাচ রেকর্ড।

আসুন দুটি মডেলের তুলনা করার জন্য আমাদের কেরাস মূল্যায়ন পুনরায় কনফিগার করি: একটি প্রার্থী এবং একটি বেসলাইন৷ এছাড়াও আমরা একটি সেটিং দ্বারা বেসলাইন বিরুদ্ধে প্রার্থী এর পারফরম্যান্সের যাচাই করবে tmfa.MetricThreshold AUC মেট্রিক উপর।

# Setup tfma.EvalConfig setting
eval_config_with_thresholds = text_format.Parse("""
  ## Model information
  model_specs {
    name: "candidate"
    # For keras we need to add a `label_key`.
    label_key: "big_tipper"
  }
  model_specs {
    name: "baseline"
    # For keras we need to add a `label_key`.
    label_key: "big_tipper"
    is_baseline: true
  }

  ## Post training metric information
  metrics_specs {
    metrics { class_name: "ExampleCount" }
    metrics { class_name: "BinaryAccuracy" }
    metrics { class_name: "BinaryCrossentropy" }
    metrics {
      class_name: "AUC"
      threshold {
        # Ensure that AUC is always > 0.9
        value_threshold {
          lower_bound { value: 0.9 }
        }
        # Ensure that AUC does not drop by more than a small epsilon
        # e.g. (candidate - baseline) > -1e-10 or candidate > baseline - 1e-10
        change_threshold {
          direction: HIGHER_IS_BETTER
          absolute { value: -1e-10 }
        }
      }
    }
    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_keys: ["trip_start_month"]
  }
  slicing_specs {
    feature_keys: ["trip_start_hour", "trip_start_day"]
  }
""", tfma.EvalConfig())

# Create tfma.EvalSharedModels that point at our keras models.
candidate_model_path = os.path.join(MODELS_DIR, 'keras', '2')
baseline_model_path = os.path.join(MODELS_DIR, 'keras', '1')
eval_shared_models = [
  tfma.default_eval_shared_model(
      model_name=tfma.CANDIDATE_KEY,
      eval_saved_model_path=candidate_model_path,
      eval_config=eval_config_with_thresholds),
  tfma.default_eval_shared_model(
      model_name=tfma.BASELINE_KEY,
      eval_saved_model_path=baseline_model_path,
      eval_config=eval_config_with_thresholds),
]

validation_output_path = os.path.join(OUTPUT_DIR, 'validation')

# Run TFMA
eval_result_with_validation = tfma.run_model_analysis(
    eval_shared_models,
    eval_config=eval_config_with_thresholds,
    data_location=tfrecord_file,
    output_path=validation_output_path)
WARNING:absl:Tensorflow version (2.4.4) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Make sure that locally built Python SDK docker image has Python 3.7 interpreter.

একটি বেসলাইনের বিপরীতে এক বা একাধিক মডেলের সাথে মূল্যায়ন চালানোর সময়, TFMA স্বয়ংক্রিয়ভাবে মূল্যায়নের সময় গণনা করা সমস্ত মেট্রিকের জন্য ভিন্ন মেট্রিক যোগ করে। এই বৈশিষ্ট্যের মান সংশ্লিষ্ট মেট্রিক কিন্তু নামকরণ করা হয় _diff মেট্রিক নামের যোগ।

আসুন আমাদের রান দ্বারা উত্পাদিত মেট্রিক্স একবার দেখে নেওয়া যাক:

tfma.view.render_time_series(eval_result_with_validation)
TimeSeriesViewer(config={'isModelCentric': True}, data=[{'metrics': {'': {'': {'binary_accuracy': {'doubleValu…

এখন আমাদের ভ্যালিডেশন চেক থেকে আউটপুট দেখি। বৈধকরণ ফলাফল আমরা ব্যবহার দেখতে tfma.load_validator_result । আমাদের উদাহরণের জন্য, বৈধতা ব্যর্থ হয় কারণ AUC থ্রেশহোল্ডের নীচে।

validation_result = tfma.load_validation_result(validation_output_path)
print(validation_result.validation_ok)
False