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

С MATLAB® Coder™ можно сгенерировать код для прогноза от уже обученной сверточной нейронной сети (CNN), предназначаясь для встроенной платформы, которая использует процессор ARM®. Генератор кода использует в своих интересах ARM, Вычисляют Библиотеку для компьютерного зрения и машинного обучения. Сгенерированный код реализует CNN с архитектурой, уровнями и параметрами, заданными во входном параметре сетевой объект DAGNetwork или SeriesNetwork.

Сгенерируйте код при помощи cnncodegen. Команда cnncodegen генерирует Код С++ для CNN.

Требования для генерации кода с ARM вычисляют библиотеку

  • Интерфейс MATLAB CODER для Глубокого Изучения Библиотек. Чтобы установить этот пакет поддержки, выберите его из меню MATLAB Add-Ons.

  • ARM Вычисляет Библиотеку для компьютерного зрения и машинного обучения.

  • Глубоко изучение Toolbox™.

  • Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации смотрите Предпосылки для Глубокого Изучения с MATLAB CODER.

Генерация кода при помощи cnncodegen

  1. Загрузите предварительно обученную сеть.

    Для получения дополнительной информации смотрите Загрузку Предварительно обученные Сети для Генерации кода.

  2. Вызовите 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      

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

|

Похожие темы

Была ли эта тема полезной?