Зачем выводить больше данных, используя вывод INT8, используя TensorRT? - PullRequest
0 голосов
/ 19 июня 2019

Реализован вывод механизма INT8 с использованием TensorRT.

Размер обучающей партии равен 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 голосов
/ 20 июня 2019

Это потому, что размер пакета поезда равен 50, а для этого размера пакета выделена память.

Необходимо изменить форму как output = output.reshape ((50, 60, 80, 57))

Затем возьмем тензор [0], который является результатом, когда мы делаем вывод для одного изображения.

...