keras多输出模型的TFX评估器问题

问题描述

我在TFX中使用非常简单的keras模型来解决回归问题。 看来TFX希望您使用带有命名输出的keras模型,所以我做了:

$ echo $?
0

我不明白评估者如​​何将数据集的标签名称与模型的输出名称映射。

在我的代码中,我在output = {key: tf.keras.layers.Dense(1,name = key)(x) for key in _transformed_names(_LABEL_KEYS)} model(inputs,outputs) 中用格式列表设置了label_keys and prediction_keys 参数:

tfma.ModelSpec

似乎正确创建了原始消息,但是当我运行评估程序时,出现以下错误

[["model output name","Label key in my Dataset"]]

如果我尝试使用ValueError: unable to prepare labels and predictions because the labels and/or predictions are dicts with unrecognized keys. If a multi-output keras model (or estimator) was used check that an output_name was provided. If an estimator was used check that common prediction keys were provided (e.g. logistic,probabilities,etc) label_key参数提供单个标签键和单个预测键,则会出现以下错误

prediction_key

我已经尝试了所有可能的方法,但是没有尝试。 有没有办法使用没有命名输出的模型(一个密集的输出层有多个节点)?还是解决这个问题的方法

P.S。是否有带有多输出keras模型的TFX管道的教程?

谢谢。

解决方法

在 eval_config 中,设置

options=Options(include_default_metrics=BoolValue(value=False))

例如:

  eval_config = tfma.EvalConfig(
      model_specs = [...],slicing_specs=[tfma.SlicingSpec(),...],metrics_specs=[...],options=Options(include_default_metrics=BoolValue(value=False))
      )
  evaluator = Evaluator(
      ...
      eval_config=eval_config
  )