این صفحه به‌وسیله ‏Cloud Translation API‏ ترجمه شده است.
Switch to English

تجزیه و تحلیل مدل TensorFlow

نمونه ای از یک جزء کلیدی از TensorFlow تمدید یا TFX

این نوت بوک به عنوان مثال COLAB نشان میدهد که چگونه TensorFlow مدل تجزیه و تحلیل (TFMA) را می توان به بررسی و تجسم ویژگی های یک مجموعه داده و عملکرد یک مدل استفاده می شود. ما یک مدل استفاده خواهید که ما آموزش دیده پیش از این، و در حال حاضر شما به بازی با نتایج این

مدل ما به آموزش دیده برای بود شیکاگو تاکسی به عنوان مثال ، که با استفاده از تاکسی سفر مجموعه داده های منتشر شده توسط شهر شیکاگو.

ادامه مطلب در مورد مجموعه داده در Google BigQuery مشاهده . کاوش در مجموعه داده کامل در UI BigQuery مشاهده .

ستون در مجموعه داده ها عبارتند از:

pickup_community_area کرایه trip_start_month
trip_start_hour trip_start_day trip_start_timestamp
pickup_latitude pickup_longitude dropoff_latitude
dropoff_longitude trip_miles pickup_census_tract
dropoff_census_tract نوع پرداخت شرکت
trip_seconds dropoff_community_area نکات

نصب برنامه های افزودنی Jupyter

 jupyter nbextension enable --py widgetsnbextension
jupyter nbextension install --py --symlink tensorflow_model_analysis
jupyter nbextension enable --py tensorflow_model_analysis
 

نصب تجزیه و تحلیل مدل TensorFlow (TFMA)

این در تمام وابستگیها بکشد، و یک دقیقه طول بکشد. لطفا هشدارهای نادیده گرفت.

 import sys

# Confirm that we're using Python 3
assert sys.version_info.major is 3, 'Oops, not running Python 3. Use Runtime > Change runtime type'
 
 import tensorflow as tf
print('TF version: {}'.format(tf.__version__))

print('Installing Apache Beam')
!pip install -Uq apache_beam==2.17.0
import apache_beam as beam
print('Beam version: {}'.format(beam.__version__))

# Install TFMA
# This will pull in all the dependencies, and will take a minute
# Please ignore the warnings
!pip install -q tensorflow-model-analysis==0.21.3

import tensorflow as tf
import tensorflow_model_analysis as tfma
print('TFMA version: {}'.format(tfma.version.VERSION_STRING))
 
TF version: 2.2.0
Installing Apache Beam
Beam version: 2.17.0
ERROR: tfx-bsl 0.22.1 has requirement apache-beam[gcp]<3,>=2.20, but you'll have apache-beam 2.17.0 which is incompatible.
ERROR: tfx-bsl 0.22.1 has requirement pyarrow<0.17,>=0.16.0, but you'll have pyarrow 0.15.1 which is incompatible.
ERROR: tfx-bsl 0.22.1 has requirement tensorflow-metadata<0.23,>=0.22.2, but you'll have tensorflow-metadata 0.21.2 which is incompatible.

Error importing tfx_bsl_extension.coders. Some tfx_bsl functionalities are not available
TFMA version: 0.21.3

لود کردن فایل ها

ما یک فایل tar است که همه چیز ما نیاز دانلود کنید. که شامل:

  • آموزش و ارزیابی مجموعه داده
  • طرح داده
  • آموزش نتایج به عنوان EvalSavedModels
 # Download the tar file from GCP and extract it
import io, os, tempfile
BASE_DIR = tempfile.mkdtemp()
TFMA_DIR = os.path.join(BASE_DIR, 'eval_saved_models-0.15.0')
DATA_DIR = os.path.join(TFMA_DIR, 'data')
OUTPUT_DIR = os.path.join(TFMA_DIR, 'output')
SCHEMA = os.path.join(TFMA_DIR, 'schema.pbtxt')

!wget https://storage.googleapis.com/artifacts.tfx-oss-public.appspot.com/datasets/eval_saved_models-0.15.0.tar
!tar xf eval_saved_models-0.15.0.tar
!mv eval_saved_models-0.15.0 {BASE_DIR}
!rm eval_saved_models-0.15.0.tar

print("Here's what we downloaded:")
!ls -R {TFMA_DIR}
 
