使用java客户机消费张量流服务初始模型
我所做的是,我在Windows上使用Docker部署了tensor flow服务。我在张量流服务中使用初始模型。它正在运行。 现在,使用java,我想将图像从浏览器上传到运行在tensorflow服务中的这个inception模型,作为响应,我应该得到类名使用java客户机消费张量流服务初始模型,java,rest,spring-boot,tensorflow-serving,Java,Rest,Spring Boot,Tensorflow Serving,我所做的是,我在Windows上使用Docker部署了tensor flow服务。我在张量流服务中使用初始模型。它正在运行。 现在,使用java,我想将图像从浏览器上传到运行在tensorflow服务中的这个inception模型,作为响应,我应该得到类名 任何示例都会有所帮助。tensorflow服务是一种服务,因此请照此处理。不需要什么特别的东西。由于1.8 tensorflow服务提供REST API,因此只需从java应用程序向REST tensorflow服务发送http请求即可 在最
任何示例都会有所帮助。tensorflow服务是一种服务,因此请照此处理。不需要什么特别的东西。由于1.8 tensorflow服务提供REST API,因此只需从java应用程序向REST tensorflow服务发送http请求即可 在最近发布的一篇博客文章中,有一个简单的例子介绍了如何为MNIST设置REST tensorflow服务(但可用于任何模型):“tensorflow服务:REST vs gRPC”
剩下要做的就是根据您的模型(初始)签名创建REST请求。假设Tensorflow服务于
1.11.0-rc1
(它在1.10.1
中不起作用),请求JSON负载的形式是:
{
"inputs": {
"images": [{ "b64": "IMAGE_BASE64" }]
}
}
其中,IMAGE\u BASE64
是要预测的图像上的BASE64编码(通常是一个长字符串,此处未显示)。Java客户端库需要为输入映像构建此有效负载
然后,Java客户端将请求提交到以下端点:
POST /v1/models/inception:predict
您可能需要替换服务器上部署的型号名称的inception
要对
localhost
(映射到Docker服务容器公开的端口,此处为8501
)上可用的服务器从shell(从Docker上运行的Linux或使用等效的PowerShell命令)进行尝试,请执行以下操作:
request.json
文件包含本文开头的请求json负载。典型的反应是:
{
"outputs": {
"classes": [
"class1",
"class2",
...
],
"scores": [
[
0.0321035,
0.905796,
...
]
]
}
}
重要提示:上述运行来自旧的Inception v3模型(2015)的部署,在提供
0.4.1
时导出。不过,它在服务1.11.0-rc1
时工作得非常好。如果您使用最新的导出脚本导出了模型,则可能会有一些小的差异(1.11.0-rc1
在签名方面似乎没有差异)。因此,这个答案可能不适用于您,但只会让您找到解决问题的方法。这正是我一直在寻找的答案。我使用C#生成Base64图像字符串。不幸的是,当发布消息“evhttp_read_cb:非法连接状态7”时,服务器断开连接。当我看Keras中的PIL格式时,它的格式与C#中的B64格式确实不同。有什么帮助吗?
{
"outputs": {
"classes": [
"class1",
"class2",
...
],
"scores": [
[
0.0321035,
0.905796,
...
]
]
}
}