TensorFlow Model Analysis (TFMA) 可以将模型的评估图导出到一个名为EvalSavedModel
的特殊SavedModel
。(请注意,使用的是评估图,而不是用于训练或推断的图。)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
必须定义,并且类似于estimator.export_savedmodel
的serving_input_receiver_fn
。与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
添加模型中未包含的额外指标。有关更多详细信息,请参阅run_model_analysis
的 Python 帮助。
端到端示例
尝试使用端到端示例,该示例包含TensorFlow Transform 用于特征预处理,TensorFlow Estimators 用于训练,TensorFlow Model Analysis 和 Jupyter 用于评估,以及TensorFlow Serving 用于服务。
添加自定义导出后指标
如果您想在 TFMA 中添加自己的自定义导出后指标,请查看此处的文档。