С 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