Импортируйте предварительно обученную сеть ONNX
импортирует предварительно обученную сеть ONNX™ (Open Neural Network Exchange) из файла net = importONNXNetwork(modelfile)modelfile. Функция возвращает сеть net как DAGNetwork или dlnetwork объект.
importONNXNetwork требует Конвертера Deep Learning Toolbox™ для пакета поддержки Формата Модели ONNX. Если этот пакет поддержки не установлен, то importONNXNetwork обеспечивает ссылку на загрузку.
Примечание
По умолчанию, importONNXNetwork попытки сгенерировать пользовательский слой, когда программное обеспечение не может преобразовать оператор ONNX в эквивалентный встроенный MATLAB® слой. Для списка операторов, для которых программное обеспечение поддерживает преобразование, см. Операторы ONNX, Поддержанные для Преобразования на Встроенные Слои MATLAB.
importONNXNetwork сохраняет сгенерированные пользовательские слои в пакете +.modelfile
importONNXNetwork автоматически не генерирует пользовательский слой для каждого оператора ONNX, который не поддерживается для преобразования на встроенный слой MATLAB. Для получения дополнительной информации о том, как обработать неподдерживаемые слои, см. альтернативную функциональность.
импортирует предварительно обученную сеть ONNX с дополнительными опциями, заданными одними или несколькими аргументами name-value. Например, net = importONNXNetwork(modelfile,Name=Value)OutputLayerType="classification" импортирует сеть как DAGNetwork объект с классификацией вывел слой, добавленный в конец первой выходной ветви импортированной сетевой архитектуры.
Загрузите и установите Конвертер Deep Learning Toolbox для пакета поддержки Формата Модели ONNX.
Введите importONNXNetwork в командной строке.
importONNXNetwork
Если Конвертер Deep Learning Toolbox для Формата Модели ONNX не установлен, то функция обеспечивает ссылку на необходимый пакет поддержки в Add-On Explorer. Чтобы установить пакет поддержки, щелкните по ссылке, и затем нажмите Install. Проверяйте, что установка успешна путем импорта сети из файла модели "simplenet.onnx" в командной строке. Если пакет поддержки установлен, то функция возвращает DAGNetwork объект.
modelfile = "simplenet.onnx";
net = importONNXNetwork(modelfile)net =
DAGNetwork with properties:
Layers: [9×1 nnet.cnn.layer.Layer]
Connections: [8×2 table]
InputNames: {'imageinput'}
OutputNames: {'ClassificationLayer_softmax1002'}
Постройте сетевую архитектуру.
plot(net)

DAGNetworkИмпортируйте предварительно обученную сеть ONNX как DAGNetwork объект и использование импортированная сеть, чтобы классифицировать изображение.
Сгенерируйте модель ONNX squeezenet нейронная сеть свертки.
squeezeNet = squeezenet;
exportONNXNetwork(squeezeNet,"squeezeNet.onnx");Задайте имена классов.
ClassNames = squeezeNet.Layers(end).Classes;
Импортируйте предварительно обученный squeezeNet.onnx модель, и задает классы. По умолчанию, importONNXNetwork импортирует сеть как DAGNetwork объект.
net = importONNXNetwork("squeezeNet.onnx",Classes=ClassNames)net =
DAGNetwork with properties:
Layers: [70×1 nnet.cnn.layer.Layer]
Connections: [77×2 table]
InputNames: {'data'}
OutputNames: {'ClassificationLayer_prob'}
Анализируйте импортированную сеть.
analyzeNetwork(net)

Считайте изображение, вы хотите классифицировать и отобразить размер изображения. Изображение является 384 512 пикселями и имеет три цветовых канала (RGB).
I = imread("peppers.png");
size(I)ans = 1×3
384 512 3
Измените размер изображения к входному размеру сети. Покажите изображение.
I = imresize(I,[227 227]); imshow(I)

