Unisciti alla comunità SIG TFX-Addons e contribuisci a rendere TFX ancora migliore!

Configurazione di un modello salvato di valutazione

TensorFlow Model Analysis (TFMA) può esportare un grafico di valutazione del modello in uno speciale SavedModel chiamato EvalSavedModel . (Si noti che viene utilizzato il grafico di valutazione e non il grafico per l'addestramento o l'inferenza.) EvalSavedModel contiene informazioni aggiuntive che consentono a TFMA di calcolare le stesse metriche di valutazione definite nel modello in modo distribuito su una grande quantità di dati e definite dall'utente fette.

Modifica un modello esistente

Per utilizzare un modello esistente con TFMA, modificare prima il modello per esportare EvalSavedModel . Questo viene fatto aggiungendo una chiamata a tfma.export.export_eval_savedmodel ed è simile a estimator.export_savedmodel . Per esempio:

# 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 deve essere definito ed è simile a serving_input_receiver_fn per estimator.export_savedmodel . Come serving_input_receiver_fn , la funzione eval_input_receiver_fn definisce un esempio di segnaposto di input, analizza le funzionalità dell'esempio e restituisce le funzionalità analizzate. Analizza e restituisce l'etichetta.

Il frammento di eval_input_receiver_fn seguente definisce un esempio 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'])

In questo esempio puoi vedere che:

  • labels possono anche essere un dizionario. Utile per un modello a più teste.
  • La funzione eval_input_receiver_fn , molto probabilmente, sarà la stessa della funzione serving_input_receiver_fn . Tuttavia, in alcuni casi, potresti voler definire funzionalità aggiuntive per l'affettatura. Ad esempio, introduci una funzione age_category che divide la funzione age in più segmenti. Puoi quindi suddividere questa funzione in TFMA per capire in che modo le prestazioni del tuo modello differiscono nelle diverse categorie di età.

Aggiunta di metriche di esportazione post

È possibile aggiungere metriche aggiuntive non incluse nel modello utilizzando add_metrics_callbacks . Per maggiori dettagli, vedere la guida di Python per run_model_analysis .

Esempi end-to-end

Prova l'esempio completo end-to-end con TensorFlow Transform per la preelaborazione delle funzionalità, TensorFlow Estimators per l'addestramento, TensorFlow Model Analysis e Jupyter per la valutazione e TensorFlow Serving per la pubblicazione.

Aggiunta di una metrica di esportazione post personalizzata

Se desideri aggiungere la tua metrica di esportazione post personalizzata in TFMA, controlla la documentazione qui .