【问题标题】:Tensorflow Serving ResponseTensorFlow 服务响应
【发布时间】:2017-10-15 09:17:37
【问题描述】:

我正在尝试建立与 Tensorflow Serving 会话的通信。 以下代码有效,但速度有点慢。有没有办法改进它?我怀疑问题出在第四行 - 输出作为 float_val 元素列表给出,我需要将它们转换为浮点数组并重塑它们。

有没有办法让服务器输出的形状正确? 我已将输出签名定义如下(我认为这是正确的)。

prediction_channel, request_form = setup_channel(args.server)    
request_form.inputs['images'].CopyFrom(
                tf.contrib.util.make_tensor_proto(img_transformed, shape=list(img_transformed.shape)))
output = prediction_channel.Predict.future(request_form, 5.0)
output = np.array(output.result().outputs['scores'].float_val).reshape(1, 16, 64, 64)

第一行使用函数打开到服务器的通道

def setup_channel(hostport):
   host, port = hostport.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 = 'hg'
   request.model_spec.signature_name = 'predict_images'
   return stub, request

输出签名为:

tensor_info_x = tf.saved_model.utils.build_tensor_info(model.input_tensor)
tensor_info_y = tf.saved_model.utils.build_tensor_info(model.predict)

prediction_signature = (
    tf.saved_model.signature_def_utils.build_signature_def(
        inputs={'images': tensor_info_x},
        outputs={'scores': tensor_info_y},
        method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME))**

模型 predict 的形状为 (1, 16, 64, 64)。

【问题讨论】:

    标签: python tensorflow tensorflow-serving


    【解决方案1】:

    我不确定您是如何处理您的Predict.future(request_form, 5.0),但同样应该适用于同步响应处理; tf 提供了一个实用函数make_ndarray:

    res = stub.Predict(request, timeout).outputs[tensor_name]
    arr = tf.make_ndarray(res)
    

    arr 将是一个包含正确尺寸的 np 数组。

    tensor_name 是您签名中定义的名称,例如

    tf.saved_model.signature_def_utils.build_signature_def(
        inputs={'images': inp_tensor_info},
        outputs={'scores': out_tensor_info},
        method_name=tf.saved_model.signature_constants.PREDICT_METHOD_NAME
    )
    

    需要

    res = stub.Predict(request, timeout).outputs['scores']
    arr = tf.make_ndarray(res)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多