ONNX (.onnx)

Background & Context

    • Open format for neural network models.
    • Stores models and various metadata.
    • ONNX is an acronym for Open Neural Network Exchange.
    • Binary file format based on Protobuf.
    • First released in 2017 by Microsoft and Facebook.

Import & Export

  • Import["file.onnx"] imports the net stored in the specified file, returning it as a NetChain, NetGraph or a similar construct.
  • Import["file.onnx",elem] imports the specified element elem.
  • The import format can be specified with Import["file","ONNX"] or Import["file",{"ONNX",elem,}].
  • Export["file.onnx",net] exports net as an ONNX model.
  • The following expressions are supported:
  • NetChain[]a net represented as a chain of layers
    NetGraph[]a net represented as a graph of layers
    layerany net layer such as LinearLayer, ...
  • See the following reference pages for full general information:
  • Import, Exportimport from or export to a file
    CloudImport, CloudExportimport from or export to a cloud object
    ImportString, ExportStringimport from or export to a string
    ImportByteArray, ExportByteArrayimport from or export to a byte array

Import Elements

  • General Import elements:
  • "Elements" list of elements and options available in this file
    "Rules"full list of rules for each element and option
    "Options"list of rules for options, properties and settings
  • Import elements include:
  • "ArrayAssociation"parameter arrays as an association
    "ArrayList"parameter arrays as a list
    "Description"human-readable description for the model
    "ONNXGraph"ONNX representation of the net
    "ModelDomain"model namespace or domain
    "ModelVersion"integer version number of the model
    "Net"Wolfram Language representation of the net, including all initialized arrays (default)
    "IRVersion"version of the ONNX intermediate representation used by the model
    "OperatorSetVersion"operator sets the model is compatible with
    "ProducerName"name of the tool used to generate the model
    "ProducerVersion"version of the generating tool
    "RawData"full, unprocessed contents of the file, including the graph representation and all metadata
    "UninitializedNet"Wolfram Language representation of the net, without any arrays

Options

  • Import options:
  • "Arrays"Nonepath or list of paths to valid ONNX tensor proto files containing additional arrays for the net
  • Export options:
  • "GraphName"Automaticgraph name in ONNX metadata
    "ModelVersion"0model version in ONNX metadata
    "Description"Nonemodel documentation string in ONNX metadata

Examples

open allclose all

Basic Examples  (2)

Import a net in ONNX format:

Show the Import elements available in this file:

Export a net in ONNX format:

Import Elements  (13)

ArrayAssociation  (1)

Obtain an association mapping names to arrays for a given ONNX net:

ArrayList  (1)

Obtain a list of arrays for a given ONNX net:

Description  (1)

Obtain the description for a given ONNX net:

ONNXGraph  (1)

Obtain the ONNX representation of a given net:

ModelDomain  (1)

Obtain the ONNX model domain of a given net:

ModelVersion  (1)

Obtain the ONNX model version of a given net:

Net  (1)

Import the ONNX model as a Wolfram Language net:

This is the default element:

IRVersion  (1)

Obtain the version of the ONNX intermediate representation of a given net:

OperatorSetVersion  (1)

Obtain the ONNX operator sets used by a given net:

ProducerName  (1)

Obtain the name of the tool used to produce a given net:

ProducerVersion  (1)

Obtain the version of the tool used to produce a given net:

RawData  (1)

Obtain the full unprocessed contents of a given ONNX file:

UninitializedNet  (1)

Import the ONNX model as an uninitialized Wolfram Language net:

Import Options  (1)

"Arrays"  (1)

Arrays used by a net can be contained in separate ONNX tensor proto files. Import an uninitialized net:

Import the net together with its arrays by specifying an array file (multiple array files can be specified in a list):

Export Options  (3)

"GraphName"  (1)

Specify the graph name metadata:

Check the graph name:

"ModelVersion"  (1)

Specify the model version metadata:

Check the model version:

"Description"  (1)

Specify the model description metadata:

Check the description:

Possible Issues  (1)

Any NetEncoder or NetDecoder is automatically removed by Export, as ONNX does not support them. Create a net with a NetEncoder and a NetDecoder and export it:

Importing the model back shows that no NetEncoder or NetDecoder are present: