¡El Día de la Comunidad de ML es el 9 de noviembre! Únase a nosotros para recibir actualizaciones de TensorFlow, JAX, y más Más información

Configuración de un modelo guardado de evaluación

TensorFlow Model Analysis (TFMA) puede exportar el gráfico de evaluación de un modelo a un modelo SavedModel especial llamado EvalSavedModel . (Tenga en cuenta que se utiliza el gráfico de evaluación y no el gráfico para el entrenamiento o la 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 definidos por el usuario. rodajas.

Modificar un modelo existente

Para usar 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 varias cabezas.
  • El eval_input_receiver_fn función será, muy probablemente, será el mismo que su serving_input_receiver_fn función. Pero, en algunos casos, es posible que desee definir características adicionales para el corte. Por ejemplo, introduce una característica age_category que divide la característica de age en varios grupos. 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

Las métricas adicionales que no están incluidas en el modelo se pueden add_metrics_callbacks 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 extremo a extremo con TensorFlow Transform para preprocesamiento de funciones, TensorFlow Estimators para entrenamiento, 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 de exportación de publicaciones personalizada en TFMA, consulte la documentación aquí .