exponenta event banner

exportONNXNetwork

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

Описание

пример

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

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

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

Примеры

свернуть все

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

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

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 может экспортировать следующее:

Совет

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

Ссылки

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

Представлен в R2018a