Настройка сохраненной модели Eval

TensorFlow Модель анализа (TFMA) можно экспортировать график оценки модели, чтобы специальный SavedModel под названием EvalSavedModel . (Обратите внимание , что график оценки используется , а не график для подготовки или логического вывода) . В EvalSavedModel содержит дополнительную информацию , которая позволяет TFMA вычислить те же показатели оценки , определенные в модели распределенного способа в течение большого количества данных и определяемый пользователя ломтики.

Изменить существующую модель

Чтобы использовать существующую модель с TFMA, первым модифицировать модель для экспорта EvalSavedModel . Это делается путем добавления вызова tfma.export.export_eval_savedmodel и похож на estimator.export_savedmodel . Например:

# 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 должен быть определен и похож на serving_input_receiver_fn для estimator.export_savedmodel . Как serving_input_receiver_fn , то eval_input_receiver_fn функция определяет пример ввода - заполнитель, анализирует функцию из примера, и возвращает разобранную функцию. Он анализирует и возвращает метку.

Следующий фрагмент определяет пример 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'])

В этом примере вы можете увидеть, что:

  • labels также может быть словарем. Полезно для многоголовой модели.
  • eval_input_receiver_fn функция, скорее всего, будет таким же , как ваш serving_input_receiver_fn функции. Но в некоторых случаях вам может потребоваться определить дополнительные функции для нарезки. Например, ввести age_category функцию , которая делит age функцию на несколько ведер. Затем вы можете проанализировать эту функцию в TFMA, чтобы понять, как производительность вашей модели различается в разных возрастных категориях.

Добавление метрик экспорта сообщений

Дополнительные показатели, которые не включены в модели могут быть aded с помощью add_metrics_callbacks . Для получения более подробной информации, обратитесь к справке Python для run_model_analysis .

Сквозные примеры

Попробуйте обширный пример впритык с участием TensorFlow Transform для художественного предобработки, TensorFlow оценщиках для обучения, TensorFlow модели анализа и Jupyter для оценки и TensorFlow сервировки для обслуживания.

Добавление настраиваемой метрики экспорта сообщений

Если вы хотите добавить свой собственный пользовательский почтовый экспорт метрики в TFMA, пожалуйста , проверка документации здесь .