Modelo de Análisis TensorFlow (TFMA) puede exportar el gráfico de evaluación de un modelo para un especial de SavedModel
llamada EvalSavedModel
. (Tenga en cuenta que el gráfico de la evaluación se utiliza y no el gráfico para la formación o inferencia.) El EvalSavedModel
definido por el usuario contiene información adicional que permite TFMA para calcular las mismas métricas de evaluación definidos en el modelo de una manera distribuida sobre una gran cantidad de datos y rodajas.
Modificar un modelo existente
Para utilizar un modelo existente con TFMA, en primer lugar modificar el modelo para exportar el EvalSavedModel
. Esto se hace mediante la adición de 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 ser definido y es similar a la serving_input_receiver_fn
para estimator.export_savedmodel
. Como serving_input_receiver_fn
, la eval_input_receiver_fn
función define un ejemplo de marcador de posición de entrada, analiza las características del ejemplo, y devuelve las características analizada. 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 varias cabezas. - El
eval_input_receiver_fn
función será, muy probablemente, será el mismo que suserving_input_receiver_fn
función. Pero, en algunos casos, es posible que desee definir funciones adicionales para el corte. Por ejemplo, se introduce unage_category
característica que divide laage
característica en varios cubos. Luego, puede dividir esta función en TFMA para ayudar a comprender cómo el rendimiento de su modelo difiere en las diferentes categorías de edad.
Adición de métricas posteriores a la exportación
Métricas adicionales que no están incluidos en el modelo se pueden aded usando add_metrics_callbacks
. Para más detalles, consulte la ayuda de Python para run_model_analysis
.
Ejemplos de un extremo a otro
Prueba la extensa ejemplo de extremo a extremo que ofrece TensorFlow Transform para el preprocesamiento función, TensorFlow estimadores para la formación, Modelo de Análisis TensorFlow y Jupyter para la evaluación y TensorFlow Sirviendo para servir.
Agregar una métrica de exportación de publicaciones personalizada
Si desea añadir su métrica de exportación posterior costumbre en TFMA, por favor, pago y envío de la documentación aquí .