--2020-07-27 09:11:38--  https://storage.googleapis.com/artifacts.tfx-oss-public.appspot.com/datasets/eval_saved_models-0.15.0.tar
Resolving storage.googleapis.com (storage.googleapis.com)... 64.233.189.128, 108.177.97.128, 108.177.125.128, ...
Connecting to storage.googleapis.com (storage.googleapis.com)|64.233.189.128|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4311040 (4.1M) [application/x-tar]
Saving to: ‘eval_saved_models-0.15.0.tar’

eval_saved_models-0 100%[===================>]   4.11M  12.3MB/s    in 0.3s    

2020-07-27 09:11:39 (12.3 MB/s) - ‘eval_saved_models-0.15.0.tar’ saved [4311040/4311040]

Here's what we downloaded:
/tmp/tmpgq6r13oe/eval_saved_models-0.15.0:
data  run_0  run_1  run_2  schema.pbtxt

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/data:
eval  train

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/data/eval:
data.csv

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/data/train:
data.csv

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0:
eval_model_dir

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir:
1578507304

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304:
assets  saved_model.pb  variables

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304/assets:
vocab_compute_and_apply_vocabulary_1_vocabulary
vocab_compute_and_apply_vocabulary_vocabulary

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304/variables:
variables.data-00000-of-00001  variables.index

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1:
eval_model_dir

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1/eval_model_dir:
1578507304

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1/eval_model_dir/1578507304:
assets  saved_model.pb  variables

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1/eval_model_dir/1578507304/assets:
vocab_compute_and_apply_vocabulary_1_vocabulary
vocab_compute_and_apply_vocabulary_vocabulary

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1/eval_model_dir/1578507304/variables:
variables.data-00000-of-00001  variables.index

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2:
eval_model_dir

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2/eval_model_dir:
1578507304

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2/eval_model_dir/1578507304:
assets  saved_model.pb  variables

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2/eval_model_dir/1578507304/assets:
vocab_compute_and_apply_vocabulary_1_vocabulary
vocab_compute_and_apply_vocabulary_vocabulary

/tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2/eval_model_dir/1578507304/variables:
variables.data-00000-of-00001  variables.index

تجزیه طرحواره

از جمله چیزهایی که ما دانلود یک طرح برای داده های ما که با ایجاد شد TensorFlow داده ها اعتبار . تجزیه بیایید که در حال حاضر به طوری که ما می توانیم آن را با TFMA استفاده کنید.

 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 len(line[key]) > 0:
      if feature.type == schema_pb2.FLOAT:
        example.features.feature[key].float_list.value[:] = [float(line[key])]
      elif feature.type == schema_pb2.INT:
        example.features.feature[key].int64_list.value[:] = [int(line[key])]
      elif feature.type == schema_pb2.BYTES:
        example.features.feature[key].bytes_list.value[:] = [line[key].encode('utf8')]
    else:
      if feature.type == schema_pb2.FLOAT:
        example.features.feature[key].float_list.value[:] = []
      elif feature.type == schema_pb2.INT:
        example.features.feature[key].int64_list.value[:] = []
      elif feature.type == schema_pb2.BYTES:
        example.features.feature[key].bytes_list.value[:] = []
  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())
  writer.flush()
  writer.close()

!ls {TFRecord_file}
 
/tmp/tmpgq6r13oe/train_data.rio

اجرا TFMA و Render متریک

حالا ما آماده برای ایجاد یک تابع است که ما استفاده کنید برای اجرای TFMA و رندر معیارهای هستید. از آن نیاز به EvalSavedModel ، یک لیست از SliceSpecs ، و شاخص به لیست SliceSpec. این یک EvalResult با استفاده از ایجاد tfma.run_model_analysis ، و استفاده از آن برای ایجاد یک SlicingMetricsViewer با استفاده از tfma.view.render_slicing_metrics ، که یک تجسم از مجموعه داده را با استفاده از تکه ما ایجاد تصویر خواهد کشید.

 def run_and_render(eval_model=None, slice_list=None, slice_idx=0):
  """Runs the model analysis and renders the slicing metrics

  Args:
      eval_model: An instance of tf.saved_model saved with evaluation data
      slice_list: A list of tfma.slicer.SingleSliceSpec giving the slices
      slice_idx: An integer index into slice_list specifying the slice to use

  Returns:
      A SlicingMetricsViewer object if in Jupyter notebook; None if in Colab.
  """
  eval_result = tfma.run_model_analysis(eval_shared_model=eval_model,
                                          data_location=TFRecord_file,
                                          file_format='tfrecords',
                                          slice_spec=slice_list,
                                          output_path='sample_data',
                                          extractors=None)
  return tfma.view.render_slicing_metrics(eval_result, slicing_spec=slice_list[slice_idx])
 

