Tensorflow Serving: ожидает, что arg [0] будет с плавающей точкой, но предоставлена ​​строка - PullRequest
0 голосов
/ 14 февраля 2019

Tensorflow Serving возвращает сообщение об ошибке в заголовке, и я не понимаю, почему.Я вызываю его через API регресса, как показано в следующем фрагменте:

using RestSharp;
using Newtonsoft.Json;

var client_myclient = new RestClient("http://192.168.100.1:8501/v1/models/mymodel:regress");
// request preparation
json_prep.examples.Add( blah blah blah);
string json_prep_converted = JsonConvert.SerializeObject(json_prep, Formatting.Indented);
var req_ = new RestRequest(Method.POST);
req_.AddJsonBody(json_prep_converted);
// response
var res_mymodel = client_myclient.Execute(req_candle);

В моем сообщении об ошибке содержится следующий запрос, подтверждающий то, что я отправил;это только один пример, как показано ниже, за исключением того, что ... пропускает несколько записей:

{
  "examples": [
    {
      "a": [
        1.937336,
        ...
        -5.107522
      ],
      "b": [
        -0.704486,
        ...
        -6.868737
      ],
      "c": [
        2.817943,
        ...
        -4.226915
      ],
      "d": [
        -3.346308,
        -...
        -7.749344
      ],
      "e": [
        1.0625,
        -0.1875,
        ...
        -0.8125
      ],
      "f": [
        0.943968,
        -1.17052,
        ...
        0.641898
      ],
      "g": [
        0.22639801,
        ...
        0.19194462
      ],
      "h": [
        -1.449828,
        ...
        0.34936
      ],
      "i": [
        -50.61624,
        ...
        -17.362056
      ],
      "j": [
        0.148651,
        ...
        -0.228189
      ],
      "k": [
        0.16410813748132047,
        ...
        0.39454449551653981
      ],
      "l": [
        0.704047,
        ...
        -1.462873
      ],
      "m": [
        4.55,
        ...
        2.54
      ]
    }
  ]
}

Сообщение JSON было дважды проверено и не содержит строк, в которых я заменил тело списка... (И это не должно быть по определению)
Я пытаюсь следовать официальному руководству по этому .

Для получения более подробной информации, ошибка в необработанном формате:

"{ \"error\": \"Expects arg[0] to be float but string is provided\" }"

Как мне решить эту ошибку?

1 Ответ

0 голосов
/ 24 июня 2019

Можете ли вы проверить SignatureDefs этой модели с помощью команды

saved_model_cli show --dir /usr/local/google/home/abc/serving/tensorflow_serving/servables/tensorflow/testdata/saved_model_half_plus_two_cpu/00000123 --all

Поскольку вы сказали, что выполняете вывод для регрессионной подписи, определение подписи для вашей модели должно быть:

signature_def['regress_x_to_y']:
  The given SavedModel SignatureDef contains the following input(s):
    inputs['inputs'] tensor_info:
        dtype: DT_STRING
        shape: unknown_rank
        name: tf_example:0
  The given SavedModel SignatureDef contains the following output(s):
    outputs['outputs'] tensor_info:
        dtype: DT_FLOAT
        shape: (-1, 1)
        name: y:0
  Method name is: tensorflow/serving/regress

Я получил ошибку, аналогичную вашей, когда мой тип входных данных был DT_FLOAT вместо DT_STRING.

Регресс и классификация подписей предполагают, что тип входных данных будет DT_STRING (tf.examples).Таким образом, соответствующее изменение должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...