Я пытался запустить простой пример оценщиков TensorFlow: официальная проблема классификации Iris и сохраненная модель с использованием этого кода , реализованного в этом учебном пособии .
TensorFlow предоставляет инструмент командной строки для проверки экспортированной модели, как показано ниже:
$ saved_model_cli show --dir export/1550568903/ \
> --tag_set serve --signature_def serving_default
The given SavedModel SignatureDef contains the following input(s):
inputs['inputs'] tensor_info:
dtype: DT_STRING
shape: (-1)
name: input_example_tensor:0
The given SavedModel SignatureDef contains the following output(s):
outputs['classes'] tensor_info:
dtype: DT_STRING
shape: (-1, 3)
name: dnn/head/Tile:0
outputs['scores'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 3)
name: dnn/head/predictions/probabilities:0
Method name is: tensorflow/serving/classify
Я установил tensorflow-model-server
и запустил сервер моделей, который поддерживает REST API:
$ apt-get install tensorflow-model-server
$ tensorflow_model_server --port=9000 --rest_api_port=9001 --model_base_path=/home/deploy/export
...
2019-02-22 11:36:44.989600: I tensorflow_serving/model_servers/server.cc:302] Exporting HTTP/REST API at:localhost:9001 ...
и затем я вызвал API REST ниже:
$ curl -d '{"inputs":[{"SepalLength":[5.1],"SepalWidth":[3.3],"PetalLength":[1.7],"PetalWidth":[0.5]}]}' \
-X POST http://localhost:9001/v1/models/default:predict
{"error": "Значение JSON: {\ n \" SepalLength \ ": [\ n 5.1 \ n], \ n \ "SepalWidth \": [\ n 3.3 \ n], \ n \ "PetalLength \": [\ n 1.7 \ n], \ n \ "PetalWidth \": [\ n 0.5 \ n] \ n} неправильно отформатирован для данных base64 "}
Произошла ошибка под названием" неправильно отформатирован для данных base64. "Итак, я кодировал входные данные следующим образом:
$ curl -d '{"inputs": [{"b64": "W3siU2VwYWxMZW5ndGgiOls1LjFdLCJTZXBhbFdpZHRoIjpbMy4zXSwiUGV0YWxMZW5ndGgiOlsxLjddLCJQZXRhbFdpZHRoIjpbMC41XX1d"}]}' \
-X POST http://localhost:9001/v1/models/default:predict
Тем не менее, по-прежнему существует следующая ошибка:
{"error": "Не удалось проанализировать пример ввода, значение: \ '[{\ "SepalLength \": [5.1], \ "SepalWidth \": [3.3], \ "PetalLength \": [1.7], \ "PetalWidth \": [0.5]}] \ '\ n \ t [[{{node ParseExample / ParseExample}} = ParseExample [Ndense = 4, Nsparse = 0, Tdense = [DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT], _output_shapes = [[?, 1], [?, 1], [?,1], [?, 1]], dens_shapes = [[1], [1], [1], [1]], sparse_types = [], _device = \ "/ job: localhost / replica: 0 / task:0 / устройство: ЦП: 0 \ "] (_arg_input_example_tensor_0_0, ParseExample / ParseExample / names, ParseExample / ParseExample / density_keys_0, ParseExample / ParseExample / dens_keys_1, ParseExample / ParseExample / density_keys_2, ParseExample плотный_пар, ParseExample / Const, ParseExample / Const)]] "}
Что я делаю не так?Как я могу вызвать REST API без ошибок?