Классифицируйте изображение с помощью импортированной сети.
label = classify(net,I)
label = categorical
bell pepper
dlnetworkИмпортируйте предварительно обученную сеть ONNX как dlnetwork объект и использование импортированная сеть, чтобы классифицировать изображение.
Сгенерируйте модель ONNX squeezenet нейронная сеть свертки.
squeezeNet = squeezenet;
exportONNXNetwork(squeezeNet,"squeezeNet.onnx");Задайте имена классов.
ClassNames = squeezeNet.Layers(end).Classes;
Импортируйте предварительно обученный squeezeNet.onnx модель как dlnetwork объект.
net = importONNXNetwork("squeezeNet.onnx",TargetNetwork="dlnetwork")
net =
dlnetwork with properties:
Layers: [70×1 nnet.cnn.layer.Layer]
Connections: [77×2 table]
Learnables: [52×3 table]
State: [0×3 table]
InputNames: {'data'}
OutputNames: {'probOutput'}
Initialized: 1
Считайте изображение, вы хотите классифицировать и отобразить размер изображения. Изображение является 384 512 пикселями и имеет три цветовых канала (RGB).
I = imread("peppers.png");
size(I)ans = 1×3
384 512 3
Измените размер изображения к входному размеру сети. Покажите изображение.
I = imresize(I,[227 227]); imshow(I)

Преобразуйте изображение в dlarray. Отформатируйте изображения с размерностями "SSCB" (пространственный, пространственный, канал, пакет). В этом случае пакетный размер равняется 1, и можно не использовать его ("SSC").
I_dlarray = dlarray(single(I),"SSCB");Классифицируйте демонстрационное изображение и найдите предсказанную метку.
prob = predict(net,I_dlarray); [~,label] = max(prob);
Отобразите результат классификации.
ClassNames(label)
ans = categorical
bell pepper
Импортируйте предварительно обученную сеть ONNX как DAGNetwork объект и использование импортированная сеть, чтобы классифицировать изображение. Импортированная сеть содержит операторы ONNX, которые не поддерживаются для преобразования на встроенные слои MATLAB. Программное обеспечение автоматически генерирует пользовательские слои, когда вы импортируете эти операторы.
Этот пример использует функцию помощника findCustomLayers. Чтобы просмотреть код для этой функции, смотрите Функцию Помощника.
Задайте файл модели, чтобы импортировать как shufflenet с оператором устанавливает 9 из Зоопарка Модели ONNX. shufflenet сверточная нейронная сеть, которая обучена больше чем на миллионе изображений от базы данных ImageNet. В результате сеть изучила богатые представления функции для широкого спектра изображений. Сеть может классифицировать изображения в 1 000 категорий объектов, таких как клавиатура, мышь, карандаш и многие животные.
modelfile = "shufflenet-9.onnx";Импортируйте имена классов из squeezenet, который также обучен с изображениями от базы данных ImageNet.
squeezeNet = squeezenet; ClassNames = squeezeNet.Layers(end).ClassNames;
Импортируйте shufflenet. По умолчанию, importONNXNetwork импортирует сеть как DAGNetwork объект. Если импортированная сеть содержит операторы ONNX, не поддержанные для преобразования на встроенные слои MATLAB, то importONNXNetwork может автоматически сгенерировать пользовательские слои вместо этих операторов. importONNXNetwork сохраняет каждый сгенерированный пользовательский слой в отдельный .m файл в пакете +shufflenet_9 в текущей папке. Задайте имя пакета при помощи аргумента PackageName значения имени.
net = importONNXNetwork(modelfile,... Classes=ClassNames,PackageName="shufflenet_9")
net =
DAGNetwork with properties:
Layers: [173×1 nnet.cnn.layer.Layer]
Connections: [188×2 table]
InputNames: {'gpu_0_data_0'}
OutputNames: {'ClassificationLayer_gpu_0_softmax_1'}
Найдите индексы автоматически сгенерированных пользовательских слоев при помощи функции помощника findCustomLayers, и отобразите пользовательские слои.
ind = findCustomLayers(net.Layers,'+shufflenet_9');
net.Layers(ind)ans =
16×1 Layer array with layers:
1 'Reshape_To_ReshapeLayer1004' shufflenet_9.Reshape_To_ReshapeLayer1004 shufflenet_9.Reshape_To_ReshapeLayer1004
2 'Reshape_To_ReshapeLayer1009' shufflenet_9.Reshape_To_ReshapeLayer1009 shufflenet_9.Reshape_To_ReshapeLayer1009
3 'Reshape_To_ReshapeLayer1014' shufflenet_9.Reshape_To_ReshapeLayer1014 shufflenet_9.Reshape_To_ReshapeLayer1014
4 'Reshape_To_ReshapeLayer1019' shufflenet_9.Reshape_To_ReshapeLayer1019 shufflenet_9.Reshape_To_ReshapeLayer1019
5 'Reshape_To_ReshapeLayer1024' shufflenet_9.Reshape_To_ReshapeLayer1024 shufflenet_9.Reshape_To_ReshapeLayer1024
6 'Reshape_To_ReshapeLayer1029' shufflenet_9.Reshape_To_ReshapeLayer1029 shufflenet_9.Reshape_To_ReshapeLayer1029
7 'Reshape_To_ReshapeLayer1034' shufflenet_9.Reshape_To_ReshapeLayer1034 shufflenet_9.Reshape_To_ReshapeLayer1034
8 'Reshape_To_ReshapeLayer1039' shufflenet_9.Reshape_To_ReshapeLayer1039 shufflenet_9.Reshape_To_ReshapeLayer1039
9 'Reshape_To_ReshapeLayer1044' shufflenet_9.Reshape_To_ReshapeLayer1044 shufflenet_9.Reshape_To_ReshapeLayer1044
10 'Reshape_To_ReshapeLayer1049' shufflenet_9.Reshape_To_ReshapeLayer1049 shufflenet_9.Reshape_To_ReshapeLayer1049
11 'Reshape_To_ReshapeLayer1054' shufflenet_9.Reshape_To_ReshapeLayer1054 shufflenet_9.Reshape_To_ReshapeLayer1054
12 'Reshape_To_ReshapeLayer1059' shufflenet_9.Reshape_To_ReshapeLayer1059 shufflenet_9.Reshape_To_ReshapeLayer1059
13 'Reshape_To_ReshapeLayer1064' shufflenet_9.Reshape_To_ReshapeLayer1064 shufflenet_9.Reshape_To_ReshapeLayer1064
14 'Reshape_To_ReshapeLayer1069' shufflenet_9.Reshape_To_ReshapeLayer1069 shufflenet_9.Reshape_To_ReshapeLayer1069
15 'Reshape_To_ReshapeLayer1074' shufflenet_9.Reshape_To_ReshapeLayer1074 shufflenet_9.Reshape_To_ReshapeLayer1074
16 'Reshape_To_ReshapeLayer1079' shufflenet_9.Reshape_To_ReshapeLayer1079 shufflenet_9.Reshape_To_ReshapeLayer1079
Считайте изображение, вы хотите классифицировать и отобразить размер изображения. Изображение является 792 1056 пикселями и имеет три цветовых канала (RGB).
I = imread("peacock.jpg");
size(I)ans = 1×3
792 1056 3
Измените размер изображения к входному размеру сети. Покажите изображение.
I = imresize(I,[224 224]); imshow(I)

