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ıklaserving_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 birage_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.