coder.loadDeepLearningNetwork

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

Описание

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

пример

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

пример

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;

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 функционируйте, чтобы вызвать функцию тулбокса Deep Learning Toolbox™ 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;

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

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

свернуть все

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

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

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

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

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

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

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

свернуть все

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

Ограничения

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

Введенный в R2017b