С помощью 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
Запишите в MATLAB функцию точки входа, которая:
Использует coder.loadDeepLearningNetwork для создания и настройки сетевого объекта CNN. Дополнительные сведения см. в разделе Загрузка предварительно обученных сетей для создания кода.
Вызывает predict (Deep Learning Toolbox) метод сети на входе функции начального уровня.
Задает MiniBatchSize в predict способ управления использованием памяти для прогнозирования на множественных входных изображениях или наблюдениях.
Например:
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);
Создайте объект конфигурации создания кода для MEX или для статической или динамически связанной библиотеки. Для задания параметров формирования кода для MKL-DNN установите DeepLearningConfig к свойству coder.MklDNNConfig объект, созданный с помощью coder.DeepLearningConfig.
cfg = coder.config('lib'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn');
Запустить 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 соответствуют весам и параметрам смещения для слоев свертки в сети.
Выполните обычные шаги для указания функции точки входа и типов ввода. См. раздел Создание кода C с помощью приложения кодера MATLAB.
На шаге Создать код:
Установите язык на C++.
Щелкните Дополнительные параметры. В области «Глубокое обучение» задайте для параметра «Целевая библиотека» значение MKL-DNN.

Создать код.
codegen | coder.DeepLearningConfig | coder.loadDeepLearningNetwork | coder.MklDNNConfig