TensorFlow Model Analysis (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, чтобы понять, как производительность вашей модели различается в разных возрастных категориях.
Добавление метрик пост-экспорта
Дополнительные метрики, не включенные в модель, можно добавить с помощью add_metrics_callbacks
. Дополнительные сведения см. в справке Python для run_model_analysis
.
Комплексные примеры
Попробуйте обширный комплексный пример, включающий преобразование TensorFlow для предварительной обработки функций, оценщики TensorFlow для обучения, анализ модели TensorFlow и Jupyter для оценки и обслуживание TensorFlow для обслуживания.
Добавление пользовательской метрики экспорта сообщений
Если вы хотите добавить свою собственную метрику экспорта постов в TFMA, ознакомьтесь с документацией здесь .