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 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_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 .