برش و dicing

ما قبلا آموزش دیده یک مدل، و در حال حاضر ما نتایج لود. اجازه دهید یک نگاه تصویری ما، با استفاده از TFMA به تکه به همراه ویژگی های خاص شروع. اما در ابتدا ما نیاز به خواندن در EvalSavedModel از یکی از اجرا می شود آموزش های قبلی است.

  • برای تعریف تکه می خواهید به تجسم شما یک ایجاد tfma.slicer.SingleSliceSpec

  • برای استفاده از tfma.view.render_slicing_metrics شما هم می توانید نام ستون استفاده (با تنظیم slicing_column ) و یا ارائه یک tfma.slicer.SingleSliceSpec (با تنظیم slicing_spec )

  • اگر هیچ کدام ارائه شده است، مروری نمایش داده خواهد شد

نقشه های تعاملی عبارتند از:

  • کلیک کنید و کشیدن برای حرکت
  • حرکت به زوم
  • راست کلیک کنید برای تنظیم مجدد مشاهده

نگران نباشید، شناور بیش از نقطه داده های مورد نظر برای دیدن جزئیات بیشتر. از چهار نوع مختلف از قطعه با استفاده از انتخاب در پایین انتخاب کنید.

به عنوان مثال، ما می شود تنظیم slicing_column به در نگاه trip_start_hour ویژگی در ما SliceSpec .

 # Load the TFMA results for the first training run
# This will take a minute
eval_model_base_dir_0 = os.path.join(TFMA_DIR, 'run_0', 'eval_model_dir')
eval_model_dir_0 = os.path.join(eval_model_base_dir_0, next(os.walk(eval_model_base_dir_0))[1][0])
eval_shared_model_0 = tfma.default_eval_shared_model(eval_saved_model_path=eval_model_dir_0)

# Slice our data by the trip_start_hour feature
slices = [tfma.slicer.SingleSliceSpec(columns=['trip_start_hour'])]

run_and_render(eval_model=eval_shared_model_0, slice_list=slices, slice_idx=0)
 
WARNING:tensorflow:Tensorflow version (2.2.0) 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/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304/variables/variables

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304/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.

Warning:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.

