Можно создать код для предварительно обученной сверточной нейронной сети (CNN). Чтобы предоставить сеть генератору кода, загрузите SeriesNetwork (инструментарий глубокого обучения), DAGNetwork (инструментарий глубокого обучения), yolov2ObjectDetector (инструментарий компьютерного зрения), ssdObjectDetector(Панель инструментов компьютерного зрения), или 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 (инструментарий для глубокого обучения)
darknet19 (инструментарий для глубокого обучения)
darknet53 (инструментарий для глубокого обучения)
densenet201 (инструментарий для глубокого обучения)
googlenet (инструментарий для глубокого обучения)
inceptionv3 (инструментарий для глубокого обучения)
inceptionresnetv2 (инструментарий для глубокого обучения)
mobilenetv2 (инструментарий для глубокого обучения)
nasnetlarge (инструментарий для глубокого обучения)
nasnetmobile (инструментарий для глубокого обучения)
resnet18 (инструментарий для глубокого обучения)
resnet50 (инструментарий для глубокого обучения)
resnet101 (инструментарий для глубокого обучения)
squeezenet (инструментарий для глубокого обучения)
vgg16 (инструментарий для глубокого обучения)
vgg19 (инструментарий для глубокого обучения)
xception (инструментарий для глубокого обучения)
Например, загрузите сетевой объект, введя:
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 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, поскольку 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 (инструментарий для глубокого обучения)ssdObjectDetector (Панель инструментов компьютерного зрения) | yolov2ObjectDetector (Панель инструментов компьютерного зрения) | DAGNetwork (инструментарий для глубокого обучения) | dlarray (инструментарий для глубокого обучения) | dlnetwork (инструментарий для глубокого обучения) | SeriesNetwork (инструментарий для глубокого обучения)