Tensorflow modèle d' analyse (TFMA) peut exporter le graphique d'évaluation d'un modèle à un spécial SavedModel
appelé EvalSavedModel
. (Notez que le graphe d'évaluation est utilisée et non le graphique pour la formation ou l' inférence.) Le EvalSavedModel
contient des informations supplémentaires qui permet TFMA de calculer les mêmes paramètres d'évaluation définis dans le modèle d'une manière répartie 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, d' abord modifier le modèle à exporter le EvalSavedModel
. Cela se fait par l' ajout d' un appel à tfma.export.export_eval_savedmodel
et est similaire à estimator.export_savedmodel
. Par example:
# 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 à la serving_input_receiver_fn
pour estimator.export_savedmodel
. Comme serving_input_receiver_fn
, la eval_input_receiver_fn
fonction définit un exemple de paramètre fictif d'entrée, analyse les caractéristiques de l'exemple, et renvoie les caractéristiques analysé. 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 :
- les
labels
peuvent aussi être un dictionnaire. Utile pour un modèle à plusieurs têtes. - La
eval_input_receiver_fn
fonction, très probablement, être le même que votreserving_input_receiver_fn
fonction. Mais, dans certains cas, vous souhaiterez peut-être définir des fonctionnalités supplémentaires pour le tranchage. Par exemple, vous introduisez uneage_category
caractéristique qui divise l'age
caractéristique en plusieurs seaux. Vous pouvez ensuite trancher sur cette fonctionnalité dans TFMA pour aider à comprendre comment les performances de votre modèle diffèrent selon les différentes catégories d'âge.
Ajout de métriques de post-exportation
Des mesures supplémentaires qui ne sont pas inclus dans le modèle peuvent être Aded en utilisant add_metrics_callbacks
. Pour plus de détails, consultez l'aide en Python pour run_model_analysis
.
Exemples de bout en bout
Essayez le vaste exemple de bout en bout avec tensorflow Transformer pour pré - traitement de fonction, tensorflow Estimateurs pour la formation, tensorflow modèle d' analyse et Jupyter pour l' évaluation et tensorflow service pour le service.
Ajout d'une métrique de post-exportation personnalisée
Si vous voulez ajouter votre propre métrique de poste personnalisé à l'exportation TFMA, s'il vous plaît la caisse de la documentation ici .