Configuration d'un modèle enregistré d'évaluation

TensorFlow Model Analysis (TFMA) peut exporter le graphique d'évaluation d'un modèle vers un SavedModel spécial appelé EvalSavedModel . (Notez que le graphique d'évaluation est utilisé et non le graphique pour la formation ou l'inférence.) Le EvalSavedModel contient des informations supplémentaires qui permettent à TFMA de calculer les mêmes métriques d'évaluation définies dans le modèle de manière distribuée sur une grande quantité de données et définies par l'utilisateur. tranches.

Modifier un modèle existant

Pour utiliser un modèle existant avec TFMA, modifiez d'abord le modèle pour exporter le EvalSavedModel . Cela se fait en ajoutant un appel à tfma.export.export_eval_savedmodel et est similaire à estimator.export_savedmodel . Par exemple:

# 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 doit être défini et est similaire au serving_input_receiver_fn pour estimator.export_savedmodel . Comme serving_input_receiver_fn , la fonction eval_input_receiver_fn définit un exemple d'espace réservé d'entrée, analyse les fonctionnalités de l'exemple et renvoie les fonctionnalités analysées. Il analyse et renvoie l'étiquette.

L'extrait suivant définit un exemple eval_input_receiver_fn :

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'])

Dans cet exemple, vous pouvez voir que :

  • labels peuvent aussi être un dictionnaire. Utile pour un modèle à plusieurs têtes.
  • La fonction eval_input_receiver_fn sera très probablement la même que votre fonction serving_input_receiver_fn . Mais, dans certains cas, vous souhaiterez peut-être définir des fonctionnalités supplémentaires pour le découpage. Par exemple, vous introduisez une fonctionnalité age_category qui divise la fonctionnalité age en plusieurs compartiments. Vous pouvez ensuite exploiter cette fonctionnalité dans TFMA pour vous aider à comprendre comment les performances de votre modèle diffèrent selon les différentes catégories d'âge.

Ajout de métriques post-exportation

Des métriques supplémentaires qui ne sont pas incluses dans le modèle peuvent être ajoutées à l'aide add_metrics_callbacks . Pour plus de détails, consultez l'aide Python pour run_model_analysis .

Exemples de bout en bout

Essayez l' exemple complet de bout en bout comprenant TensorFlow Transform pour le prétraitement des fonctionnalités, TensorFlow Estimators pour la formation, TensorFlow Model Analysis et Jupyter pour l'évaluation, et TensorFlow Serving pour le service.

Ajout d'une métrique de post-exportation personnalisée

Si vous souhaitez ajouter votre propre métrique post-exportation personnalisée dans TFMA, veuillez consulter la documentation ici .