如何从 PredictResponse 对象中获取 float_val?

How to get float_val from a PredictResponse object?

我遇到了 this 个问题:

在对张量流服务模型进行 运行 预测后,我将返回此 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

然后 returns 输入 <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

提前致谢!

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

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

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

results = dict()
for output in output_names:
    results[output] = response.outputs[output].float_val