Tensorflow服务:无法进行base64解码



我使用瘦包resnet_v2_152来训练分类模型。然后将其导出到.pb文件以提供服务。因为输入是图像,所以它将使用网络安全的base64编码进行编码。它看起来像:

serialized_tf_example = tf.placeholder(dtype=tf.string, name='tf_example')decoded = tf.decode_base64(serialized_tf_example)

然后我用base64编码一个图像,这样:

img_path = '/Users/wuyanxue/Desktop/not_emoji1.jpeg'

img_b64 = base64.b64encode(open(img_path, 'rb').read())

s = str(img_b64, encoding='utf-8')

s = s.replace('+', '-').replace(r'/', '_')

我的帖子数据结构如下:post_data = { 'signature_name': 'predict', 'instances':[ { 'inputs': { 'b64': s } }] }最后,我向这个服务器发布了一个HTTP请求:

res = requests.post('server_address', json=post_data)

它给了我:

'{ "error": "Failed to process element: 0 key: inputs of \'instances\' list. Error: Invalid argument: Unable to base64 decode" }'

我想知道怎么会遇到它?有什么解决方案吗?

我在使用python3时遇到了同样的问题。我通过在encode函数中添加一个类似字节的对象"b"而不是默认的str来解决这个问题:b'{"instances" : [{"b64": "%s"}]}' % base64.b64encode( dl_request.content)

希望能有所帮助,请查看此答案以获取更多信息。

这个问题已经解决了。

post_data = {
'signature_name': 'predict',
'instances':[ { 
'inputs': 
{ 'b64': s }
}]
}

我们看到输入带有"b64"标志,这说明tensorflow服务将使用base64代码解码s。它属于tensorflow服务内部方法。因此,占位符:

serialized_tf_example = tf.placeholder(dtype=tf.string, name='tf_example')

将直接接收输入数据的二进制格式,而不是base64格式。

最后,

decoded = tf.decode_base64(serialized_tf_example)

没有必要。

相关内容

  • 没有找到相关文章

最新更新