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 :
-
labelspeuvent aussi être un dictionnaire. Utile pour un modèle à plusieurs têtes. - La fonction
eval_input_receiver_fnsera très probablement la même que votre fonctionserving_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_categoryqui divise la fonctionnalitéageen 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 .