importONNXNetwork

Импортируйте предварительно обученную сеть ONNX

Описание

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype) импортирует предварительно обученную сеть из ONNX™ (Открытый Exchange Нейронной сети) файл modelfile и задает выходной тип слоя импортированной сети.

Эта функция требует Конвертера Deep Learning Toolbox™ для пакета поддержки Формата Модели ONNX. Если этот пакет поддержки не установлен, то функция обеспечивает ссылку на загрузку.

пример

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype,'Classes',classes) дополнительно задает классы для сети классификации.

Примеры

свернуть все

Загрузите и установите Конвертер Deep Learning Toolbox для пакета поддержки Формата Модели ONNX.

Ввод importONNXNetwork в командной строке.

importONNXNetwork

Если Конвертер Deep Learning Toolbox для Формата Модели ONNX не установлен, то функция обеспечивает ссылку на необходимый пакет поддержки в Add-On Explorer. Чтобы установить пакет поддержки, щелкните по ссылке, и затем нажмите Install. Проверяйте, что установка успешна путем импорта сети из файла модели 'cifarResNet.onnx' в командной строке. Если пакет поддержки установлен, то функция возвращает DAGNetwork объект.

modelfile = 'cifarResNet.onnx';
classes = ["airplane" "automobile" "bird" "cat" "dee" "dog" "frog" "horse" "ship" "truck"];
net = importONNXNetwork(modelfile,'OutputLayerType','classification','Classes',classes)
net = 

  DAGNetwork with properties:

         Layers: [77×1 nnet.cnn.layer.Layer]
    Connections: [85×2 table]

Импортируйте остаточную нейронную сеть, обученную на наборе данных CIFAR-10. Задайте файл, содержащий сеть ONNX, ее выходной тип и ее выходные классы.

modelfile = 'cifarResNet.onnx';
classes = ["airplane" "automobile" "bird" "cat" "deer" "dog" "frog" "horse" "ship" "truck"];
net = importONNXNetwork(modelfile,'OutputLayerType','classification','Classes',classes)
net = 
  DAGNetwork with properties:

         Layers: [77×1 nnet.cnn.layer.Layer]
    Connections: [85×2 table]
     InputNames: {'Input_input'}
    OutputNames: {'ClassificationLayer_softmax'}

Анализируйте импортированную сеть.

analyzeNetwork(net)

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

свернуть все

Имя файла модели ONNX, содержащего сеть в виде вектора символов или строкового скаляра. Файл должен быть в текущей папке в папке на пути MATLAB®, или необходимо включать полный или относительный путь в файл.

Пример: 'cifarResNet.onnx'

Тип выходного слоя, который функция добавляет в конец импортированной сети в виде 'classification', 'regression', или 'pixelclassification'. Используя 'pixelclassification' добавляет pixelClassificationLayer Объект (Computer Vision Toolbox) (требует Computer Vision Toolbox™).

Если сеть в modelfile имеет несколько выходных параметров, затем вы не можете задать выходные типы слоя с помощью этого аргумента. Использование importONNXLayers вместо этого. importONNXLayers вставляет слои заполнителя для выходных параметров. После импорта можно найти и заменить слои заполнителя при помощи findPlaceholderLayers и replaceLayer, соответственно.

Пример: 'regression'

Классы выходного слоя в виде категориального вектора, массива строк, массива ячеек из символьных векторов или 'auto'. Если Classes 'auto', затем программное обеспечение устанавливает классы на categorical(1:N), где N количество классов. Если вы задаете массив строк или массив ячеек из символьных векторов str, затем программное обеспечение устанавливает классы выходного слоя к categorical(str,str).

Типы данных: char | categorical | string | cell

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

свернуть все

Предварительно обученная сеть, возвращенная как DAGNetwork объект.

Ограничения

  • importONNXNetwork поддержки версии ONNX можно следующим образом:

    • Функция поддерживает промежуточную версию 6 представления ONNX.

    • Функция полностью поддерживает наборы оператора ONNX 6, 7, 8, и 9.

    • Функциональные предложения ограниченная поддержка оператора ONNX устанавливают 10 и 11.

Примечание

Если вы импортируете экспортируемую сеть, слои повторно импортированной сетевой силы отличаются от исходной сети и не могут поддерживаться.

Больше о

свернуть все

Поддерживаемые слои ONNX

importONNXNetwork поддерживает следующие слои ONNX, с некоторыми ограничениями:

Слой ONNXСлой Deep Learning Toolbox

Add

