Configurazione di un modello salvato di valutazione

TensorFlow Model Analysis (TFMA) può esportare il grafico di valutazione di un 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 gli stessi parametri di valutazione definiti nel modello in modo distribuito su una grande quantità di dati e parametri definiti dall'utente. fette.

Modificare 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 . serving_input_receiver_fn , la funzione eval_input_receiver_fn definisce un esempio di segnaposto di input, analizza le funzionalità dall'esempio e restituisce le funzionalità analizzate. Analizza e restituisce l'etichetta.

Il seguente frammento 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 sarà, molto probabilmente, la stessa della serving_input_receiver_fn . Ma, in alcuni casi, potresti voler definire funzionalità aggiuntive per l'affettamento. Ad esempio, introduci una funzionalità age_category che divide la funzionalità age in più segmenti. Puoi quindi suddividere questa funzionalità in TFMA per comprendere in che modo le prestazioni del tuo modello differiscono nelle diverse categorie di età.

Aggiunta di metriche post-esportazione

È possibile aggiungere parametri aggiuntivi non inclusi nel modello utilizzando add_metrics_callbacks . Per ulteriori dettagli, consultare la guida di Python per run_model_analysis .

Esempi end-to-end

Prova l'ampio esempio 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 post-esportazione personalizzata

Se desideri aggiungere la tua metrica post-esportazione personalizzata in TFMA, consulta la documentazione qui .