服务张量流模型的推理因浮点输入而失败

Inference on served tensorflow model fails with float input

我正在尝试 运行 推断所服务的张量流模型。更具体地说,通过 REST 发送 JSON 请求以获得预测。

我实际上只是在做这里概述的基本示例: https://www.tensorflow.org/serving/

一切正常,除了当我将 "instances" 输入更改为不以“.0”结尾的浮点数时,它失败了。

curl -d '{"instances": [1.1, 2.2, 5.3]}' \ -X POST http://localhost:8501/v1/models/half_plus_two:predict

{ "error": "Failed to process element: 0 of \'instances\' list. Error: Invalid argument: Cannot convert JSON value: 1.1 to float without loss of precision." }

尽管如此,对于我最终的模型,我将需要通过 JSON 请求传递浮点数。我还尝试使用 python 发送它,在发送请求时使用 simplejson 序列化 Decimal。

我假设它在尝试加载 JSON 时无法正确解析浮点数。这是必须在模型图中编码的东西吗? (请注意,我没有编写 graph/model 所以我不太熟悉它)

有什么想法吗?

我也刚遇到这个错误。它是 Tensorflow Serving 1.11 中的 bug,已经进行了修复,只是尚未发布。

要暂时解决此问题,您可以安装 Tensorflow Serving 映像的旧版本(标签 1.10.0),而不是最新版本。

docker pull tensorflow/serving:1.10.0

只是,请确保已删除最新图像并且 运行 是正确的版本标记,如下所示。

➜ docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
tensorflow/serving   1.10.0              a7b9844ed1ae        2 months ago        215MB

您的有效负载包含 float 的 curl 请求现在应该可以工作了。