С GPU Coder™ можно сгенерировать оптимизированный код для предсказания множества обученных нейронных сетей для глубокого обучения от Deep Learning Toolbox™. Сгенерированный код реализует глубокую сверточную нейронную сеть (CNN) при помощи архитектуры, слоев и параметров, которые вы задаете во входе SeriesNetwork
(Deep Learning Toolbox) или DAGNetwork
Объект (Deep Learning Toolbox). Генератор кода использует в своих интересах ARM®
Вычислите Библиотеку для компьютерного зрения и машинного обучения. Для выполнения глубокого обучения на 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
(Deep Learning Toolbox) функция, чтобы отобразить интерактивную визуализацию сетевой архитектуры, обнаружить ошибки и проблемы в сети, и отобразить подробную информацию о слоях сети. Информация о слое включает размеры активаций слоя и настраиваемых параметров, общего количества настраиваемых параметров и размеров параметров состояния текущих слоев.
analyzeNetwork(net);
Изображение, которое вы хотите классифицировать, должно иметь тот же размер как входной размер сети. Для GoogLeNet, размера imageInputLayer
(Deep Learning Toolbox) 224 224 3. Classes
свойство выхода classificationLayer
(Deep Learning Toolbox) содержит имена классов, изученных сетью. Просмотрите 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'
или значение, больше, чем два.