Сделайте размеры заполнителей, которые ранее были динамическими для существующих моделей статическими - PullRequest
2 голосов
/ 22 мая 2019

Я обучил модель тензорного потока для обнаружения объектов с вводом в качестве заполнителя с размером [1, Нет, Нет, 3], поскольку мои тренировочные изображения имеют различные размеры.Затем я преобразовал замороженный граф (файл .pb) в граф tenorRT для более быстрого вывода, но тензор RT дал мне предупреждение о том, что входной тензор имеет неизвестное непартийное измерение и, таким образом, узел вернется к TF.Сообщение об ошибке:

2019-05-22 08:59:56.628216: W tensorflow/contrib/tensorrt/convert/convert_nodes.cc:3710] Validation failed for TensorRTInputPH_0 and input slot 0: Input tensor with shape [1,?,?,3] has an unknown non-batch dimension at dim 1
2019-05-22 08:59:56.628262: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:1021] TensorRT node TRTEngineOp_0 added for segment 0 consisting of 160 nodes failed: Invalid argument: Validation failed for TensorRTInputPH_0 and input slot 0: Input tensor with shape [1,?,?,3] has an unknown non-batch dimension at dim 1. Fallback to TF...

Я знаю, что могу установить для is_dynamic_op значение True в trt.create_inference_graph, но это увеличивает время выполнения.Я хочу использовать эту модель для вывода видео, в котором все кадры имеют одинаковую высоту и ширину.Есть ли способ зафиксировать размеры входных заполнителей в статических значениях без необходимости переучивать модель?Мой входной тензор может быть доступен с помощью get_tensor_by_name

1 Ответ

0 голосов
/ 11 июня 2019

Я думаю, что вы используете статический режим.

Стандартный режим работы TF-TRT называется статическим режимом, и он активен всякий раз, когда для параметра is_dynamic_op установлено значение False.В статическом режиме требуется, чтобы все фигуры в модели были полностью определены (размеры не могут быть None или -1).Когда аргумент is_dynamic_op установлен в True, TF-TRT будет работать в динамическом режиме.В динамическом режиме API TF-TRT (create_inference_graph в TF <= 1.13) возвращает измененный граф, но в это время движки TensorRT не создаются.Вместо этого механизмы TensorRT создаются во время выполнения, когда вы отправляете входные данные на график.</p>

Основным преимуществом динамического режима является то, что он позволяет вам иметь неизвестные фигуры в вашей модели, несмотря на то, что TensorRT требует, чтобы все фигуры были полностью определены.В этом режиме TF-TRT создает новый механизм TensorRT для каждой уникальной входной формы, которая передается в модель.

...