Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#客户端的消费张量流服务初始模型(预测API)_Api_Tensorflow_Predict - Fatal编程技术网

使用C#客户端的消费张量流服务初始模型(预测API)

使用C#客户端的消费张量流服务初始模型(预测API),api,tensorflow,predict,Api,Tensorflow,Predict,几周来,我一直在尝试实现一个C#客户端应用程序来与Tensorflow服务服务器交互,但没有成功。我有一个成功运行的Python客户端,但我无法用C#复制它的功能。Python客户端 import requests #import json from keras.preprocessing.image import img_to_array, array_to_img, load_img from keras.preprocessing import image flowers = 'c:/f

几周来,我一直在尝试实现一个C#客户端应用程序来与Tensorflow服务服务器交互,但没有成功。我有一个成功运行的Python客户端,但我无法用C#复制它的功能。Python客户端

import requests
#import json
from keras.preprocessing.image import img_to_array, array_to_img, load_img
from keras.preprocessing import image

flowers = 'c:/flower_photos/cars/car1.jpg'
image1 = img_to_array(image.load_img(flowers, target_size=(128,128))) / 255
payload = {
      "instances": [{"image":image1.tolist()},
]
}
print("sending request...")
r = requests.post('http://localhost:8501/v1/models/flowers/versions/1:predict', json=payload)
print(r.content)
服务器响应正确。我使用的是Tensorflow版本1.12.0和相应的最新服务映像。他们都工作得很好

根据RESTAPI,API结构已经给出,但我一点也不清楚。我需要将图像发送到服务器。如何将图像负载添加到C#中的JSON请求中?在浏览了很多网站之后,我发现图像应该是base64string格式的

所以我把图像转换成base64

private string GetBase64ImageBytes(string ImagePath)
{
    using (Image image = Image.FromFile(ImagePath))
    {
        using (MemoryStream m = new MemoryStream())
        {
            image.Save(m, image.RawFormat);
            byte[] imageBytes = m.ToArray();

            // Convert byte[] to Base64 String
            string base64String = Convert.ToBase64String(imageBytes);
            return base64String;
        }
    }
}
请求部分如下:(服务器使用GET请求的元数据正确响应)

对于POST请求,我收到错误消息“远程服务器返回了一个错误:(400)错误请求”。服务器也会终止其服务。在《邮递员》里我得到了 详细错误信息如下:

{ "error": "Failed to process element: 0 key: image of \'instances\' list. Error: Invalid argument: JSON Value: {\n    \"b64\": \"/9j/4AAQSkZJRgABAQEAAAAAAAD/4QBSRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAZKGAAcAAAAcAAAALAAAAABVTklDT0RFAABBAHAAcABsAGUATQBhAHIAaw ... .....(image string data)
所以这感觉就像我发送了不正确的数据格式。 有人能告诉我这里怎么了吗?非常感谢图像转换和POST请求的任何示例。我在任何地方都找不到base64string格式是站点中图像的正确格式。Python客户机数据格式是不同的,因此需要知道任何参考文档的正确格式。
我在JAVA客户机上找到的最接近我的参考,但与我的不兼容,可能是因为TF版本不同。

希望做同样的事情。你找到解决办法了吗?@runningeek你们有人解决了吗?我也失败了。我最终将python脚本作为一个过程嵌入到C#中。@PCG不是很慢吗?是的,它是。我花了很多时间来获取它要求的Base64,但始终无法使其工作。然而,我的应用程序是批量处理的(几千张图片),所以加载60秒不是什么大问题。出于某种原因,它在Python中工作。
{ "error": "Failed to process element: 0 key: image of \'instances\' list. Error: Invalid argument: JSON Value: {\n    \"b64\": \"/9j/4AAQSkZJRgABAQEAAAAAAAD/4QBSRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAZKGAAcAAAAcAAAALAAAAABVTklDT0RFAABBAHAAcABsAGUATQBhAHIAaw ... .....(image string data)