exportONNXNetwork

Экспорт сети в формат модели ONNX

Описание

пример

exportONNXNetwork(net,filename) экспортирует нейронную сеть для глубокого обучения net с весами к файлу формата ONNX™ filename. Если filename существует, затем exportONNXNetwork перезаписывает файл.

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

exportONNXNetwork(net,filename,Name,Value) экспортирует сеть с помощью дополнительных опций, заданных одним или несколькими аргументами пары "имя-значение".

Примеры

свернуть все

Загрузите предварительно обученную сверточную нейронную сеть SqueezeNet.

net = squeezenet
  DAGNetwork with properties:

         Layers: [68×1 nnet.cnn.layer.Layer]
    Connections: [75×2 table]
     InputNames: {'data'}
    OutputNames: {'ClassificationLayer_predictions'}

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

filename = 'squeezenet.onnx';
exportONNXNetwork(net,filename)

Теперь можно импортировать squeezenet.onnx файл в любую среду глубокого обучения, которая поддерживает импорт ONNX.

Экспортируйте график слоев с или без выходного слоя к формату ONNX при помощи exportONNXNetwork.

Загрузите предварительно обученную сверточную нейронную сеть SqueezeNet и преобразуйте предварительно обученную сеть в график слоев.

net = squeezenet;
lgraph1 = layerGraph(net)
lgraph1 = 
  LayerGraph with properties:

         Layers: [68×1 nnet.cnn.layer.Layer]
    Connections: [75×2 table]
     InputNames: {'data'}
    OutputNames: {'ClassificationLayer_predictions'}

Анализируйте график слоев. analyzeNetwork отображает интерактивный график сетевой архитектуры и таблицу, содержащую информацию о слоях сети. Можно также обнаружить ошибки и проблемы в графике слоев lgraph1 прежде, чем экспортировать в формат ONNX. lgraph1 безошибочно.

analyzeNetwork(lgraph1)

Экспортируйте график слоев lgraph1 как файл формата ONNX в текущей папке под названием squeezeLayers1.onnx.

exportONNXNetwork(lgraph1,'squeezeLayers1.onnx')

Теперь можно импортировать squeezeLayers1.onnx файл в любую среду глубокого обучения, которая поддерживает импорт ONNX.

Удалите выходной слой lgraph1.

lgraph2 = removeLayers(lgraph1,lgraph1.Layers(end).Name)
lgraph2 = 
  LayerGraph with properties:

         Layers: [67×1 nnet.cnn.layer.Layer]
    Connections: [74×2 table]
     InputNames: {'data'}
    OutputNames: {1×0 cell}

Анализируйте график слоев lgraph2 при помощи analyzeNetwork. Анализ графика слоев обнаруживает отсутствие выходной слой и несвязанный выход. Можно все еще экспортировать lgraph2 к формату ONNX.

analyzeNetwork(lgraph2)

Экспортируйте график слоев lgraph2 как файл формата ONNX в текущей папке под названием squeezeLayers2.onnx.

exportONNXNetwork(lgraph2,'squeezeLayers2.onnx')

Теперь можно импортировать squeezeLayers2.onnx файл в любую среду глубокого обучения, которая поддерживает импорт ONNX.

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

свернуть все

Обучивший сеть или график слоев сети в виде SeriesNetwork, DAGNetwork, dlnetwork, или LayerGraph объект.

Можно получить обучивший сеть (SeriesNetwork, DAGNetwork, или dlnetwork) этими способами:

  • Импортируйте предварительно обученную сеть. Например, используйте googlenet функция.

  • Обучите свою собственную сеть. Использование trainNetwork обучать SeriesNetwork или DAGNetwork. Используйте пользовательский учебный цикл, чтобы обучить dlnetwork.

LayerGraph объект является графиком слоев сети. Некоторые параметры слоя этого графика могут быть пустыми (например, веса и смещение слоев свертки, и среднее значение и отклонение слоев нормализации партии.). Перед использованием графика слоев как входной параметр к exportONNXNetwork, инициализируйте пустые параметры путем присвоения случайных значений. В качестве альтернативы можно сделать одно из следующих перед экспортом:

  • Преобразуйте LayerGraph возразите против dlnetwork объект при помощи графика слоев как входной параметр к dlnetwork. Пустые параметры автоматически инициализируются.

  • Преобразуйте LayerGraph возразите против обученного DAGNetwork объект при помощи trainNetwork. Используйте график слоев в качестве layers входной параметр к trainNetwork.

Можно обнаружить ошибки и проблемы в обучившем сеть или графике слоев сети прежде, чем экспортировать в сеть ONNX при помощи analyzeNetwork. exportONNXNetwork требует SeriesNetwork, DAGNetwork, и dlnetwork объекты быть безошибочным. exportONNXNetwork разрешения, экспортирующие LayerGraph объект с отсутствием или несвязанным выходным слоем.

Имя файла в виде вектора символов или строкового скаляра.

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

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: exportONNXNetwork(net,filename,'NetworkName','my_net') экспортирует сеть и задает 'my_net' как сетевое имя в сохраненной сети ONNX.

Имя сети ONNX, чтобы сохранить в сохраненном файле в виде вектора символов или строкового скаляра.

Пример: 'my_squeezenet'

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

Чтобы гарантировать, что вы используете соответствующую версию набора оператора, консультируйтесь с документацией оператора ONNX [3]. Например, 'OpsetVersion',9 экспортирует maxUnpooling2dLayer к MaxUnpool-9 Оператор ONNX.

Пример 6

Ограничения

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

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

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

  • exportONNXNetwork не экспортирует настройки или свойства, связанные с сетевым обучением, такие как опции обучения, факторы скорости обучения или факторы регуляризации.

  • Если вы экспортируете сеть, содержащую слой, который не поддерживает формат ONNX (см. Слои, Поддержанные для Экспорта ONNX), то exportONNXNetwork сохраняет заполнителя оператор ONNX вместо неподдерживаемого слоя и возвращает предупреждение. Вы не можете импортировать сеть ONNX с оператором заполнителя в другие среды глубокого обучения.

  • Из-за архитектурных различий между MATLAB® и ONNX, экспортируемая сеть может иметь отличную структуру по сравнению с исходной сетью.

Примечание

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

Больше о

свернуть все

Слои, поддержанные для экспорта ONNX

exportONNXNetwork может экспортировать следующее:

Советы

  • Можно экспортировать обученную нейронную сеть для глубокого обучения MATLAB, которая включает несколько входных параметров и несколько выходных параметров к формату модели ONNX. Чтобы узнать о нескольких - входе и нескольких - выходная нейронная сеть для глубокого обучения, смотрите Несколько - Вход и Несколько - Выходные Сети.

Ссылки

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

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

Введенный в R2018a