配置评估保存模型

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_savedmodelserving_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 中添加自己的自定义导出后指标,请查看此处的文档。