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

شروع به کار با تجزیه و تحلیل مدل TensorFlow

  • برای : مهندسین یادگیری ماشین یا دانشمندان داده
  • کسانی که : می خواهند مدل های TensorFlow خود را تجزیه و تحلیل کنند و درک کنند
  • این یک کتابخانه مستقل یا مؤلفه خط لوله TFX است
  • که : مدلها را در مقادیر زیادی از داده ها به صورت توزیع شده در همان معیارهای تعریف شده در آموزش ارزیابی می کند. این معیارها بیش از برش داده ها مقایسه می شوند و در نوت بوک های Jupyter یا Colab تجسم می شوند.
  • برخلاف : برخی از ابزارهای درون نگری مدل مانند تانسورboard که درون نویسی مدل را ارائه می دهند

TFMA محاسبات خود را به روش توزیع شده در مقادیر زیادی از داده ها با استفاده از پرتو Apache انجام می دهد . بخش های زیر نحوه راه اندازی خط لوله ارزیابی اولیه TFMA را شرح می دهد. جزئیات بیشتر در مورد معماری را در مورد عملکرد اساسی مشاهده کنید.

انواع مدل پشتیبانی می شود

TFMA برای پشتیبانی از مدلهای مبتنی بر تنسور طراحی شده است ، اما به راحتی می تواند برای پشتیبانی از چهارچوبهای دیگر نیز پشتیبانی شود. از نظر تاریخی ، TFMA برای استفاده از TFMA نیاز به ایجاد یک EvalSavedModel ، اما آخرین نسخه TFMA بسته به نیاز کاربر از چندین مدل پشتیبانی می کند. راه اندازی یک EvalSavedModel تنها در صورتی لازم است که از یک مدل مبتنی بر tf.estimator استفاده شود و معیارهای آموزش زمان سفارشی مورد نیاز باشد.

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

جدول زیر مدل های پشتیبانی شده به طور پیش فرض را خلاصه می کند:

نوع مدل اندازه گیری زمان آموزش معیارهای آموزش پس از آموزش
TF2 (دوربین) Y * Y
TF2 (عمومی) N / A Y
EvalSavedModel (برآوردگر) Y Y
هیچکدام (pd.DataFrame و غیره) N / A Y
  • معیارهای آموزش زمان اشاره به معیارهایی دارد که در زمان آموزش تعریف شده اند و با مدل ذخیره می شوند (مدل TFMA EvalSavedModel یا keras مدل ذخیره شده). معیارهای آموزش پس از آموزش به معیارهای اضافه شده از طریق tfma.MetricConfig اشاره دارد.
  • مدل های عمومی TF2 مدل های سفارشی هستند که امضاها را صادر می کنند که می توانند برای استنتاج استفاده شوند و براساس دوربین یا برآوردگر انجام نشده اند.

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

مثال ها

ارزیابی مدل تک

موارد زیر از tfma.run_model_analysis برای انجام ارزیابی در مدل ارائه دهنده استفاده می کند. برای توضیح در مورد تنظیمات مختلف مورد نیاز ، راهنمای تنظیم را ببینید.

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics { class_name: "AUC" }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='/path/to/saved/model', eval_config=eval_config)

eval_result = tfma.run_model_analysis(
    eval_shared_model=eval_shared_model,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location='/path/to/file/containing/tfrecords',
    output_path='/path/for/output')

tfma.view.render_slicing_metrics(eval_result)

برای ارزیابی توزیع شده ، با استفاده از یک دونده توزیع شده ، یک خط لوله Apache Beam بسازید. در خط لوله از tfma.ExtractEvaluateAndWriteResults برای ارزیابی استفاده کنید و نتایج را بنویسید. نتایج را می توان برای تجسم با استفاده از tfma.load_eval_result .

مثلا:

# To run the pipeline.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics { class_name: "AUC" }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_model = tfma.default_eval_shared_model(
    eval_saved_model_path='/path/to/saved/model', eval_config=eval_config)

output_path = '/path/for/output'

with beam.Pipeline(runner=...) as p:
  _ = (p
       # You can change the source as appropriate, e.g. read from BigQuery.
       # This assumes your data is a TFRecords file containing records in the
       # tf.train.Example format.
       | 'ReadData' >> beam.io.ReadFromTFRecord(
           '/path/to/file/containing/tfrecords')
       | 'ExtractEvaluateAndWriteResults' >>
       tfma.ExtractEvaluateAndWriteResults(
            eval_shared_model=eval_shared_model,
            eval_config=eval_config,
            output_path=output_path))

# To load and visualize results.
# Note that this code should be run in a Jupyter Notebook.
result = tfma.load_eval_result(output_path)
tfma.view.render_slicing_metrics(result)

اعتبارسنجی مدل

برای انجام اعتبارسنجی مدل در برابر یک کاندیات و پایه ، پیکربندی را به روز کنید تا یک تنظیم آستانه را شامل شود و دو مدل را به tfma.run_model_analysis .

مثلا:

# Run in a Jupyter Notebook.
from google.protobuf import text_format

eval_config = text_format.Parse("""
  ## Model information
  model_specs {
    # This assumes a serving model with a "serving_default" signature.
    label_key: "label"
    example_weight_key: "weight"
  }
  ## Post export metric information
  metrics_specs {
    # This adds AUC and as a post training metric. If the model has built in
    # training metrics which also contains AUC, this metric will replace it.
    metrics {
      class_name: "AUC"
      threshold {
        value_threshold {
          lower_bound { value: 0.9 }
        }
        change_threshold {
          direction: HIGHER_IS_BETTER
          absolute { value: -1e-10 }
        }
      }
    }
    # ... other post training metrics ...

    # Plots are also configured here...
    metrics { class_name: "ConfusionMatrixPlot" }
  }
  ## Slicing information
  slicing_specs {}  # overall slice
  slicing_specs {
    feature_keys: ["age"]
  }
""", tfma.EvalConfig())

eval_shared_models = [
  tfma.default_eval_shared_model(
      model_name=tfma.CANDIDATE_KEY,
      eval_saved_model_path='/path/to/saved/candiate/model',
      eval_config=eval_config),
  tfma.default_eval_shared_model(
      model_name=tfma.BASELINE_KEY,
      eval_saved_model_path='/path/to/saved/baseline/model',
      eval_config=eval_config),
]

output_path = '/path/for/output'

eval_result = tfma.run_model_analysis(
    eval_shared_models,
    eval_config=eval_config,
    # This assumes your data is a TFRecords file containing records in the
    # tf.train.Example format.
    data_location='/path/to/file/containing/tfrecords',
    output_path=output_path)

tfma.view.render_slicing_metrics(eval_result)
tfma.load_validation_result(output_path)

تجسم

نتایج ارزیابی TFMA را می توان در یک نوت بوک Jupyter با استفاده از اجزای جلوی موجود در TFMA تجسم کرد. مثلا:

مرورگر متریک برش TFMA .

اطلاعات بیشتر