С помощью 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