Warning:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py:1666: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version.
Instructions for updating:
If using Keras pass *_constraint arguments to layers.
WARNING:root: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_and_plots_serialization.py:125: 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_and_plots_serialization.py:125: 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)`

SlicingMetricsViewer(config={'weightedExamplesColumn': 'post_export_metrics/example_count'}, data=[{'slice': '…

برشها نمای کلی

تجسم پیش فرض برش نمای کلی است که تعداد برش کوچک است. این مقادیر متریک برای هر قطعه را نشان می دهد. از آنجا که ما را انتخاب کرده اید trip_start_hour بالا، آن را به ما نشان معیارهای مانند دقت و AUC برای هر ساعت، که اجازه می دهد تا ما را به برای مسائل هستند که خاص به چند ساعت و نه دیگران نگاه کنید.

در تجسم بالا:

  • سعی کنید مرتب سازی ستون ویژگی است که ما trip_start_hours ویژگی، با کلیک کردن بر روی عنوان ستون
  • سعی کنید مرتب سازی بر اساس دقت و توجه کنید که دقت برای برخی از ساعت با نمونه 0 است، که ممکن است یک مشکل نشان می دهد

در این بخش همچنین اجازه می دهد تا ما را به انتخاب و نمایش معیارهای مختلف در برش است.

  • سعی کنید انتخاب معیارهای متفاوتی را "نمایش" منو
  • سعی کنید انتخاب فراخوان در "نمایش" منو، و توجه کنید که فراخوان برای برخی از ساعت با نمونه های 0، که ممکن است نشان دهنده یک مشکل است

همچنین ممکن است به مجموعه آستانه برای فیلتر کردن برش و تعداد کمتری از نمونه، و یا "وزن". شما می توانید حداقل تعداد نمونه را تایپ کنید، و یا استفاده از نوار لغزنده.

متریک هیستوگرام

این دیدگاه همچنین پشتیبانی از متریک هیستوگرام به عنوان یک تجسم جایگزین، که آن هم به نمای پیش فرض زمانی که تعدادی از برش بزرگ است. نتایج خواهد شد به سطل تقسیم شده است و تعداد برش / مجموع وزن / هر دو را می توان مشاهده. ستون ها را می توان با کلیک کردن بر روی عنوان ستون طبقه بندی شده اند. برشها با وزن کوچک می تواند باشد که با تنظیم آستانه فیلتر شده است. فیلتر بیشتر را می توان با کشیدن باند خاکستری استفاده می شود. برای تنظیم مجدد وسیعی، دوبار کلیک کنید باند. تصفیه آب و تصفیه نیز می توانید استفاده به حذف نقاط دورافتاده در تجسم و جداول معیارهای. روی نماد چرخ دنده را برای تغییر به یک مقیاس لگاریتمی به جای مقیاس خطی است.

  • سعی کنید انتخاب "متریک هیستوگرام" در منوی تصویرسازی عبارت است از

برشها بیشتر

بیایید ایجاد یک لیست کامل از SliceSpec بازدید کنندگان، که به ما اجازه خواهد انتخاب هر یک از برش در لیست. ما را انتخاب کنید trip_start_day تکه (روزهای هفته) با تنظیم slice_idx به 1 . سعی کنید تغییر slice_idx به 0 یا 2 و در حال اجرا دوباره به بررسی برش متفاوت است.

 slices = [tfma.slicer.SingleSliceSpec(columns=['trip_start_hour']),
          tfma.slicer.SingleSliceSpec(columns=['trip_start_day']),
          tfma.slicer.SingleSliceSpec(columns=['trip_start_month'])]
run_and_render(eval_model=eval_shared_model_0, slice_list=slices, slice_idx=1)
 
WARNING:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Deleting 1 existing files in target path matching: 
WARNING:root:Deleting 1 existing files in target path matching: 
WARNING:root:Deleting 1 existing files in target path matching: 

SlicingMetricsViewer(config={'weightedExamplesColumn': 'post_export_metrics/example_count'}, data=[{'slice': '…

شما می توانید شمشیر برای نابودی وسایل از ویژگی های ایجاد به تجزیه و تحلیل ترکیب از ویژگی های. بیایید ایجاد یک SliceSpec به یک صلیب از نگاه trip_start_day و trip_start_hour :

 slices = [tfma.slicer.SingleSliceSpec(columns=['trip_start_day', 'trip_start_hour'])]
run_and_render(eval_shared_model_0, slices, 0)
 
WARNING:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Deleting 1 existing files in target path matching: 
WARNING:root:Deleting 1 existing files in target path matching: 
WARNING:root:Deleting 1 existing files in target path matching: 

SlicingMetricsViewer(config={'weightedExamplesColumn': 'post_export_metrics/example_count'}, data=[{'slice': '…

عبور از دو ستون ایجاد بسیاری از ترکیب! بیایید محدود کردن متقابل ما تنها نگاه سفرهایی که در ظهر شروع می شود. انتخاب کنید و سپس اجازه دهید accuracy از تجسم:

 slices = [tfma.slicer.SingleSliceSpec(columns=['trip_start_day'], features=[('trip_start_hour', 12)])]
run_and_render(eval_shared_model_0, slices, 0)
 
WARNING:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta
WARNING:root:Deleting 1 existing files in target path matching: 
WARNING:root:Deleting 1 existing files in target path matching: 
WARNING:root:Deleting 1 existing files in target path matching: 

SlicingMetricsViewer(config={'weightedExamplesColumn': 'post_export_metrics/example_count'}, data=[{'slice': '…

پیگیری مدل عملکرد در طول زمان

مجموعه داده های آموزشی خود را برای آموزش مدل خود را استفاده می شود، و امیدوارم نماینده مجموعه داده آزمون خود را و داده خواهد شد که به مدل خود را در تولید ارسال می شود. با این حال، در حالی که داده ها در درخواست استنتاج ممکن است همان داده های آموزشی خود باقی می ماند، در بسیاری از موارد آن شروع خواهد شد به تغییر به اندازه کافی به طوری که عملکرد مدل خود را تغییر خواهد کرد.

این بدان معناست که شما نیاز به نظارت و اندازه گیری عملکرد مدل شما به صورت مداوم، به طوری که شما می توانید به آگاهی و واکنش به تغییرات. اجازه دهید یک نگاهی به چگونگی TFMA تواند کمک کند.

اندازه گیری عملکرد برای داده های جدید

ما نتایج حاصل از سه اجرا می شود آموزش های مختلف بالا دانلود شده، بنابراین اجازه دهید بار آنها را در حال حاضر و استفاده از TFMA به دیدن آنها چگونه با استفاده از مقایسه render_time_series . ما می توانیم برش خاص به در نگاه کنید مشخص کنید. اجازه دهید مقایسه اجرا می شود آموزش های ما در سفرهایی که آغاز شده در ظهر.

  • انتخاب متریک از منوی کرکره ای برای اضافه کردن نمودار سری زمانی که متریک
  • نمودار ناخواسته نزدیک
  • شناور بیش از نقاط داده (در انتهای قطعات خط در نمودار) برای دریافت اطلاعات بیشتر
 def get_eval_result(base_dir, output_dir, data_loc, slice_spec):
  eval_model_dir = os.path.join(base_dir, next(os.walk(base_dir))[1][0])
  eval_shared_model = tfma.default_eval_shared_model(eval_saved_model_path=eval_model_dir)

  return tfma.run_model_analysis(eval_shared_model=eval_shared_model,
                                          data_location=data_loc,
                                          file_format='tfrecords',
                                          slice_spec=slice_spec,
                                          output_path=output_dir,
                                          extractors=None)

slices = [tfma.slicer.SingleSliceSpec()]
output_dir_0 = os.path.join(TFMA_DIR, 'output', 'run_0')
result_ts0 = get_eval_result(os.path.join(TFMA_DIR, 'run_0', 'eval_model_dir'),
                             output_dir_0, TFRecord_file, slices)
output_dir_1 = os.path.join(TFMA_DIR, 'output', 'run_1')
result_ts1 = get_eval_result(os.path.join(TFMA_DIR, 'run_1', 'eval_model_dir'),
                             output_dir_1, TFRecord_file, slices)
output_dir_2 = os.path.join(TFMA_DIR, 'output', 'run_2')
result_ts2 = get_eval_result(os.path.join(TFMA_DIR, 'run_2', 'eval_model_dir'),
                             output_dir_2, TFRecord_file, slices)
 
WARNING:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304/variables/variables

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_0/eval_model_dir/1578507304/variables/variables

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1/eval_model_dir/1578507304/variables/variables

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_1/eval_model_dir/1578507304/variables/variables

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

Warning:tensorflow:Tensorflow version (2.2.0) found. Note that TFMA support for TF 2.0 is currently in beta

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2/eval_model_dir/1578507304/variables/variables

INFO:tensorflow:Restoring parameters from /tmp/tmpgq6r13oe/eval_saved_models-0.15.0/run_2/eval_model_dir/1578507304/variables/variables

چگونه امروز آن را نگاه می کنید؟

ابتدا ما تصور کنید که ما را آموزش داده ام و مستقر دیروز مدل ما، و در حال حاضر ما می خواهیم تا ببینید که چگونه آن را به انجام بر روی داده های جدید که در امروز. تجسم با نمایش دقت شروع خواهد شد. اضافه کردن AUC و دادن به طور متوسط ​​با استفاده از "اضافه کردن سری متریک" منو.

 eval_results_from_disk = tfma.load_eval_results([output_dir_0, output_dir_1],
                                                tfma.constants.MODEL_CENTRIC_MODE)

tfma.view.render_time_series(eval_results_from_disk, slices[0])
 
TimeSeriesViewer(config={'isModelCentric': True}, data=[{'metrics': {'': {'': {'precision': {'doubleValue': 0.…

در حال حاضر ما تصور کنید که یک روز دیگر گذشت و ما خواهید ببینید که چگونه آن را به انجام بر روی داده های جدید که در امروز، نسبت به دو روز گذشته است. دوباره اضافه AUC و متوسط ​​از دست دادن با استفاده از "اضافه کردن سری متریک" منو:

 eval_results_from_disk = tfma.load_eval_results([output_dir_0, output_dir_1, output_dir_2],
                                                tfma.constants.MODEL_CENTRIC_MODE)

tfma.view.render_time_series(eval_results_from_disk, slices[0])
 
TimeSeriesViewer(config={'isModelCentric': True}, data=[{'metrics': {'': {'': {'label/mean': {'doubleValue': 0…