importONNXNetwork

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

Импортируйте предварительно обученную сеть из ONNX™ (Открытый Exchange Нейронной сети).

При помощи ONNX как промежуточный формат можно импортировать модели из других сред глубокого обучения, которые поддерживают экспорт модели ONNX, такой как TensorFlow™, PyTorch, Caffe2, Microsoft® Cognitive Toolkit (CNTK), Базовый ML и Apache MXNet™.

Синтаксис

net = importONNXNetwork(modelfile,'OutputLayerType',outputtype)
net = importONNXNetwork(modelfile,'OutputLayerType',outputtype,'Classes',classes)

Описание

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™).

Пример: '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 с некоторыми ограничениями:

    • Add

    • AveragePool

    • BatchNormalization

    • Clip

    • Concat

    • Conv

    • ConvTranspose

    • Div

    • Dropout

    • Flatten

    • Gemm

    • GlobalAveragePool

    • Identity

    • LRN

    • LSTM

    • LeakyRelu

    • MaxPool

    • MatMul

    • Mul

    • PRelu

    • Relu

    • Reshape

    • Sigmoid

    • Softmax

    • Sub

    • Sum

    • Tanh

    • ImageScaler

  • Чтобы использовать предварительно обученную сеть для прогноза или передачи, учащейся на новых изображениях, необходимо предварительно обработать изображения таким же образом изображения, которые использовались, чтобы обучаться, импортированная модель были предварительно обработаны. Наиболее распространенные шаги предварительной обработки изменяют размер изображений, вычитая средние значения изображений, и преобразовывая изображения от изображений 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