TensorFlow Model Analysis (TFMA) puede exportar el gráfico de evaluación de un modelo a un SavedModel
especial llamado EvalSavedModel
. (Tenga en cuenta que se utiliza el gráfico de evaluación y no el gráfico para entrenamiento o inferencia). EvalSavedModel
contiene información adicional que permite a TFMA calcular las mismas métricas de evaluación definidas en el modelo de manera distribuida sobre una gran cantidad de datos y definidas por el usuario. rebanadas.
Modificar un modelo existente
Para utilizar un modelo existente con TFMA, primero modifique el modelo para exportar EvalSavedModel
. Esto se hace agregando una llamada a tfma.export.export_eval_savedmodel
y es similar a estimator.export_savedmodel
. Por ejemplo:
# 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
debe estar definido y es similar a serving_input_receiver_fn
para estimator.export_savedmodel
. Al igual que serving_input_receiver_fn
, la función eval_input_receiver_fn
define un ejemplo de marcador de posición de entrada, analiza las características del ejemplo y devuelve las características analizadas. Analiza y devuelve la etiqueta.
El siguiente fragmento define un ejemplo 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'])
En este ejemplo puedes ver que:
-
labels
también pueden ser un diccionario. Útil para un modelo de múltiples cabezas. - Lo más probable es que la función
eval_input_receiver_fn
sea la misma que su funciónserving_input_receiver_fn
. Pero, en algunos casos, es posible que desee definir funciones adicionales para el corte. Por ejemplo, introduce una funciónage_category
que divide la funciónage
en varios grupos. Luego puede dividir esta función en TFMA para ayudar a comprender cómo difiere el rendimiento de su modelo en las diferentes categorías de edad.
Agregar métricas posteriores a la exportación
Se pueden agregar métricas adicionales que no están incluidas en el modelo usando add_metrics_callbacks
. Para obtener más detalles, consulte la ayuda de Python para run_model_analysis
.
Ejemplos de un extremo a otro
Pruebe el extenso ejemplo de un extremo a otro que presenta TensorFlow Transform para el preprocesamiento de funciones, TensorFlow Estimators para capacitación, TensorFlow Model Analysis y Jupyter para evaluación, y TensorFlow Serving para entrega.
Agregar una métrica de exportación de publicaciones personalizada
Si desea agregar su propia métrica personalizada de exportación posterior en TFMA, consulte la documentación aquí .