如何从PredictResponse对象获取float_val?

问题描述 投票:0回答:2

我有完全this问题:

在对tensorflow服务模型运行预测之后,我将这个PredictResponse对象作为输出返回:

outputs {
  key: "scores"
  value {
    dtype: DT_FLOAT
    tensor_shape {
      dim {
        size: 1
      }
      dim {
        size: 2
      }
    }
    float_val: 0.407728463411
    float_val: 0.592271506786
  }    
}

正如该问题中所建议的,我尝试使用:result.outputs ['outputs']。float_val

但然后它返回类型<type google.protobuf.pyext._message.RepeatedScalarContainer>

它是由这段代码生成的,受到inception_client.py示例的启发:

channel = implementations.insecure_channel(host, int(port))
stub = prediction_service_pb2.beta_create_PredictionService_stub(channel)
result = stub.Predict(request, 10.0)  # 10 secs timeout

提前致谢!

python tensorflow protocol-buffers tensorflow-serving
2个回答
5
投票

result.outputs['scores'].float_val[0]result.outputs['scores'].float_val[1]是此响应中的浮点值。

为了将来参考,documentation for the python bindings to protocol buffers解释了这个问题和其他问题。


0
投票

如果您有多个输出,其名称存储在output_names列表中,您可以执行以下操作,以创建一个输出名称为键的字典和一个包含模型返回值的列表。

results = dict()
for output in output_names:
    results[output] = response.outputs[output].float_val
© www.soinside.com 2019 - 2024. All rights reserved.