coder.loadDeepLearningNetwork

Загрузка модели нейронной сети для глубокого обучения

Описание

net = coder.loadDeepLearningNetwork(filename) загружает предварительно обученную SeriesNetwork глубокого обучения (Deep Learning Toolbox), DAGNetwork (Deep Learning Toolbox), yolov2ObjectDetector (Computer Vision Toolbox), или ssdObjectDetector (Computer Vision Toolbox) объект сохранен в filename MAT-файл. filename должен быть допустимым MAT-файлом, существующим в MATLAB® путь, содержащий одну SeriesNetwork, DAGNetwork, yolov2ObjectDetector, или ssdObjectDetector объект. MAT-файл должен содержать только загружаемую сеть.

пример

net = coder.loadDeepLearningNetwork(functionname) вызывает функцию, которая возвращает предварительно обученное глубокое обучение SeriesNetwork, DAGNetwork, yolov2ObjectDetector, или ssdObjectDetector объект. functionname должно быть именем функции, существующей в пути MATLAB, который возвращает SeriesNetwork, DAGNetwork, yolov2ObjectDetector, или ssdObjectDetector объект.

пример

net = coder.loadDeepLearningNetwork(___,network_name) то же, что и net = coder.loadDeepLearningNetwork(filename) с опцией присвоения имени классу C++, сгенерированному из сети. network_name - описательное имя сетевого объекта, сохраненное в MAT-файле или указанное функцией. Сетевое имя должно быть char тип, являющийся допустимым идентификатором на C++.

Используйте эту функцию при генерации кода из вывода сетевого объекта. Эта функция генерирует класс C++ из этой сети. Имя класса определяется как имя MAT-файла или как имя функции.

Примеры

свернуть все

Использование coder.loadDeepLearningNetwork функция для загрузки VGG-16 последовательная сеть и сгенерируйте код С++ для этой сети.

Получите MAT-файл, содержащий предварительно обученные VGG-16 сети.

url = 'https://www.mathworks.com/supportfiles/gpucoder/cnn_models/VGG/vgg16.mat';
websave('vgg16.mat',url);

Создайте функцию точки входа myVGG16 который использует coder.loadDeepLearningNetwork функция для загрузки vgg16.mat в постоянную mynet SeriesNetwork объект.

function out = myVGG16(in)

persistent mynet;
if isempty(mynet)
    mynet = coder.loadDeepLearningNetwork('vgg16.mat', 'myVGGnet');
end

out = predict(mynet,in);

Постоянный объект избегает восстановления и перезагрузки сетевого объекта во время последующих вызовов функции, чтобы вызвать predict метод на входе.

Слой входа предварительно обученного VGG-16 сеть принимает изображения размера 224x224x3. Используйте следующие строки кода, чтобы считать вход изображение из графического файла и изменить его размер на 224x224.

in = imread('peppers.png');
in = imresize(in,[224,224]);

Создайте coder.config объект строения для генерации кода MEX и установите целевой язык на C++. На объекте строения задайте DeepLearningConfig с targetlib как 'mkldnn'. codegen функция должна определять размер, класс и сложность входов функции MATLAB. Используйте -args опция для задания размера входного параметра функции точки входа. Используйте -config опция для передачи объекта строения кода.

cfg = coder.config('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('mkldnn'); 
codegen -args {ones(224,224,3,'uint8')} -config cfg myVGG16 -report;

The codegen команда помещает все сгенерированные файлы в codegen папка. Папка содержит код С++ для функции точки входа myVGG16.cpp, заголовок и исходные файлы, содержащие определения классов C++ для свернутых файлов нейронной сети (CNN), веса и смещения.

Функции VGG-16 предсказать на вход изображении и отобразить пять лучших предсказанных меток.

predict_scores = myVGG16_mex(in);
[scores,indx] = sort(predict_scores, 'descend');
net = coder.loadDeepLearningNetwork('vgg16.mat');
classNames = net.Layers(end).Classes;
disp(classNames(indx(1:5)));
     bell pepper 
     cucumber 
     grocery store 
     acorn squash 
     butternut squash 

Использование coder.loadDeepLearningNetwork функция для загрузки resnet50 последовательная сеть и сгенерировать CUDA® код для этой сети.

Создайте функцию точки входа resnetFun который использует coder.loadDeepLearningNetwork функция для вызова функции тулбокса Toolbox™ Deep Learning resnet50. Эта функция возвращает предварительно обученное ResNet-50 сети.

function out = resnetFun(in)

persistent mynet;
if isempty(mynet)
    mynet = coder.loadDeepLearningNetwork('resnet50', 'myresnet');
end

out = predict(mynet,in);

Постоянный объект избегает восстановления и перезагрузки сетевого объекта во время последующих вызовов функции, чтобы вызвать predict метод на входе.

Слой входа предварительно обученного ResNet-50 сеть принимает изображения размера 224x224x3. Чтобы считать вход изображение из графического файла и изменить его размер на 224x224, используйте следующие строки кода:

in = imread('peppers.png');
in = imresize(in,[224,224]);

Создайте coder.gpuConfig объект строения для генерации кода MEX и установите целевой язык на C++. codegen функция должна определять размер, класс и сложность входов функции MATLAB. Используйте -args опция, чтобы задать размер входного параметра для функции точки входа и -config опция для передачи объекта строения кода.

cfg = coder.gpuConfig('mex');
cfg.TargetLang = 'C++';
cfg.DeepLearningConfig = coder.DeepLearningConfig('cudnn'); 
codegen -args {ones(224,224,3,'uint8')} -config cfg resnetFun -report;

The codegen команда помещает все сгенерированные файлы в codegen папка. Он содержит код CUDA для функции точки входа resnetFun.cu, заголовок и исходные файлы, содержащие определения классов C++ для свернутых файлов нейронной сети (CNN), веса и смещения.

Входные параметры

свернуть все

Задает имя MAT-файла, содержащего предварительно обученную SeriesNetwork, DAGNetwork, yolov2ObjectDetector, или ssdObjectDetector объект.

Типы данных: string

Задает имя функции, которая возвращает предварительно обученное SeriesNetwork, DAGNetwork, yolov2ObjectDetector, или ssdObjectDetector объект.

Типы данных: string

Описательное имя сетевого объекта, сохраненного в MAT-файле. Это должно быть char тип, являющийся допустимым идентификатором на C++.

Типы данных: char

Выходные аргументы

свернуть все

Вывод сети, возвращенный как SeriesNetwork, DAGNetwork, yolov2ObjectDetector, или ssdObjectDetector объект.

Ограничения

  • coder.loadDeepLearningNetwork не поддерживает загрузку MAT-файлов с несколькими сетями.

  • MAT-файл должен содержать только загружаемую сеть.

Введенный в R2017b