exponenta event banner

Создание кода для сетей глубокого обучения с MKL-DNN

С помощью MATLAB ® Coder™ вы можете создавать код для прогнозирования из уже обученной сверточной нейронной сети (CNN), ориентированной на встраиваемую платформу, использующую процессор Intel ®. Генератор кода использует преимущества библиотеки Intel Math Kernel Library for Deep Neural Networks (MKL-DNN). Сгенерированный код реализует CNN с архитектурой, уровнями и параметрами, указанными на входеSeriesNetwork (инструментарий глубокого обучения) или DAGNetwork (Deep Learning Toolbox) сетевой объект.

Создайте код одним из следующих способов:

  • Стандарт codegen команда для генерации кода C/C + + из кода MATLAB.

  • Приложение MATLAB Coder.

Требования

  • В Windows ® создание кода для сетей глубокого обучения с помощью codegen требуется Microsoft ® Visual Studio ® 2015 или более поздней версии.

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

  • Библиотека Intel Math Kernel Library для глубоких нейронных сетей (MKL-DNN)

  • Toolbox™ глубокого обучения.

  • Переменные среды для компиляторов и библиотек. Дополнительные сведения см. в разделе Предварительные условия для глубокого обучения с помощью кодера MATLAB.

Создание кода с помощью codegen

  1. Запишите в MATLAB функцию точки входа, которая:

    Например:

    function out = googlenet_predict(in) %#codegen
    
    % A persistent object mynet is used to load the series network object.
    % At the first call to this function, the persistent object is constructed and
    % setup. When the function is called subsequent times, the same object is reused 
    % to call predict on inputs, thus avoiding reconstructing and reloading the
    % network object.
    
    persistent mynet;
    
    if isempty(mynet)
        mynet = coder.loadDeepLearningNetwork('googlenet');
    end
    
    % pass in input   
    out = predict(mynet,in,'MiniBatchSize',2); 

  2. Создайте объект конфигурации создания кода для MEX или для статической или динамически связанной библиотеки. Для задания параметров формирования кода для MKL-DNN установите DeepLearningConfig к свойству coder.MklDNNConfig объект, созданный с помощью coder.DeepLearningConfig.

    cfg = coder.config('lib');
    cfg.TargetLang = 'C++';
    cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');
  3. Запустить codegen команда. Используйте -config для указания объекта конфигурации. Используйте -args для указания типа ввода. Размер ввода соответствует размеру входного уровня сети GoogLeNet с 16 различные изображения или наблюдения.

    codegen -config cfg googlenet_predict -args {ones(224,224,3,16)} -report

    Примечание

    Для создания кода можно задать входные данные с полуконкретностью. Однако тип генератора кода приводит входные данные к одинарной точности. Инструментарий глубокого обучения использует арифметику с одинарной точностью и плавающей запятой для всех вычислений в MATLAB.

Сгенерированный код

Сеть создается как класс C++, содержащий массив классов слоев. setup() метод класса устанавливает дескрипторы и выделяет память для каждого уровня сетевого объекта. predict() способ вызывает прогнозирование для каждого из уровней в сети. Генератор кода создает функцию googlenet_predict() в googlenet_predict.cpp соответствует функции точки входа MATLAB. Эта функция создает статический объект для сети и вызывает методы настройки и прогнозирования.

Двоичные файлы экспортируются для слоев с такими параметрами, как полностью соединенные и сверточные слои в сети. Например, файлы cnn_googlenet_conv*_w и cnn_googlenet_conv*_b соответствуют весам и параметрам смещения для слоев свертки в сети.

Создание кода с помощью приложения кодера MATLAB

  1. Выполните обычные шаги для указания функции точки входа и типов ввода. См. раздел Создание кода C с помощью приложения кодера MATLAB.

  2. На шаге Создать код:

    • Установите язык на C++.

    • Щелкните Дополнительные параметры. В области «Глубокое обучение» задайте для параметра «Целевая библиотека» значение MKL-DNN.

  3. Создать код.

См. также

| | |

Связанные темы