Проблема TFX Evaluator в модели с несколькими выходами keras

Я использую очень простую модель keras в TFX, чтобы решить проблему регрессии. Кажется, что 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 и 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']

Я пробовал всеми возможными способами, но ничего. Есть ли способ использовать модель без именованных выходов (плотный выходной слой с более чем одним узлом)? Или способ решить эту проблему?

P.S. Есть ли учебники по конвейеру TFX с моделью keras с несколькими выходами?

Спасибо.


person TFX_123    schedule 05.11.2020    source источник


Ответы (1)


в eval_config, установив

options = Параметры (include_default_metrics = BoolValue (значение = False))

e.g:

  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
  )
person user8873449    schedule 10.01.2021
comment
Не могли бы вы расширить свой ответ? Непонятно, как ваш пост отвечает на вопрос ОП. - person Shane Bishop; 11.01.2021