java - 使用 java 客户端使用张量流服务初始模型
问题描述
我所做的是,我在 Windows 上使用 Docker 部署了张量流服务。我在张量流服务中使用初始模型。它已启动并正在运行。现在,使用java,我想将图像从浏览器上传到这个在 tensorflow 服务中运行的初始模型,作为响应,我应该得到类名。
任何示例都会有所帮助。
解决方案
假设 Tensorflow Serving 1.11.0-rc1
(它在 中不起作用1.10.1
),请求 JSON 有效负载的形式为:
{
"inputs": {
"images": [{ "b64": "IMAGE_BASE64" }]
}
}
要预测的图像上的 Base64 编码在哪里IMAGE_BASE64
(通常是一个长字符串,因此此处未显示)。Java 客户端库需要为输入图像构建此有效负载。
然后,Java 客户端会将请求提交到以下端点:
POST /v1/models/inception:predict
您可能需要替换inception
为服务器上部署的模型的名称。
要尝试从 shell(从在 Docker 上运行的 Linux 或使用等效的 PowerShell 命令)针对可用的服务器localhost
(映射到 Docker Serving 容器公开的端口,此处8501
):
curl -d "@request.json" -X POST http://localhost:8501/v1/models/inception:predict
该request.json
文件包含本文开头的请求 JSON 负载。一个典型的回应:
{
"outputs": {
"classes": [
"class1",
"class2",
...
],
"scores": [
[
0.0321035,
0.905796,
...
]
]
}
}
重要提示:以上运行来自旧 Inception v3 模型(2015)的部署,在 Serving 时导出0.4.1
。不过,它与 Serving 配合得很好1.11.0-rc1
。如果您使用最新的导出脚本导出了模型,则可能存在细微差异(1.11.0-rc1
导出脚本在签名方面似乎没有不同)。所以这个答案可能对你不起作用,但只是让你走上解决问题的道路。
推荐阅读
- python - 如何匹配没有元音的单词?
- python - 你将如何提取或切片这样的字符串?
- c# - 使用多种图像类型并合并为 1 个 tiff 的策略
- python - 如何直接引用嵌套的 JSON 数据?
- c# - 使用变量调用方法
- java - 如何使用editText以(mm:ss)格式设置可变持续时间计时器?
- python - 为在子进程中运行的 python 功能测试运行假 redis
- javascript - 如何为同时更改文本的多个元素创建 javascript 显示/隐藏切换?
- java - 如何在 Spring-Kafka 中使用 Avro 序列化
- python - 没有这样的文件或目录:'results.txt'