Генерация кода для квантованных нейронных сетей для глубокого обучения

Глубокое обучение использует архитектуры нейронной сети, которые содержат много слоев обработки, включая сверточные слои. Модели глубокого обучения обычно работают над большими наборами маркированных данных. Выполнение вывода на этих моделях в вычислительном отношении интенсивно, используя существенное количество памяти. Нейронные сети используют память, чтобы сохранить входные данные, параметры (веса) и активации от каждого слоя, когда вход распространяет через сеть. Глубокие нейронные сети, обученные в MATLAB®, используют типы данных с плавающей запятой с одинарной точностью. Даже сети, которые малы в размере, требуют, чтобы значительный объем памяти и оборудование выполнили эти арифметические операции с плавающей точкой. Эти ограничения могут запретить развертывание моделей глубокого обучения к устройствам, которые имеют низкую вычислительную силу и меньшие ресурсы памяти. При помощи более низкой точности, чтобы сохранить веса и активации, можно уменьшать требования к памяти сети.

Можно использовать Deep Learning Toolbox™ в тандеме с пакетом поддержки Библиотеки Квантования Модели Deep Learning Toolbox, чтобы уменьшать объем потребляемой памяти глубокой нейронной сети путем квантования весов, смещений и активаций слоев свертки к 8-битным масштабированным целочисленным типам данных. Затем можно использовать MATLAB Coder™, чтобы сгенерировать оптимизированный код для квантованной сети. Сгенерированный код использует в своих интересах процессор SIMD ARM® при помощи библиотеки ARM Compute. Сгенерированный код может быть интегрирован в ваш проект как исходный код, статические или динамические библиотеки или исполняемые файлы, которые можно развернуть во множество платформ центрального процессора ARM, таких как Raspberry Pi™.

Поддерживаемые слои и классы

Можно сгенерировать Код С++ для этих слоев свертки, который использует ARM, Вычисляют Библиотеку, и выполняет расчеты вывода в 8-битных целых числах:

  • 2D слой свертки (convolution2dLayer (Deep Learning Toolbox))

  • 2D сгруппированный слой свертки (groupedConvolution2dLayer (Deep Learning Toolbox)). Значение NumGroups входной параметр должен быть равен 2.

Генерация кода С++ для квантованных нейронных сетей для глубокого обучения поддерживает DAGNetwork (Deep Learning Toolbox) и SeriesNetwork (Deep Learning Toolbox) объекты.

Генерация кода

Сгенерировать код, который выполняет расчеты вывода в 8-битных целых числах в вашем coder.ARMNEONConfig объект dlcfg, установите эти дополнительные свойства:

dlcfg.CalibrationResultFile = 'dlquantizerObjectMatFile'; 
dlcfg.DataType = 'int8';

В качестве альтернативы в приложении MATLAB Coder, на вкладке Deep Learning, устанавливает Target library на ARM Compute. Затем установите параметры Calibration result file path и Data type.

Здесь 'dlquantizerObjectMatFile' имя MAT-файла что dlquantizer (Deep Learning Toolbox) генерирует для определенных калибровочных данных. В целях калибровки, набор ExecutionEnvironment свойство dlquantizer возразите против 'CPU'.

В противном случае выполните шаги, описанные в Генерации кода для Нейронных сетей для глубокого обучения с ARM, Вычисляют Библиотеку.

Для примера смотрите Генерацию кода для Квантованной Нейронной сети для глубокого обучения на Raspberry Pi.

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

Приложения

Функции

Объекты

Похожие темы