RESTful API 调用

关于 caicloud.clever.serving.client.RESTfulClient 类

TaaS 平台的本地开发包 caicloud.tensorflow 提供 caicloud.clever.serving.client.RESTfulClient 类用于调用模型托管 Serving 的 RESTful API。

RESTfulClient 类提供了下面两个方法:

  • __init__(host)

    创建一个 Serving RESTful API 请求客户端对象。

    参数 host 为托管模型 Serving RESTful API 服务地址。

  • call_predict(inputs, output_filter=None)

    执行 RESTful API 请求,执行托管模型的预测方法。

    参数 inputs 为输入 tensor 别名到实际输入值的字典;

    参数 output_filter 用于过滤托管模型计算的输出 tensor,默认为 None,表示计算所有输出 tensor。

    返回最终托管模型计算的输出 tensor 别名到实际输出值的字典。

如果还没有安装 caicloud.tensorflow 包,则通过下面命令进行安装,

$ sudo pip install caicloud.tensorflow

mnist-serving 的 RESTful Client

我们使用 caicloud.clever.serving.client.RESTfulClient 来实现访问模型托管 mnist-serving RESTful API 的 client 端代码,

import tensorflow as tf
from caicloud.clever.serving.client import restful_client
from caicloud.clever.serving.client import serving_error
from tensorflow.contrib.learn.python.learn.datasets.mnist import read_data_sets as input_data

client = restful_client.RESTfulClient('192.168.16.42:32638')

# loading mnist data
print("Loading mnist data...")
mnist = input_data("/tmp/mnist-data", one_hot=True)

# prepare request input data
input_data = mnist.test.images[0]
input_data_shape = [1, mnist.test.images[0].size]
inputs = {
    'image': tf.contrib.util.make_tensor_proto(input_data, shape=input_data_shape),
}

try:
    # call client.call_predict() to do model predict. 
    outputs = client.call_predict(inputs)

    # get output: logits
    result = tf.contrib.util.make_ndarray(outputs["logits"])
    print('logits: {0}'.format(result))
except serving_error.ServingRESTfulError as e:
    print('serving error,\n  status: {0},\n  reason: {1},\n  body: {2}'.format(e.status, e.reason, e.body))

将上面代码保存到 restful_clieint.py 文件,然后运行,

bash-3.2$ python restful_client.py 
Loading mnist data...
Extracting /tmp/mnist-data/train-images-idx3-ubyte.gz
Extracting /tmp/mnist-data/train-labels-idx1-ubyte.gz
Extracting /tmp/mnist-data/t10k-images-idx3-ubyte.gz
Extracting /tmp/mnist-data/t10k-labels-idx1-ubyte.gz
logits: [[-0.37270582 -7.31677485 -0.04589005  2.54814148 -2.60255098 -1.18702579
  -5.90019894  8.67759323 -0.52831918  2.18874288]]

更多使用细节可以参考 caicloud/tensorflow-tutorial 中提供的三个样例代码。

results matching ""

    No results matching ""