С MATLAB® Coder™ можно сгенерировать код для прогноза от уже обученной сверточной нейронной сети (CNN), предназначаясь для встроенной платформы, которая использует процессор ARM®. Генератор кода использует в своих интересах ARM, Вычисляют Библиотеку для компьютерного зрения и машинного обучения. Сгенерированный код реализует CNN с архитектурой, уровнями и параметрами, заданными во входном параметре сетевой объект DAGNetwork
или SeriesNetwork
.
Сгенерируйте код при помощи cnncodegen
. Команда cnncodegen
генерирует Код С++ для CNN.
Интерфейс MATLAB CODER для Глубокого Изучения Библиотек. Чтобы установить этот пакет поддержки, выберите его из меню MATLAB Add-Ons.
ARM Вычисляет Библиотеку для компьютерного зрения и машинного обучения.
Глубоко изучение Toolbox™.
Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации смотрите Предпосылки для Глубокого Изучения с MATLAB CODER.
cnncodegen
Загрузите предварительно обученную сеть.
Для получения дополнительной информации смотрите Загрузку Предварительно обученные Сети для Генерации кода.
Вызовите cnncodegen
с 'targetlib'
, заданным как 'arm-compute'
.
Например:
net = alexnet; cnncodegen(net,'targetlib','arm-compute');
Команда cnncodegen
генерирует Код С++ и make-файл, cnnbuild_rtw.mk
. Сгенерированные файлы находятся в папке codegen
. Не компилируйте сгенерированный код на хосте MATLAB. Переместите сгенерированный код в целевую платформу ARM для компиляции.
Серийная Сеть сгенерирована как класс C++, содержащий массив классов уровня.
class CnnMain { ... public: CnnMain(); ... void setup(); void predict(); void cleanup(); ... ~CnnMain(); };
Метод setup()
класса настраивает указатели и выделяет память для каждого уровня сетевого объекта. Метод predict()
вызывает прогноз для каждого из уровней в сети.
void CnnMain::predict() { int32_T idx; for (idx = 0; idx < 25; idx++) { this->layers[idx]->predict(); } }
Двоичные файлы экспортируются для уровней с параметрами такой, как полностью соединено и уровни свертки в сети. Например, файлы cnn_CnnMain_conv*_w
и cnn_CnnMain_conv*_b
соответствуют весам и смещают параметры для уровней свертки в сети.
cnn_CnnMain_avg cnn_CnnMain_conv5_w cnn_CnnMain_conv1_b cnn_CnnMain_fc6_b cnn_CnnMain_conv1_w cnn_CnnMain_fc6_w cnn_CnnMain_conv2_b cnn_CnnMain_fc7_b cnn_CnnMain_conv2_w cnn_CnnMain_fc7_w cnn_CnnMain_conv3_b cnn_CnnMain_fc8_b cnn_CnnMain_conv3_w cnn_CnnMain_fc8_w cnn_CnnMain_conv4_b cnn_CnnMain_labels.txt cnn_CnnMain_conv4_w cnn_CnnMain_conv5_b
cnncodegen
| coder.loadDeepLearningNetwork