0

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

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"]]

似乎原始消息已正确创建,但是当我运行 Evaluator 时,出现以下错误:

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如果我尝试使用and参数提供单个标签键和单个预测键,prediction_key则会收到以下错误:

TypeError: update_state() takes from 2 to 3 positional arguments but 4 were given [while running 'ExtractEvaluateAndWriteResults/ExtractAndEvaluate/EvaluateMetricsAndPlots/ComputeMetricsAndPlots()/ComputePerSlice/ComputeUnsampledMetrics/CombinePerSliceKey/WindowIntoDiscarding']

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

PS是否有具有多输出keras模型的TFX管道教程?

谢谢。

4

1 回答 1

-2

在 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
  )
于 2021-01-10T22:11:17.853 回答