Можно сгенерировать код для предварительно обученной сверточной нейронной сети (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)
densenet201
(Deep Learning Toolbox)
googlenet
(Deep Learning Toolbox)
inceptionv3
(Deep Learning Toolbox)
mobilenetv2
(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.config('mex'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn'); codegen -args {ones(224,224,3,'single')} -config cfg myNet_predict
dlnetwork
Объект для генерации кодаПредположим, у вас есть предварительно обученный dlnetwork
сетевой объект в mynet.mat
MAT-файл. Чтобы предсказать отклики для этой сети, создайте функцию точки входа в 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.config('lib'); cfg.TargetLang = 'C++'; cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn'); 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)