Treten Sie der SIG TFX-Addons-Community bei und helfen Sie mit, TFX noch besser zu machen! SIG TFX-Addons beitreten

Konfigurieren eines gespeicherten Eval-Modells

TensorFlow Model Analysis (TFMA) kann das Bewertungsdiagramm eines Modells in ein spezielles SavedModel namens EvalSavedModel . (Beachten Sie, dass das Bewertungsdiagramm verwendet wird und nicht das Diagramm für Training oder Inferenz.) Das EvalSavedModel enthält zusätzliche Informationen, mit denen TFMA dieselben im Modell definierten Bewertungsmetriken über eine große Datenmenge verteilt und benutzerdefiniert berechnen kann Scheiben.

Ändern Sie ein vorhandenes Modell

Um ein vorhandenes Modell mit TFMA zu verwenden, ändern Sie zuerst das Modell, um das EvalSavedModel zu exportieren. Dies erfolgt durch Hinzufügen eines Aufrufs von tfma.export.export_eval_savedmodel und ähnelt dem estimator.export_savedmodel . Beispielsweise:

# 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 muss definiert werden und ist ähnlich der serving_input_receiver_fn für estimator.export_savedmodel . Wie serving_input_receiver_fn definiert die Funktion eval_input_receiver_fn ein Beispiel für einen Platzhalter, analysiert die Features aus dem Beispiel und gibt die analysierten Features zurück. Es analysiert und gibt das Etikett zurück.

Das folgende Snippet definiert ein Beispiel für 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 diesem Beispiel sehen Sie Folgendes:

  • labels können auch ein Wörterbuch sein. Nützlich für ein mehrköpfiges Modell.
  • Die Funktion eval_input_receiver_fn ist höchstwahrscheinlich dieselbe wie Ihre Funktion serving_input_receiver_fn . In einigen Fällen möchten Sie jedoch möglicherweise zusätzliche Funktionen zum Schneiden definieren. Beispielsweise führen Sie eine Funktion age_category die die Funktion age in mehrere Buckets unterteilt. Sie können diese Funktion dann in TFMA aufteilen, um zu verstehen, wie sich die Leistung Ihres Modells in verschiedenen Alterskategorien unterscheidet.

Hinzufügen von Post-Export-Metriken

Zusätzliche Metriken, die nicht im Modell enthalten sind, können mit add_metrics_callbacks add_metrics_callbacks . Weitere Informationen finden Sie in der Python-Hilfe zu run_model_analysis .

End-to-End-Beispiele

Probieren Sie das umfangreiche End-to-End-Beispiel mit TensorFlow Transform für die Vorverarbeitung von Features, TensorFlow Estimators für das Training, TensorFlow Model Analysis und Jupyter für die Bewertung und TensorFlow Serving für das Serving.

Hinzufügen einer benutzerdefinierten Post-Export-Metrik

Wenn Sie Ihre eigene benutzerdefinierte Post-Export-Metrik in TFMA hinzufügen möchten, lesen Sie bitte die Dokumentation hier .