С MATLAB® Coder™, можно сгенерировать код для предсказания от уже обученной сверточной нейронной сети (CNN), предназначаясь для встроенной платформы, которая использует Intel® процессор. Генератор кода использует в своих интересах Math Kernel Library Intel для Глубоких нейронных сетей (MKL-DNN). Сгенерированный код реализует CNN с архитектурой, слоями и параметрами, заданными во входе SeriesNetwork
(Deep Learning Toolbox) или DAGNetwork
(Deep Learning Toolbox) сетевой объект.
Сгенерируйте код при помощи одного из этих методов:
Стандарт codegen
команда для генерации кода C/C++ из кода MATLAB.
Приложение MATLAB Coder.
На Windows®, генерация кода для нейронных сетей для глубокого обучения с codegen
функция требует Microsoft® Visual Studio® 2015 или позже.
Интерфейс MATLAB Coder для Библиотек Глубокого обучения. Чтобы установить этот пакет поддержки, выберите его из меню MATLAB Add-Ons.
Intel Math Kernel Library для глубоких нейронных сетей (MKL-DNN)
Deep Learning Toolbox™.
Переменные окружения для компиляторов и библиотек. Для получения дополнительной информации смотрите Необходимые условия для Глубокого обучения для MATLAB Coder.
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
Примечание
Можно задать входные параметры полуточности для генерации кода. Однако тип генератора кода бросает входные параметры к с одинарной точностью. Использование Deep Learning Toolbox арифметика с плавающей точкой, с одинарной точностью для всех расчетов в MATLAB.
Сеть сгенерирована как класс C++, содержащий массив классов слоя. setup()
метод класса настраивает указатели и выделяет память для каждого слоя сетевого объекта. predict()
метод вызывает предсказание для каждого из слоев в сети. Генератор кода производит функциональный googlenet_predict()
в googlenet_predict.cpp
это соответствует функции точки входа MATLAB. Эта функция создает статический объект для сети и вызывает настройку, и предскажите методы.
Двоичные файлы экспортируются для слоев параметрами такой, как полностью соединено и слои свертки в сети. Например, файлы cnn_googlenet_conv*_w
и cnn_googlenet_conv*_b
соответствуйте весам и сместите параметры для слоев свертки в сети.
Выполните обычные шаги для определения функции точки входа и определения входных типов. Смотрите Генерируют код С при помощи Приложения MATLAB Coder.
На шаге Generate Code:
Установите Language на C++.
Нажмите More Settings. В панели Deep Learning, набор Target library к MKL-DNN
.
Сгенерируйте код.
codegen
| coder.DeepLearningConfig
| coder.MklDNNConfig
| coder.loadDeepLearningNetwork