importONNXNetwork

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

Описание

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

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

пример

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

Примеры

свернуть все

Загрузите и установите пакет поддержки Deep Learning Toolbox Converter для ONNX Model Format.

Напечатать importONNXNetwork в командной строке.

importONNXNetwork

Если Deep Learning Toolbox Converter для ONNX Model Format не установлен, то функция предоставляет ссылку на необходимый пакет поддержки в 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 следующим образом:

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

    • Функция полностью поддерживает наборы операторов 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 Converter для ONNX Model Format (см. «Поддерживаемые слои ONNX»), то importONNXNetwork возвращает сообщение об ошибке. В этом случае вы все еще можете использовать importONNXLayers для импорта сетевой архитектуры и весов.

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

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

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

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

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

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

расширить все

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

Ссылки

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

Введенный в R2018a