Сравнение весового порядка TensorRT с Tensorflow [H,W,IN_C,OUT_C]

Я должен вручную добавить слой свертки, поскольку у меня есть специальная операция, которая не поддерживается анализатором Tensorflow. Какой порядок весов TensorRT ожидает прочитать из файла.wts? Например, взвешенный тензор потока Tensorflow обычно имеет порядок [H,W,IN_CHANNEL,OUT_CHANNEL]. Я знаю, что TensorRT ожидает, что входные данные будут в порядке NCHW, но нужно ли менять порядок весов при записи в файл.wts? Если да, то какой заказ должен получить TensorRT? [IN_CHANNEL, OUT_CHANNEL,H,W]?

0 ответов

Краткое резюме... если вы спрашиваете о порядке сортировки весов, вас также может беспокоить порядок входных данных. Ответ, опубликованный здесь, вероятно, даст вам большую часть того, что вам нужно по обоим пунктам: Запустите Tensorflow с NVIDIA TensorRT Inference Engine.

Дополнительные сведения... Недавно я решил эти проблемы, используя специальные инструменты, и вот соответствующие факторы, с которыми я столкнулся:

  • порядок данных входного изображения, который равен NHWC для тензорного потока и NCHW для тензорного потока; а внутри канала изображения - порядок цветов, например RGB или BGR.

  • веса сортировать заказы по слоям

    • для двумерной свертки тензорный поток использует RSCK ([filter_height, filter_width, input_depth, output_depth]), а tensorrt использует KCRS.

    • для плотного слоя, следующего за 2D-сверткой или слоем объединения, настройте порядок сортировки весов для другой последовательности сглаживания, эффективно преобразовывая RSCK для тензорного потока в KCRS для тензорного, где теперь R и S относятся ко всей высоте и ширине входного слоя, соответственно, C - это input_depth, как и раньше, а теперь глубина вывода K - это количество нейронов плотного слоя

    • для плотного слоя, следующего за плотным слоем, преобразовать CK в порядок KC

(примечание: этот ответ предполагает, что вы не используете группы ни в одной из сверток)

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