Почему больше выходных данных с использованием вывода INT8 с использованием TensorRT

Реализован вывод движка 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.

Почему размер вывода в 5 раз больше при использовании INT8?

Мой код вывода

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))
Udacity Nanodegree Capstone Project: Классификатор пород собак
Udacity Nanodegree Capstone Project: Классификатор пород собак
Вы можете ознакомиться со скриптами проекта и данными на github .
0
0
130
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Нужно переформировать как outputs = outputs.reshape((50, 60, 80, 57))

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

Другие вопросы по теме