Входные параметры к shufflenet потребуйте дальнейшей предварительной обработки (для получения дополнительной информации смотрите ShuffleNet в Зоопарке Модели ONNX). Перемасштабируйте изображение. Нормируйте изображение путем вычитания среднего значения учебных изображений и деления на стандартное отклонение учебных изображений.
I = rescale(I,0,1); meanIm = [0.485 0.456 0.406]; stdIm = [0.229 0.224 0.225]; I = (I - reshape(meanIm,[1 1 3]))./reshape(stdIm,[1 1 3]); imshow(I)

Классифицируйте изображение с помощью импортированной сети.
label = classify(net,I)
label = categorical
peacock
Функция помощника
Этот раздел предоставляет код функции помощника findCustomLayers используемый в этом примере. findCustomLayers возвращает indices из пользовательских слоев, что importONNXNetwork автоматически генерирует.
function indices = findCustomLayers(layers,PackageName) s = what(['.\' PackageName]); indices = zeros(1,length(s.m)); for i = 1:length(layers) for j = 1:length(s.m) if strcmpi(class(layers(i)),[PackageName(2:end) '.' s.m{j}(1:end-2)]) indices(j) = i; end end end end
Импортируйте сеть ONNX, которая имеет несколько выходных параметров как DAGNetwork объект.
Задайте файл модели ONNX и импортируйте предварительно обученную модель ONNX. По умолчанию, importONNXNetwork импортирует сеть как DAGNetwork объект.
modelfile = "digitsMIMO.onnx";
net = importONNXNetwork(modelfile)net =
DAGNetwork with properties:
Layers: [19×1 nnet.cnn.layer.Layer]
Connections: [19×2 table]
InputNames: {'input'}
OutputNames: {'ClassificationLayer_sm_1' 'RegressionLayer_fc_1_Flatten'}
Сеть имеет два выходных слоя: один слой классификации (ClassificationLayer_sm_1) классифицировать цифры и один слой регрессии (RegressionLayer_fc_1_Flatten) вычислить среднеквадратическую ошибку для предсказанных углов цифр. Постройте сетевую архитектуру.
plot(net)
title('digitsMIMO Network Architecture')
Чтобы сделать предсказания с помощью импортированной сети, используйте predict функция и набор ReturnCategorical опция к true.
modelfile — Имя файла модели ONNXИмя файла модели ONNX, содержащего сеть в виде вектора символов или строкового скаляра. Файл должен быть в текущей папке или в папке на пути MATLAB, или необходимо включать полный или относительный путь в файл.
Пример: "cifarResNet.onnx"
Задайте дополнительные пары аргументов как Name1=Value1,...,NameN=ValueN, где Name имя аргумента и Value соответствующее значение. Аргументы name-value должны появиться после других аргументов, но порядок пар не имеет значения.
importONNXNetwork(modelfile,TargetNetwork="dagnetwork",GenerateCustomLayers=true,PackageName="CustomLayers") импортирует сеть в modelfile как DAGNetwork возразите и сохраняет автоматически сгенерированные пользовательские слои в пакете +CustomLayers в текущей папке.GenerateCustomLayers — Опция для пользовательской генерации слояtrue или 1 (значение по умолчанию) | false или 0Опция для пользовательской генерации слоя в виде числового или логического 1 TRUE) или 0 ложь). Если вы устанавливаете GenerateCustomLayers к true, importONNXNetwork попытки сгенерировать пользовательский слой, когда программное обеспечение не может преобразовать оператор ONNX на эквивалентный встроенный слой MATLAB. importONNXNetwork сохраняет каждый сгенерированный пользовательский слой в отдельный .m файл в +. Чтобы просмотреть или отредактировать пользовательский слой, откройте связанный PackageName.m файл. Для получения дополнительной информации о пользовательских слоях смотрите Глубокое обучение Пользовательские Слои.
Пример: GenerateCustomLayers=false
PackageName — Имя пользовательского пакета слоевИмя пакета, в который importONNXNetwork сохраняет пользовательские слои в виде вектора символов или строкового скаляра. importONNXNetwork сохраняет пользовательский пакет слоев + в текущей папке. Если вы не задаете PackageNamePackageNameто importONNXNetwork сохраняет пользовательские слои в пакете, названном + в текущей папке. Для получения дополнительной информации о пакетах смотрите, что Пакеты Создают Пространства имен.modelfile
Пример: PackageName="shufflenet_9"
Пример: PackageName="CustomLayers"
TargetNetwork — Целевой тип сети Deep Learning Toolbox"dagnetwork" (значение по умолчанию) | "dlnetwork"Целевой тип сети Deep Learning Toolbox в виде "dagnetwork" или "dlnetwork". Функция importONNXNetwork импортирует сеть net как DAGNetwork или dlnetwork объект.
Если вы импортируете сеть как DAGNetwork объект, net должен включать входные и выходные слои, заданные моделью ONNX или что вы задаете использование аргументов name-value InputDataFormats, OutputDataFormats, или OutputLayerType.
Если вы импортируете сеть как dlnetwork объект, importONNXNetwork добавляет CustomOutputLayer в конце каждой выходной ветви net, и может добавить CustomInputLayer в начале входной ветви. Функция добавляет CustomInputLayer если форматы входных данных или входные размеры изображения не известны. Дополнительные сведения о форматах данных этих слоев см. в свойствах CustomInputLayer и CustomOutputLayer объекты. Для получения информации о том, как интерпретировать форматы входных и выходных данных Deep Learning Toolbox, смотрите Преобразование Тензоров Ввода и вывода ONNX на Встроенные Слои MATLAB.
Пример: TargetNetwork="dlnetwork"
InputDataFormats — Формат данных сетевых входных параметровФормат данных сети вводит в виде вектора символов, строкового скаляра или массива строк. importONNXNetwork попытки интерпретировать форматы входных данных из файла ONNX. Аргумент InputDataFormats значения имени полезно когда importONNXNetwork не может вывести форматы входных данных.
Установите InputDataFomats к формату данных в упорядоченном расположении тензора входа ONNX. Например, если вы задаете InputDataFormats как "BSSC", импортированная сеть имеет один imageInputLayer входной параметр. Для получения дополнительной информации о как importONNXNetwork интерпретирует формат данных тензоров входа ONNX и как задать InputDataFormats для различных слоев входа Deep Learning Toolbox смотрите Преобразование Тензоров Ввода и вывода ONNX на Встроенные Слои MATLAB.
Если вы задаете пустой формат данных ([] или ""), importONNXNetwork автоматически интерпретирует формат входных данных.
Пример: InputDataFormats='BSSC'
Пример: InputDataFormats="BSSC"
Пример: InputDataFormats=["BCSS","","BC"]
Пример: InputDataFormats={'BCSS',[],'BC'}
Типы данных: char | string | cell
OutputDataFormats — Формат данных сетевых выходных параметровФормат данных сетевых выходных параметров в виде вектора символов, строкового скаляра или массива строк. importONNXNetwork попытки интерпретировать форматы выходных данных из файла ONNX. Аргумент OutputDataFormats значения имени полезно когда importONNXNetwork не может вывести форматы выходных данных.
Установите OutputDataFormats к формату данных в упорядоченном расположении ONNX тензор выхода. Например, если вы задаете OutputDataFormats как "BC", импортированная сеть имеет один classificationLayer вывод . Для получения дополнительной информации о как importONNXNetwork интерпретирует формат данных ONNX тензоры выхода и как задать OutputDataFormats для различного Deep Learning Toolbox слои выхода смотрите Преобразование Тензоров Ввода и вывода ONNX на Встроенные Слои MATLAB.
Если вы задаете пустой формат данных ([] или ""), importONNXNetwork автоматически интерпретирует формат выходных данных.
Пример: OutputDataFormats='BC'
Пример: OutputDataFormats="BC"
Пример: OutputDataFormats=["BCSS","","BC"]
Пример: OutputDataFormats={'BCSS',[],'BC'}
Типы данных: char | string | cell
ImageInputSize — Размер входа отображает для первого сетевого входаРазмер входа отображает для первого сетевого входа в виде вектора из трех или четырех численных значений, соответствующих [height,width,channels] для 2D изображений и [height,width,depth,channels] для 3-D изображений. Сеть использует эту информацию только когда модель ONNX в modelfile не задает входной размер.
Пример: ImageInputSize=[28 28 1] для 2D полутонового входного изображения
Пример: ImageInputSize=[224 224 3] для 2D цветного входного изображения
Пример: ImageInputSize=[28 28 36 3] для 3-D цветного входного изображения
OutputLayerType — Тип слоя для первого сетевого выхода"classification" | "regression" | "pixelclassification"Тип слоя для первого сетевого выхода в виде "classification", "regression", или "pixelclassification". Функция importONNXNetwork добавляет ClassificationOutputLayer, RegressionOutputLayer, или pixelClassificationLayer Объект (Computer Vision Toolbox) в конец первой выходной ветви импортированной сетевой архитектуры. Добавление pixelClassificationLayer Объект (Computer Vision Toolbox) требует Computer Vision Toolbox™. Если модель ONNX в modelfile задает выходной тип слоя, или вы задаете TargetNetwork как "dlnetwork", importONNXNetwork игнорирует аргумент OutputLayerType значения имени.
Пример: OutputLayerType="regression"
Classes — Классы выходного слоя для первого сетевого выхода"auto" (значение по умолчанию) | категориальный вектор | массив строк | массив ячеек из символьных векторов
Классы выходного слоя для первого сетевого выхода в виде категориального вектора, массива строк, массива ячеек из символьных векторов или "auto". Если Classes "auto"то importONNXNetwork устанавливает классы на categorical(1:N), где N количество классов. Если вы задаете массив строк или массив ячеек из символьных векторов strто importONNXNetwork устанавливает классы выходного слоя к categorical(str,str). Если вы задаете TargetNetwork как "dlnetwork", importONNXNetwork игнорирует аргумент Classes значения имени.
Пример: Classes={'0','1','3'}
Пример: Classes=categorical({'dog','cat'})
Типы данных: char | categorical | string | cell
FoldConstants — Оптимизация сворачивания констант"deep" (значение по умолчанию) | "shallow" | "none"Оптимизация сворачивания констант в виде "deep", "shallow", или "none". Сворачивание констант оптимизирует импортированную сетевую архитектуру вычислительными операциями на инициализаторах ONNX (начальные постоянные значения) во время преобразования операторов ONNX к эквивалентным встроенным слоям MATLAB.
Если сеть ONNX содержит операторы, которые программное обеспечение не может преобразовать в эквивалентные встроенные слои MATLAB (см. Операторы ONNX, Поддержанные для Преобразования на Встроенные Слои MATLAB), оптимизация сворачивания констант может сократить количество неподдерживаемых слоев. Когда вы устанавливаете FoldConstants к "deep", сеть имеет то же самое или меньше неподдерживаемых слоев, по сравнению с тем, когда вы устанавливаете аргумент на "shallow". Однако время импорта сети может увеличиться. Установите FoldConstants к "none" отключить сетевую оптимизацию архитектуры.
Если сеть все еще содержит неподдерживаемые слои после оптимизации сворачивания констант, importONNXNetwork возвращает ошибку. В этом случае можно импортировать сеть при помощи importONNXLayers или importONNXFunction. Для получения дополнительной информации см. альтернативную функциональность.
Пример: FoldConstants="shallow"
net — Сеть Pretrained ONNXDAGNetwork возразите | dlnetwork объектПредварительно обученная сеть ONNX, возвращенная как DAGNetwork или dlnetwork объект.
Задайте TargetNetwork как "dagnetwork" импортировать сеть как DAGNetwork объект. На DAGNetwork объект, вы затем предсказываете метки класса при помощи classify функция.
Задайте TargetNetwork как "dlnetwork" импортировать сеть как dlnetwork объект. На dlnetwork объект, вы затем предсказываете метки класса при помощи predict функция. Задайте входные данные как dlarray с помощью правильного формата данных (для получения дополнительной информации, смотрите fmt аргумент dlarray).
importONNXNetwork поддержки версии ONNX можно следующим образом:
Функция поддерживает промежуточную версию 6 представления ONNX.
Функция поддерживает наборы оператора ONNX 6 - 13.
Примечание
Если вы импортируете экспортируемую сеть, слои повторно импортированной сетевой силы отличаются от исходной сети и не могут поддерживаться.
importONNXNetwork поддерживает следующие операторы ONNX для преобразования на встроенные слои MATLAB, с некоторыми ограничениями.
| Оператор ONNX | Слой Deep Learning Toolbox |
|---|---|
| additionLayer или nnet.onnx.layer.ElementwiseAffineLayer |
| averagePooling2dLayer |
| batchNormalizationLayer |
| concatenationLayer |
| Ни один (Импортированный как веса) |
| convolution2dLayer |
| transposedConv2dLayer |
| dropoutLayer |
| eluLayer |
| fullyConnectedLayer если сеть ONNX является текущей, в противном случае nnet.onnx.layer.FlattenLayer сопровождаемый convolution2dLayer |
| globalAveragePooling2dLayer |
| globalMaxPooling2dLayer |
| gruLayer |
| groupNormalizationLayer с numGroups заданный как "channel-wise" |
| leakyReluLayer |
| CrossChannelNormalizationLayer |
| lstmLayer или bilstmLayer |
| fullyConnectedLayer если сеть ONNX является текущей, в противном случае convolution2dLayer |
| maxPooling2dLayer |
| multiplicationLayer |
| reluLayer или clippedReluLayer |
| sigmoidLayer |
| |
| additionLayer |
| tanhLayer |
*Если pads атрибут Conv оператор является вектором только с двумя элементами [p1,p2], importONNXNetwork импорт Conv как convolution2dLayer с аргументом 'Padding' значения имени заданный как [p1,p2,p1,p2].
| Оператор ONNX | Средство импорта ONNX пользовательский слой |
|---|---|
| nnet.onnx.layer.ClipLayer |
| nnet.onnx.layer.ElementwiseAffineLayer |
| nnet.onnx.layer.FlattenLayer или nnet.onnx.layer.Flatten3dLayer |
| nnet.onnx.layer.IdentityLayer |
| nnet.onnx.layer.ElementwiseAffineLayer |
| nnet.onnx.layer.PReluLayer |
| nnet.onnx.layer.FlattenLayer |
| nnet.onnx.layer.ElementwiseAffineLayer |
| Оператор ONNX | Image Processing Toolbox™ |
|---|---|
DepthToSpace | depthToSpace2dLayer (Image Processing Toolbox) |
Resize | resize2dLayer (Image Processing Toolbox) или resize3dLayer (Image Processing Toolbox) |
SpaceToDepth | spaceToDepthLayer (Image Processing Toolbox) |
Upsample | resize2dLayer (Image Processing Toolbox) или resize3dLayer (Image Processing Toolbox) |
importONNXNetwork попытки интерпретировать формат данных тензоров ввода и вывода сети ONNX, и затем преобразовать их во встроенные входные и выходные слои MATLAB. Для получения дополнительной информации на интерпретации, см. таблицы Conversion Входных Тензоров ONNX на Слои Deep Learning Toolbox и Преобразование ONNX Выходные Тензоры на Слои MATLAB.
В Deep Learning Toolbox каждый символ формата данных должен быть одной из этих меток:
S — Пространственный
C — Канал
B — Пакетные наблюдения
T — Время или последовательность
U — Незаданный
Преобразование входных тензоров ONNX на слои Deep Learning Toolbox
| Форматы данных | Интерпретация данных | Слой Deep Learning Toolbox | ||
|---|---|---|---|---|
| Вход ONNX Tensor | Формат ввода MATLAB | Форма | Ввод | |
BC | CB | c-by-n массив, где c является количеством функций и n, является количеством наблюдений | Функции | featureInputLayer |
BCSS, BSSC, CSS, SSC | SSCB | h-by-w-by-c-by-n числовой массив, где h, w, c и n являются высотой, шириной, количеством каналов изображений и количеством наблюдений, соответственно | 2D изображение | imageInputLayer |
BCSSS, BSSSC, CSSS, SSSC | SSSCB | h-by-w-by-d-by-c числовой массив, где h, w, d, c и n являются высотой, шириной, глубиной, количеством каналов изображений и количеством наблюдений изображений, соответственно | 3-D изображение | image3dInputLayer |
TBC | CBT | c-by-s-by-n матрица, где c является количеством функций последовательности, s, является длиной последовательности, и n является количеством наблюдений последовательности | Векторная последовательность | sequenceInputLayer |
TBCSS | SSCBT | h-by-w-by-c-by-s-by-n массив, где h, w, c и n соответствуют высоте, ширине и количеству каналов изображения, соответственно, s, является длиной последовательности, и n является количеством наблюдений последовательности изображений | 2D последовательность изображений | sequenceInputLayer |
TBCSSS | SSSCBT | h-by-w-by-d-by-c-by-s-by-n массив, где h, w, d и c соответствуют высоте, ширине, глубине и количеству каналов изображения, соответственно, s, является длиной последовательности, и n является количеством наблюдений последовательности изображений | 3-D последовательность изображений | sequenceInputLayer |
Преобразование ONNX Выходные тензоры на слои MATLAB
| Форматы данных | Слой MATLAB | |
|---|---|---|
| ONNX Выход Tensor | Выходной формат MATLAB | |
BC, TBC | CB, CBT | classificationLayer |
BCSS, BSSC, CSS, SSC, BCSSS, BSSSC, CSSS, SSSC | SSCB, SSSCB | pixelClassificationLayer (Computer Vision Toolbox) |
TBCSS, TBCSSS | SSCBT, SSSCBT | regressionLayer |
importONNXNetwork не выполняется на графическом процессоре. Однако importONNXNetwork импортирует предварительно обученную нейронную сеть для глубокого обучения как DAGNetwork или dlnetwork объект, который можно использовать на графическом процессоре.
Если вы импортируете сеть как DAGNetwork объект, можно сделать предсказания с импортированной сетью или на центральном процессоре или на графическом процессоре при помощи classify. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Для сетей с несколькими выходными параметрами используйте predict функция для DAGNetwork объекты.
Если вы импортируете сеть как DAGNetwork объект, можно сделать предсказания с импортированной сетью или на центральном процессоре или на графическом процессоре при помощи predict. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Если сеть имеет несколько выходных параметров, задайте аргумент ReturnCategorical значения имени как true.
Если вы импортируете сеть как dlnetwork объект, можно сделать предсказания с импортированной сетью или на центральном процессоре или на графическом процессоре при помощи predict. Функция predict выполняется на графическом процессоре, если или входные данные или сетевые параметры хранятся на графическом процессоре.
Если вы используете minibatchqueue обработать и управлять мини-пакетами входных данных, minibatchqueue объект преобразует выход в массив графического процессора по умолчанию, если графический процессор доступен.
Использование dlupdate преобразовывать настраиваемые параметры dlnetwork возразите против массивов графического процессора.
dlnet = dlupdate(@gpuarray,dlnet)
Можно обучить импортированную сеть или на центральном процессоре или на графическом процессоре при помощи trainNetwork. Задавать опции обучения, включая опции для среды выполнения, использование trainingOptions функция. Задайте требования к аппаратным средствам с помощью аргумента ExecutionEnvironment значения имени. Для получения дополнительной информации о том, как ускорить обучение, смотрите, Увеличивают Глубокое обучение параллельно, на графических процессорах, и в Облаке.
Используя графический процессор требует Parallel Computing Toolbox™ и поддерживаемого устройства графического процессора. Для получения информации о поддерживаемых устройствах смотрите Поддержку графического процессора Релизом (Parallel Computing Toolbox).
Чтобы использовать предварительно обученную сеть для предсказания или передачи обучения на новых изображениях, необходимо предварительно обработать изображения таким же образом изображения, которые использовались, чтобы обучаться, импортированная модель были предварительно обработаны. Наиболее распространенные шаги предварительной обработки изменяют размер изображений, вычитая средние значения изображений, и преобразовывая изображения от изображений BGR до RGB.
Для получения дополнительной информации о предварительной обработке изображений для обучения и предсказания, смотрите, Предварительно обрабатывают Изображения для Глубокого обучения.
Конвертер Deep Learning Toolbox для Формата Модели ONNX обеспечивает три функции, чтобы импортировать предварительно обученную сеть ONNX: importONNXNetwork, importONNXLayers, и importONNXFunction.
Если импортированная сеть содержит оператор ONNX, не поддержанный для преобразования на встроенный слой MATLAB (см. Операторы ONNX, Поддержанные для Преобразования на Встроенные Слои MATLAB), и importONNXNetwork не генерирует пользовательский слой, затем importONNXNetwork возвращает ошибку. В этом случае можно все еще использовать importONNXLayers импортировать сетевую архитектуру и веса или importONNXFunction импортировать сеть как ONNXParameters возразите и функция модели.
Для получения дополнительной информации о котором функция импорта лучше всего удовлетворяет различным сценариям, смотрите, Выбирают Function to Import ONNX Pretrained Network.
ClassNames опция была удаленаОшибки, запускающиеся в R2021b
ClassNames был удален. Используйте Classes вместо этого. Чтобы обновить ваш код, замените все экземпляры ClassNames с Classes.
importONNXNetwork не может создать входные и выходные слои из информации о файле ONNXПоведение изменяется в R2021b
Если вы импортируете модель ONNX как DAGNetwork объект, импортированная сеть должна включать входные и выходные слои. importONNXNetwork попытки преобразовать ввод и вывод тензоры ONNX на встроенные слои MATLAB. При импорте некоторых сетей, который importONNXNetwork мог ранее импортировать с вводом и выводом встроенные слои MATLAB, importONNXNetwork может теперь возвратить ошибку. В этом случае сделайте одно из следующих, чтобы обновить ваш код:
Задайте аргумент TargetNetwork значения имени как "dlnetwork" импортировать сеть как dlnetwork объект.
Используйте аргументы name-value InputDataFormats, OutputDataFormats, и OutputLayerType задавать вводы и выводы импортированной сети.
Использование importONNXLayers импортировать сеть как график слоев со слоями заполнителя.
Использование importONNXFunction импортировать сеть как функцию модели и ONNXParameters объект.
importCaffeLayers | importCaffeNetwork | importKerasLayers | importKerasNetwork | importONNXLayers | exportONNXNetwork | importONNXFunction | importTensorFlowNetwork | importTensorFlowLayers
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.