exportONNXNetwork

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

Описание

пример

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

Эта функция требует пакета поддержки Deep Learning Toolbox™ Converter для формата модели 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 Converter для ONNX Model Format не установлен, то функция предоставляет ссылку на необходимый пакет поддержки в Add-On Explorer. Чтобы установить пакет поддержки, щелкните ссылку и нажмите кнопку Install.

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

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

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

свернуть все

Обученная сеть или график слоев сети, заданная как SeriesNetwork, DAGNetwork, dlnetwork, или layerGraph объект.

Можно получить обученную сеть (SeriesNetwork, DAGNetwork, или dlnetwork) следующими способами:

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

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

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

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

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

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

Имя файла, заданное как вектор символов или строковый скаляр.

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

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами 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 следующим образом:

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

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

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

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

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

Примечание

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

Подробнее о

свернуть все

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

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

Совет

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

Ссылки

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

Введенный в R2018a