additionLayer или nnet.onnx.layer.ElementwiseAffineLayer

AveragePool

averagePooling2dLayer

BatchNormalization

batchNormalizationLayer

Concat

concatenationLayer

Constant

Ни один (Импортированный как веса)

Conv*

convolution2dLayer

ConvTranspose

transposedConv2dLayer

Dropout

dropoutLayer

Elu

eluLayer

Gemm

fullyConnectedLayer если сеть ONNX является текущей, в противном случае nnet.onnx.layer.FlattenLayer сопровождаемый convolution2dLayer

GlobalAveragePool

globalAveragePooling2dLayer

GlobalMaxPool

globalMaxPooling2dLayer

GRU

gruLayer

InstanceNormalization

groupNormalizationLayer с numGroups заданный как "channel-wise"

LeakyRelu

leakyReluLayer

LRN

CrossChannelNormalizationLayer

LSTM

lstmLayer или bilstmLayer

MatMul

fullyConnectedLayer если сеть ONNX является текущей, в противном случае convolution2dLayer

MaxPool

maxPooling2dLayer

Mul

multiplicationLayer

Relu

reluLayer или clippedReluLayer

Sigmoid

sigmoidLayer

Softmax

softmaxLayer

Sum

additionLayer

Tanh

tanhLayer

*Если pads атрибут Conv оператор является вектором только с двумя элементами [p1,p2], importONNXNetwork импорт Conv как convolution2dLayer с аргументом 'Padding' значения имени заданный как [p1,p2,p1,p2].

Слой ONNXСредство импорта ONNX пользовательский слой

Clip

nnet.onnx.layer.ClipLayer

Div

nnet.onnx.layer.ElementwiseAffineLayer

Flatten

nnet.onnx.layer.FlattenLayer или nnet.onnx.layer.Flatten3dLayer

Identity

nnet.onnx.layer.IdentityLayer

ImageScaler

nnet.onnx.layer.ElementwiseAffineLayer

PRelu

nnet.onnx.layer.PReluLayer

Reshape

nnet.onnx.layer.FlattenLayer

Sub

nnet.onnx.layer.ElementwiseAffineLayer
Слой ONNXImage Processing Toolbox™
DepthToSpacedepthToSpace2dLayer (Image Processing Toolbox)
Resizeresize2dLayer (Image Processing Toolbox) или resize3dLayer (Image Processing Toolbox)
SpaceToDepthspaceToDepthLayer (Image Processing Toolbox)
Upsampleresize2dLayer (Image Processing Toolbox) или resize3dLayer (Image Processing Toolbox)

Советы

  • Если сеть ONNX содержит слой, который не поддерживает Конвертер Deep Learning Toolbox для Формата Модели ONNX (см. Поддерживаемые Слои ONNX), то importONNXNetwork возвращает сообщение об ошибке. В этом случае можно все еще использовать importONNXLayers импортировать сетевую архитектуру и веса.

  • Можно импортировать сеть ONNX с несколькими входными параметрами и одним выходным использованием importONNXNetwork. Если сеть имеет несколько выходных параметров, использовать importONNXLayers. importONNXLayers функция вставляет слои заполнителя для выходных параметров. После импорта можно найти и заменить слои заполнителя при помощи findPlaceholderLayers и replaceLayer, соответственно. Для примера смотрите Импорт и Соберите Сеть ONNX с Несколькими Выходными параметрами. Чтобы узнать о нейронной сети для глубокого обучения с несколькими входными параметрами и несколькими выходными параметрами, смотрите Несколько - Вход и Несколько - Выходные Сети.

  • Чтобы использовать предварительно обученную сеть для предсказания или передачи обучения на новых изображениях, необходимо предварительно обработать изображения таким же образом изображения, которые использовались, чтобы обучаться, импортированная модель были предварительно обработаны. Наиболее распространенные шаги предварительной обработки изменяют размер изображений, вычитая средние значения изображений, и преобразовывая изображения от изображений BGR до RGB.

    • Чтобы изменить размер изображений, использовать imresize. Например, imresize(image,[227,227,3]).

    • Чтобы преобразовать изображения от RGB до формата BGR, использовать flip. Например, flip(image,3).

    Для получения дополнительной информации о предварительной обработке изображений для обучения и предсказания, смотрите, Предварительно обрабатывают Изображения для Глубокого обучения.

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2018b

Ссылки

[1] Открытый Exchange Нейронной сети. https://github.com/onnx/.

[2] ONNX. https://onnx.ai/.

Введенный в R2018a