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]

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

analyzeNetwork(net)

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

свернуть все

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

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

Тип выходного слоя, который функция добавляет в конец импортированной сети в виде 'classification', 'regression', или 'pixelclassification'. Используя 'pixelclassification' добавляет pixelClassificationLayer объект (требует 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 объект.

Советы

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

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

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

    Add

    additionLayer или nnet.onnx.layer.ElementwiseAffineLayer

    AveragePool

    averagePooling2dLayer

    BatchNormalization

    batchNormalizationLayer

    Clip

    nnet.onnx.layer.ClipLayer

    Concat

    concatenationLayer

    Constant

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

    Conv

    convolution2dLayer

    ConvTranspose

    transposedConv2dLayer

    Div

    nnet.onnx.layer.ElementwiseAffineLayer

    Dropout

    dropoutLayer

    Flatten

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

    Elu

    eluLayer

    Gemm

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

    GlobalAveragePool

    globalAveragePooling2dLayer

    GlobalMaxPool

    globalMaxPooling2dLayer

    GRU

    gruLayer

    Identity

    nnet.onnx.layer.IdentityLayer

    ImageScaler

    nnet.onnx.layer.ElementwiseAffineLayer

    LeakyRelu

    leakyReluLayer

    LRN

    CrossChannelNormalizationLayer

    LSTM

    lstmLayer или bilstmLayer

    MatMul

    fullyConnectedLayer

    MaxPool

    maxPooling2dLayer

    Mul

    nnet.onnx.layer.ElementwiseAffineLayer

    PRelu

    nnet.onnx.layer.PReluLayer

    Relu

    reluLayer или clippedReluLayer

    Reshape

    nnet.onnx.layer.FlattenLayer

    Sigmoid

    nnet.onnx.layer.SigmoidLayer

    Softmax

    softmaxLayer

    Sub

    nnet.onnx.layer.ElementwiseAffineLayer

    Sum

    additionLayer

    Tanh

    tanhLayer

  • Можно импортировать сеть 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

Для просмотра документации необходимо авторизоваться на сайте