Можно сгенерировать код для предварительно обученной сверточной нейронной сети (CNN). Чтобы предоставить сеть генератору кода, загрузите SeriesNetwork
(Deep Learning Toolbox), DAGNetwork
(Deep Learning Toolbox), yolov2ObjectDetector
(Computer Vision Toolbox), ssdObjectDetector
(Computer Vision Toolbox) или dlnetwork
Объект (Deep Learning Toolbox) от обучившего сеть.
coder.loadDeepLearningNetwork
Можно загрузить сетевой объект от любой сети, которая поддерживается для генерации кода при помощи coder.loadDeepLearningNetwork
. Можно задать сеть из MAT-файла. MAT-файл должен содержать только сеть, чтобы загрузиться.
Например, предположите, что вы создаете обучивший сеть объект под названием myNet
при помощи trainNetwork
(Deep Learning Toolbox) функция. Затем вы сохраняете рабочую область путем ввода save
. Это создает файл под названием matlab.mat
это содержит сетевой объект. Загружать сетевой объект myNet
, Введите:
net = coder.loadDeepLearningNetwork('matlab.mat');
Можно также задать сеть путем обеспечения имени функции, которая возвращает предварительно обученный SeriesNetwork
, DAGNetwork
, yolov2ObjectDetector
, или ssdObjectDetector
объект, такой как:
alexnet
(Deep Learning Toolbox)
darknet19
(Deep Learning Toolbox)
darknet53
(Deep Learning Toolbox)
densenet201
(Deep Learning Toolbox)
googlenet
(Deep Learning Toolbox)
inceptionv3
(Deep Learning Toolbox)
inceptionresnetv2
(Deep Learning Toolbox)
mobilenetv2
(Deep Learning Toolbox)
nasnetlarge
(Deep Learning Toolbox)
nasnetmobile
(Deep Learning Toolbox)
resnet18
(Deep Learning Toolbox)
resnet50
(Deep Learning Toolbox)
resnet101
(Deep Learning Toolbox)
squeezenet
(Deep Learning Toolbox)
vgg16
(Deep Learning Toolbox)
vgg19
(Deep Learning Toolbox)
xception
(Deep Learning Toolbox)
Например, загрузите сетевой объект путем ввода:
net = coder.loadDeepLearningNetwork('googlenet');
Функции Deep Learning Toolbox™ в предыдущем списке требуют, чтобы вы установили пакет поддержки для функции. Смотрите Предварительно обученные Глубокие нейронные сети (Deep Learning Toolbox).
Если вы генерируете код при помощи codegen
или приложение, загрузите сетевой объект в вашей функции точки входа при помощи coder.loadDeepLearningNetwork
. Например:
function out = myNet_predict(in) %#codegen persistent mynet; if isempty(mynet) mynet = coder.loadDeepLearningNetwork('matlab.mat'); end out = predict(mynet,in);
Для предварительно обученных сетей, которые доступны, как поддерживают функции пакета такой как alexnet
, inceptionv3
, googlenet
, и resnet
, можно непосредственно задать функцию пакета поддержки, например, путем записи mynet = googlenet
.
Затем сгенерируйте код для функции точки входа. Например:
cfg = coder.gpuConfig('mex'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn'); codegen -args {ones(224,224,3,'single')} -config cfg myNet_predict
dlnetwork
Объект для генерации кодаПредположим, что у вас есть предварительно обученный dlnetwork
сетевой объект в mynet.mat
Matfile. Чтобы предсказать ответы для этой сети, создайте функцию точки входа в MATLAB® как показано в этом коде.
function a = myDLNet_predict(in) dlIn = dlarray(in, 'SSC'); persistent dlnet; if isempty(dlnet) dlnet = coder.loadDeepLearningNetwork('mynet.mat'); end dlA = predict(dlnet, dlIn); a = extractdata(dlA); end
В этом примере, вводе и выводе к myDLNet_predict
имеют более простые типы данных и dlarray
объект создается в функции. extractdata
(Deep Learning Toolbox) метод dlarray
объект возвращает данные в dlarray
dlA
как выход myDLNet_predict
. Выход a
имеет совпадающий тип данных как базовый тип данных в dlA
. Этот проект точки входа имеет следующие преимущества:
Более легкая интеграция с автономными рабочими процессами генерации кода, такими как статические, динамические библиотеки или исполняемые файлы.
Формат данных выхода от extractdata
функция имеет тот же порядок ('SCBTU'
) и в среде MATLAB и в сгенерированном коде.
Улучшает производительность для рабочих процессов MEX.
Упрощает рабочие процессы Simulink® с помощью блоков MATLAB Function, когда Simulink исходно не поддерживает dlarray
объекты.
Затем сгенерируйте код для функции точки входа. Например:
cfg = coder.gpuConfig('lib'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn'); codegen -args {ones(224,224,3,'single')} -config cfg myDLNet_predict
codegen
| coder.loadDeepLearningNetwork
| trainNetwork
(Deep Learning Toolbox)ssdObjectDetector
(Computer Vision Toolbox) | yolov2ObjectDetector
(Computer Vision Toolbox) | DAGNetwork
(Deep Learning Toolbox) | dlarray
(Deep Learning Toolbox) | dlnetwork
(Deep Learning Toolbox) | SeriesNetwork
(Deep Learning Toolbox)