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

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

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

Формат размещения данных для CNN

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

  • 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 формат по умолчанию.

См. также

Функции

Объекты

Похожие темы