Создание экземпляров или входных данных для TensorFlow Serving REST API

Я готов попробовать свой REST API TensorFlow Serving на основе сохраненной модели, и мне было интересно, есть ли простой способ генерировать экземпляры JSON (на основе строк) или входные данные (столбцы), которые мне нужно отправить с моим запрос.

У меня есть несколько тысяч функций в моей модели, и я бы не хотел вручную вводить JSON. Есть ли способ, которым я могу использовать существующие данные, чтобы получить сериализованные данные, которые я могу передать API прогнозирования?

Я использую TFX для всего конвейера (включая tf.Transform), поэтому я не уверен, есть ли в TFX изящный способ, который я мог бы использовать.

Вывод из saved_model_cli таков:

The given SavedModel SignatureDef contains the following input(s):
  inputs['examples'] tensor_info:
      dtype: DT_STRING
      shape: (-1)
      name: input_example_tensor:0

Что мне мало что говорит.


person Max Power    schedule 11.04.2019    source источник


Ответы (2)


Вы можете использовать клиент Python REST для программного вызова вместо того, чтобы составлять запрос вручную. Это пример кода в github tensorflow_serving:

https://github.com/tensorflow/serving/blob/master/tensorflow_serving/example/resnet_client.py

person Happy Gene    schedule 18.04.2019

Вы можете попробовать следующий код:

examples = []
for _, row in Inputs.iterrows():
  example = tf.train.Example()
  for col, value in row.iteritems():
    example.features.feature[col].float_list.value.append(value)
  examples.append(example)
print(examples)

Его вывод будет json, как показано ниже:

[features {
  feature {
    key: "PetalLength"
    value {
      float_list {
        value: 5.900000095367432
      }
    }
  }
  feature {
    key: "PetalWidth"
    value {
      float_list {
        value: 2.0999999046325684
      }
    }
  }
  feature {
    key: "SepalLength"
    value {
      float_list {
        value: 7.099999904632568
      }
    }
  }
  feature {
    key: "SepalWidth"
    value {
      float_list {
        value: 3.0
      }
    }
  }
}
]

Затем вы можете выполнить вывод, используя следующую команду:

curl -d '{"inputs":examples}' \
  -X POST http://localhost:8501/v1/models/1554294699:predict
person RakTheGeek    schedule 20.05.2019