หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

TensorFlow รูปแบบการวิเคราะห์

ตัวอย่างขององค์ประกอบสำคัญของ TensorFlow ขยาย (TFX)

โน๊ตบุ๊คตัวอย่าง Colab นี้แสดงให้เห็นถึงวิธีการ TensorFlow รุ่นวิเคราะห์ (Tfma) สามารถนำมาใช้ในการตรวจสอบและเห็นภาพลักษณะของชุดข้อมูลและประสิทธิภาพการทำงานของรูปแบบที่ เราจะใช้รูปแบบที่เราได้รับการฝึกฝนมาก่อนหน้านี้และตอนนี้คุณจะได้รับที่จะเล่นกับผล!

รูปแบบที่เราได้รับการฝึกฝนเป็นสำหรับ ชิคาโกแท็กซี่ตัวอย่าง ซึ่งใช้ รถแท็กซี่การเดินทางชุดข้อมูลที่ ปล่อยออกมาจากเมืองชิคาโก

อ่านข้อมูลเพิ่มเติม เกี่ยวกับชุดข้อมูลใน Google BigQuery สำรวจชุดเต็มรูปแบบใน BigQuery UI

คอลัมน์ในชุดข้อมูลที่มี:

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 payment_type บริษัท
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

แยก Schema

ในสิ่งที่เราดาวน์โหลดมาเป็นสคีข้อมูลของเราที่ถูกสร้างขึ้นโดย TensorFlow การตรวจสอบข้อมูล แจง Let 's ว่าตอนนี้เพื่อให้เราสามารถใช้กับ 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 และแสดงผลตัวชี้วัด

ตอนนี้เราพร้อมที่จะสร้างฟังก์ชั่นที่เราจะใช้ในการทำงาน 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 ซึ่งอาจบ่งบอกถึงปัญหา

นอกจากนี้ยังเป็นไปได้ที่จะกำหนดเกณฑ์การกรองชิ้นที่มีขนาดเล็กจำนวนมากตัวอย่างหรือ "น้ำหนัก" คุณสามารถพิมพ์จำนวนขั้นต่ำของตัวอย่างหรือใช้แถบเลื่อน

ตัวชี้วัด Histogram

มุมมองนี้ยังสนับสนุนตัวชี้วัด Histogram เป็นการสร้างภาพทางเลือกซึ่งเป็นมุมมองเริ่มต้นเมื่อจำนวนของชิ้นที่มีขนาดใหญ่ ผลลัพธ์ที่ได้จะถูกแบ่งออกเป็นถังและจำนวนชิ้น / น้ำหนักรวม / ทั้งสามารถมองเห็น คอลัมน์สามารถจัดเรียงตามคลิกที่ส่วนหัวของคอลัมน์ ชิ้นที่มีน้ำหนักขนาดเล็กสามารถกรองออกโดยการตั้งค่าเกณฑ์ กรองเพิ่มเติมสามารถนำมาประยุกต์ใช้โดยการลากแถบสีเทา การรีเซ็ตช่วงดับเบิลคลิกวง กรองนอกจากนี้ยังสามารถใช้ในการลบค่าผิดปกติในการสร้างภาพและตารางเมตริก คลิกที่ไอคอนรูปเฟืองเพื่อสลับไปยังมาตราส่วนลอการิทึมแทนการวัดเชิงเส้น

  • ลองเลือก "ตัวชี้วัด Histogram" ในเมนูภาพแสดง

ชิ้นอื่น ๆ

ขอสร้างรายชื่อทั้งหมดของ SliceSpec s ซึ่งจะช่วยให้เราสามารถเลือกใด ๆ ของชิ้นในรายการ เราจะเลือก 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': '…

ข้ามสองคอลัมน์สร้างมากของการรวมกันเป็นคนแรก! Let 's แคบลงข้ามของเราที่จะมองเฉพาะในการเดินทางที่เริ่มต้นที่เที่ยง แล้วให้เลือกของ 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…