Bir Eval Kaydedilmiş Modelini Yapılandırma

TensorFlow Model Analizi (TFMA), bir modelin değerlendirme grafiğini EvalSavedModel adı verilen özel bir SavedModel aktarabilir. (Eğitim veya çıkarım için grafiğin değil, değerlendirme grafiğinin kullanıldığını unutmayın.) EvalSavedModel , TFMA'nın modelde tanımlanan aynı değerlendirme metriklerini büyük miktarda veri üzerinde dağıtılmış bir şekilde ve kullanıcı tanımlı olarak hesaplamasına olanak tanıyan ek bilgiler içerir. dilimler.

Mevcut bir modeli değiştirme

Mevcut bir modeli TFMA ile kullanmak için öncelikle EvalSavedModel dışa aktaracak şekilde modeli değiştirin. Bu, tfma.export.export_eval_savedmodel öğesine bir çağrı eklenerek yapılır ve estimator.export_savedmodel öğesine benzer. Örneğin:

# Define, train and export your estimator as usual
estimator = tf.estimator.DNNClassifier(...)
estimator.train(...)
estimator.export_savedmodel(...)

# Also export the EvalSavedModel
tfma.export.export_eval_savedmodel(
  estimator=estimator, export_dir_base=export_dir,
  eval_input_receiver_fn=eval_input_receiver_fn)

eval_input_receiver_fn tanımlanmalıdır ve estimator.export_savedmodel için serving_input_receiver_fn benzer. serving_input_receiver_fn gibi, eval_input_receiver_fn işlevi de bir giriş yer tutucu örneğini tanımlar, örnekteki özellikleri ayrıştırır ve ayrıştırılan özellikleri döndürür. Etiketi ayrıştırır ve döndürür.

Aşağıdaki kod parçası eval_input_receiver_fn örneğini tanımlar:

country = tf.feature_column.categorical_column_with_hash('country', 100)
language = tf.feature_column.categorical_column_with_hash('language', 100)
age = tf.feature_column.numeric_column('age')
label = tf.feature_column.numeric_column('label')

def eval_input_receiver_fn():
  serialized_tf_example = tf.compat.v1.placeholder(
      dtype=tf.string, shape=[None], name='input_example_placeholder')

  # This *must* be a dictionary containing a single key 'examples', which
  # points to the input placeholder.
  receiver_tensors = {'examples': serialized_tf_example}

  feature_spec =  tf.feature_column.make_parse_example_spec(
      [country, language, age, label])
  features = tf.io.parse_example(serialized_tf_example, feature_spec)

  return tfma.export.EvalInputReceiver(
    features=features,
    receiver_tensors=receiver_tensors,
    labels=features['label'])

Bu örnekte şunu görebilirsiniz:

  • labels aynı zamanda bir sözlük de olabilir. Çok başlı bir model için kullanışlıdır.
  • eval_input_receiver_fn işlevi büyük olasılıkla serving_input_receiver_fn işlevinizle aynı olacaktır. Ancak bazı durumlarda dilimleme için ek özellikler tanımlamak isteyebilirsiniz. Örneğin, age özelliğini birden fazla gruba bölen bir age_category özelliğini tanıtıyorsunuz. Daha sonra modelinizin performansının farklı yaş kategorilerinde nasıl farklılık gösterdiğini anlamanıza yardımcı olması için TFMA'daki bu özelliği kullanabilirsiniz.

Dışa Aktarma Sonrası Metrikleri Ekleme

Modele dahil olmayan ek metrikler add_metrics_callbacks kullanılarak eklenebilir. Daha fazla ayrıntı için run_model_analysis için Python yardımına bakın.

Uçtan uca örnekler

Özellik ön işleme için TensorFlow Transform'u , eğitim için TensorFlow Tahmin Edicilerini , değerlendirme için TensorFlow Model Analizi ve Jupyter'ı ve sunum için TensorFlow Serving'i içeren kapsamlı uçtan uca örneği deneyin.

Özel Gönderi Dışa Aktarma Metriği Ekleme

TFMA'ya kendi özel dışa aktarma sonrası metriğinizi eklemek istiyorsanız lütfen buradaki belgelere göz atın.