Как я могу отлаживать прогнозы на ML Engine, прогнозы возвращают пустой массив - PullRequest
2 голосов
/ 16 мая 2019

Я реализую конвейер TFX, аналогичный примеру чикагского такси. Прогноз модели с возвратом возвращает {"predictions": []}. Как мне отладить эту проблему?

Я вижу записи сделанных прогнозов. Но поскольку он возвращает пустой массив, код состояния равен 200, и нет никакой полезной информации о том, что пошло не так. Я ожидаю, что данные запроса прогноза не будут правильно переданы оценщику.

Пример Чикаго использует это в качестве приемника, и это работает. Я предполагаю, что это также должно работать для моего примера

def _example_serving_receiver_fn(transform_output, schema):
    """Build the serving in inputs.
    Args:
        transform_output: directory in which the tf-transform model was written
        during the preprocessing step.
        schema: the schema of the input data.
    Returns:
        Tensorflow graph which parses examples, applying tf-transform to them.
    """

    raw_feature_spec = _get_raw_feature_spec(schema)
    raw_feature_spec.pop(_LABEL_KEY)

    raw_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
        raw_feature_spec, default_batch_size=None)

    serving_input_receiver = raw_input_fn()

    transformed_features = transform_output.transform_raw_features(
        serving_input_receiver.features)

    return tf.estimator.export.ServingInputReceiver(
        transformed_features, serving_input_receiver.receiver_tensors)

Основное отличие состоит в том, что я ожидаю только 1 ввод: строку языков программирования, разделенных '|': 'java|python'.

Затем я разделяю эту строку в своей функции предварительной обработки и превращаю ее в массив с одним горячим кодированием формы 500 (у меня есть ровно 500 вариантов)

Может также случиться, что предсказание не будет правильно преобразовано с помощью tf transform. (преобразование tf является частью конвейера tfx и работает правильно)

запрос: {"instances": ["javascript|python"]}

ответ: {"predictions": []}

ожидаемый ответ: {"predictions": [520]} (это модель регрессии)

...