tfserving 之模型调用(python 版本)包含一次数据请求与batch 数据请求
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了tfserving 之模型调用(python 版本)包含一次数据请求与batch 数据请求,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2946字,纯文字阅读大概需要5分钟。
内容图文
![tfserving 之模型调用(python 版本)包含一次数据请求与batch 数据请求](/upload/InfoBanner/zyjiaocheng/716/89d554c1faf04fb495bb151700ba05cb.jpg)
前言
- 最近再做wide and deep 模型线上化,由于在模型中使用了feature_column 函数,担心在线上化时,模型调用时间太长。参考官网的client 的代码,改写了一下,测试了一下时间。这里贴出调用方法与batch 请求
- 我使用的是feature dict的形式,即将特征组装成字典,调用tfserving
def _float_feature(value):
return tf.train.Feature(float_list=tf.train.FloatList(value=[value]))
def _bytes_feature(value):
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
def _int64_feature(value):
return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))
def wdl_input_fn(csv_data, columns, defaults):
feature_dict = {}
for i in range(len(columns)):
col_name = columns[i]
if str(defaults[i]) == str(['']):
feature_dict[col_name] = _bytes_feature(value=str(csv_data[i]))
if str(defaults[i]) == str([0.0]):
feature_dict[col_name] = _float_feature(value=float(csv_data[i]))
if str(defaults[i]) == str([0]):
tmp = csv_data[i]
if int(tmp) < 0:
tmp = 0
feature_dict[col_name] = _int64_feature(value=int(tmp))
return feature_dict
def main(_):
host, port = FLAGS.server.split(':')
channel = implementations.insecure_channel(host, int(port))
stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)
request = predict_pb2.PredictRequest()
request.model_spec.name = FLAGS.model
request.model_spec.signature_name = 'serving_default'
# feature_dict = {'age': _float_feature(value=25),
# 'capital_gain': _float_feature(value=0),
# 'capital_loss': _float_feature(value=0),
# 'education': _bytes_feature(value='11th'.encode()),
# 'education_num': _float_feature(value=7),
# 'gender': _bytes_feature(value='Male'.encode()),
# 'hours_per_week': _float_feature(value=40),
# 'native_country': _bytes_feature(value='United-States'.encode()),
# 'occupation': _bytes_feature(value='Machine-op-inspct'.encode()),
# 'relationship': _bytes_feature(value='Own-child'.encode()),
# 'workclass': _bytes_feature(value='Private'.encode())}
# label = 0
data = _read_test_input()
# feature_dict = pred_input_fn(data)
feature_dict = wdl_input_fn(data, columns, defaults)
example = tf.train.Example(features=tf.train.Features(feature=feature_dict))
serialized = example.SerializeToString()
request.inputs['inputs'].CopyFrom(
tf.contrib.util.make_tensor_proto(serialized, shape=[1]))
result_future = stub.Predict.future(request, 5.0)
prediction = result_future.result().outputs['scores']
# print('True label: ' + str(label))
print('Prediction: ' + str(np.argmax(prediction.float_val)))
上面的代码可以测试一次数据
如何测试batch 的数据,只需要将
serialized = example.SerializeToString()
request.inputs['inputs'].CopyFrom(
tf.contrib.util.make_tensor_proto(serialized, shape=[1]))
变为列表存储
serialized = example.SerializeToString()
serialized_list.append(serialized)
request.inputs['inputs'].CopyFrom(
tf.contrib.util.make_tensor_proto(serialized_list, shape=[len(serialized_list)]))
内容总结
以上是互联网集市为您收集整理的tfserving 之模型调用(python 版本)包含一次数据请求与batch 数据请求全部内容,希望文章能够帮你解决tfserving 之模型调用(python 版本)包含一次数据请求与batch 数据请求所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。