【问题标题】:TFX Evaluator problem with a keras multioutput modelkeras 多输出模型的 TFX 评估器问题
【发布时间】:2020-11-05 21:50:57
【问题描述】:

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

output = {key: tf.keras.layers.Dense(1, name = key)(x) 
          for key in _transformed_names(_LABEL_KEYS)} 

model(inputs, outputs) 

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

在我的代码中,我在tfma.ModelSpec 中设置了label_keys and prediction_keys 参数,其中包含一个表单列表:

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

似乎 proto 消息已正确创建,但是当我运行 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_keyprediction_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']

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

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

谢谢。

【问题讨论】:

    标签: python tensorflow keras tfx


    【解决方案1】:

    在 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
      )
    

    【讨论】:

    • 你能扩展你的答案吗?目前尚不清楚您的帖子如何回答 OP 的问题。
    猜你喜欢
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2019-04-28
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多