Факторы формата данных в глубоком обучении

Когда вы создаете приложение, которое использует сгенерированный Код С++ CUDA®, необходимо предоставить C++ CUDA основную функцию, которая вызывает сгенерированный код. По умолчанию, для генерации кода исходного кода, статических библиотек, динамических библиотек и исполняемых файлов при помощи codegen команда, GPU Coder™ генерирует пример CUDA C++ основные файлы (main.cu исходный файл и main.h заголовочный файл в examples подпапка папки сборки). Основной файл этого примера является шаблоном, который помогает вам включить сгенерированный код CUDA в свое приложение. Пример основная функция объявляет и инициализирует данные, включая динамически выделенные данные. Это вызывает функции точки входа, но не использует значения, которые возвращают функции точки входа.

При генерации кода для глубоких сверточных нейронных сетей (CNN) генератор кода использует в своих интересах NVIDIA® cuDNN, TensorRT для NVIDIA графические процессоры или Библиотека ARM® Compute для графических процессоров ARM Mali. Эти библиотеки имеют определенные требования формата данных для входного тензора, содержащего изображения, видео и любые другие данные. При авторской разработке пользовательских основных функций для того, чтобы создать приложение, необходимо создать входные буферы, которые предоставляют данные сгенерированным функциям точки входа в формате, ожидаемом этими библиотеками.

Формат формата данных для CNN

Для глубоких сверточных нейронных сетей (CNN) 4-D дескриптор тензора используется, чтобы задать формат для пакетов 2D изображений со следующими буквами:

  • N – пакетный размер

  • C – количество карт функции (количество каналов)

  • H – высота

  • W – ширина

Обычно используемые 4-D форматы тензора показывают, где буквы сортируются в порядке убывания шагов.

  • NCHW

  • NHWC

  • CHWN

Из них GPU Coder использует NCHW формат (упорядоченное по столбцам размещение по умолчанию). Чтобы использовать упорядоченное по строкам размещение передают -rowmajor опция к codegen команда. В качестве альтернативы сконфигурируйте свой код для упорядоченного по строкам размещения путем изменения cfg.RowMajor параметр в объекте настройки генерации кода.

. Например, рассмотрите пакет изображений со следующими размерностями: N=1, C=3, H=5, W=4. Если элементы пикселя изображения представлены последовательностью целых чисел, входные изображения могут быть графическим образом представлены можно следующим образом.

При создании входного буфера в основной функции изображение 4-D размечается в памяти в NCHW формат как:

  1. Начало с первого канала (C=0), элементы располагаются непрерывно в упорядоченном по строкам порядке.

  2. Продолжите вторые и последующие каналы, пока элементы всех каналов не будут размечены.

  3. Перейдите к следующему пакету (если N > 1).

Формат формата данных для LSTM

Сеть долгой краткосрочной памяти (LSTM) является типом рекуррентной нейронной сети (RNN), которая может изучить долгосрочные зависимости между временными шагами данных о последовательности. Для LSTM формат формата данных может быть описан со следующими буквами:

  • N – пакетный размер

  • S – длина последовательности (количество временных шагов)

  • d – количество модулей в одной входной последовательности

Для LSTM GPU Coder использует SNd формат по умолчанию.

Смотрите также

| | | |

Похожие темы