为什么使用TensorRT使用INT8推理更多输出数据

时间:2019-06-19 14:05:53

标签: tensorflow tensorrt

使用TensorRT实现INT8引擎推断。

训练批次大小为50,推理批次大小为1。

但是根据输出推断

[outputs] = common.do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream, batch_size=1)

输出大小为13680000。

必须为273600。使用FP32 / FP16产生的输出大小为273600。

为什么使用INT8的输出大小多5倍?

我的推断代码是

with engine.create_execution_context() as context:
      fps_time = time.time()
      inputs, outputs, bindings, stream = common.allocate_buffers(engine)
      im = np.array(frm, dtype=np.float32, order='C')
      #im = im[:,:,::-1]
      inputs[0].host = im.flatten()
      [outputs] = common.do_inference(context, bindings=bindings, inputs=inputs, outputs=outputs, stream=stream, batch_size=1)
      outputs = outputs.reshape((60, 80, 57))

1 个答案:

答案 0 :(得分:0)

这是因为火车的批次大小为50,并且为该批次大小分配了内存。

需要重塑为输出= outputs.reshape((50,60,80,57))

然后取[0]张量,这是我们对一张图像进行推断时的结果。