С MATLAB® Coder™ можно сгенерировать код для предсказания от уже обученной сверточной нейронной сети (CNN), предназначаясь для встроенной платформы, которая использует процессор Intel®. Генератор кода использует в своих интересах Math Kernel Library Intel для Глубоких нейронных сетей (MKL-DNN). Сгенерированный код реализует CNN с архитектурой, слоями и параметрами, заданными во входе SeriesNetwork
или DAGNetwork
сетевой объект.
Сгенерируйте код при помощи одного из этих методов:
Стандартный codegen
команда для генерации кода C/C++ из кода MATLAB.
Приложение MATLAB Coder.
cnncodegen
команда, которая генерирует Код С++ и создает статическую библиотеку для CNN.
На 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
метод сети на входном параметре функции точки входа.
Задает 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
.
Сгенерируйте код.
cnncodegen
Загрузите предварительно обученную сеть.
Для получения дополнительной информации смотрите Предварительно обученные сети Загрузки для Генерации кода.
Вызовите cnncodegen
с 'targetlib'
заданный как 'mkldnn'
. Например:
net = googlenet; cnncodegen(net,'targetlib','mkldnn');
cnncodegen
команда генерирует Код С++ и make-файл, cnnbuild_rtw.mk
. Сгенерированные файлы находятся в codegen
папка.
Сеть сгенерирована как класс C++, содержащий массив классов слоя. setup()
метод класса настраивает указатели и выделяет память для каждого слоя сетевого объекта. predict()
метод вызывает предсказание для каждого из слоев в сети.
Двоичные файлы экспортируются для слоев параметрами такой, как полностью соединено и слои свертки в сети. Например, файлы cnn_CnnMain_conv*_w
и cnn_CnnMain_conv*_b
соответствуйте весам и сместите параметры для слоев свертки в сети.
cnncodegen
| codegen
| coder.DeepLearningConfig
| coder.MklDNNConfig
| coder.loadDeepLearningNetwork