С GPU Coder™ можно сгенерировать оптимизированный код для прогноза множества обученных нейронных сетей для глубокого обучения от Deep Learning Toolbox™. Сгенерированный код реализует глубокую сверточную нейронную сеть (CNN) при помощи архитектуры, слоев и параметров, которые вы задаете во входе SeriesNetwork
или DAGNetwork
объект. Генератор кода использует в своих интересах
Библиотеку ARM® Compute для компьютерного зрения и машинного обучения. Для выполнения глубокого обучения на ARM Mali цели графического процессора вы генерируете код по компьютеру разработчика хоста. Затем чтобы создать и запустить исполняемую программу перемещают сгенерированный код в целевую платформу ARM. Например, HiKey960 является одной из целевых платформ, которые могут выполнить сгенерированный код.
Deep Learning Toolbox.
Модель Deep Learning Toolbox для пакета Сетевой поддержки MobileNet-v2.
Интерфейс GPU Coder для Библиотек Глубокого обучения поддерживает пакет. Чтобы установить пакеты поддержки, выберите пакет поддержки из меню MATLAB® Add-Ons.
ARM Вычисляет Библиотеку для компьютерного зрения, и машинное обучение должно быть установлено на целевом компьютере. Для получения информации о поддерживаемых версиях компиляторов и библиотек, смотрите Устанавливающие Необходимые как условие продукты.
Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации смотрите Переменные окружения.
Загрузите предварительно обученную сеть MobileNet-v2. Можно принять решение загрузить различную предварительно обученную сеть для классификации изображений. Если у вас нет необходимых пакетов поддержки установленными, программное обеспечение обеспечивает ссылку на загрузку.
net = mobilenetv2;
Объект net
содержит DAGNetwork
объект. Используйте analyzeNetwork
функционируйте, чтобы отобразить интерактивную визуализацию сетевой архитектуры, обнаружить ошибки и проблемы в сети, и отобразить подробную информацию о сетевых слоях. Информация о слое включает размеры активаций слоя и learnable параметров, общего количества learnable параметров и размеров параметров состояния текущих слоев.
analyzeNetwork(net);
Изображение, которое вы хотите классифицировать, должно иметь тот же размер как входной размер сети. Для GoogLeNet, размера imageInputLayer
224 224 3. Classes
свойство выхода classificationLayer
содержит имена классов, изученных сетью. Просмотрите 10 случайных имен классов из общего количества 1 000.
classNames = net.Layers(end).Classes; numClasses = numel(classNames); disp(classNames(randperm(numClasses,10)))
cock apiary soap dispenser titi car wheel guenon muzzle agaric buckeye megalith
Для получения дополнительной информации смотрите Список слоев глубокого обучения (Deep Learning Toolbox).
cnncodegen
Чтобы сгенерировать код с ARM Вычисляют Библиотеку, используют targetlib
опция cnncodegen
команда. cnncodegen
команда генерирует Код С++ для SeriesNetwork
или DAGNetwork
сетевой объект.
Вызовите cnncodegen
с 'targetlib'
заданный как 'arm-compute-mali'
. Например:
net = googlenet; cnncodegen(net,'targetlib','arm-compute-mali','batchsize',1);
Для 'arm-compute-mali'
, значение batchsize
должен быть 1
.
'targetparams'
аргументы пары "имя-значение", которые позволяют вам задать Специфичные для библиотеки параметры для ARM, Вычисляют Библиотеку, не применимо при предназначении для ARM Mali графические процессоры.
cnncodegen
команда генерирует код, make-файл, cnnbuild_rtw.mk
, и другие вспомогательные файлы, чтобы создать сгенерированный код на целевом компьютере. Команда помещает все сгенерированные файлы в codegen
папка.
Запишите C++ основную функцию, которая вызывает predict
. Для примера основной файл, который взаимодействует через интерфейс со сгенерированным кодом, видит Прогноз Глубокого обучения на ARM Мали графический процессор
Переместите сгенерированный codegen
папка и другие файлы с компьютера разработчика хоста на оборудование ARM при помощи вашей предпочтительной Безопасной Копии Файла (SCP) и Безопасной Shell (SSH) клиент. Создайте исполняемую программу на цели.
Сеть DAG сгенерирована как класс C++ (CnnMain
) содержа массив 103 классов слоя. Генератор кода сокращает количество слоев, оптимизацией сплава слоя сверточных и пакетных слоев нормализации. Отрывок объявления класса от cnn_exec.hpp
файл показывают.
setup()
метод класса настраивает указатели и выделяет память для каждого слоя сетевого объекта.
predict()
метод вызывает прогноз для каждого из этих 103 слоев в сети.
cnn_exec.cpp
файл содержит определения объектных функций для CnnMain
класс.
Двоичные файлы экспортируются для слоев параметрами такой, как полностью соединено и слои свертки в сети. Например, файлы cnn_CnnMain_Conv*_w
и cnn_CnnMain_Conv*_b
соответствуйте весам и сместите параметры для convolutional
слои в сети. Генератор кода помещает эти двоичные файлы в codegen
папка. Генератор кода создает файл библиотеки cnnbuild
и места все сгенерированные файлы в codegen
папка.
Генерация кода для графического процессора ARM Mali не поддержана для 2D сгруппированного слоя свертки, который имеет NumGroups
набор свойств как 'channel-wise'
или значение, больше, чем два.
cnncodegen
| coder.loadDeepLearningNetwork