MXNet (.json, .params)
Background & Context
-
- Underlying format of the MXNet deep learning framework, used by the Wolfram Language.
- Networks saved as MXNet are stored as two separate file: a .json file specifying the network topology and a .params file specifying the numeric arrays used in the network.
Import & Export
- Import["file.json","MXNet"] imports the MXNet network saved as a .json file, loading weights from a corresponding .params file if available.
- The parameter file corresponding to "file.json" is assumed to match the pattern "file*.params" and be located in the same folder.
- Import["file.params","MXNet"] can also be used to directly import network parameters.
- Import["file.json",{"MXNet",elem}] and Import["file.params",{"MXNet",elem}] import the specified element elem from the corresponding file.
- By default, Import["file.json"] is imported as a "JSON" format rather than "MXNet".
- See the following reference pages for full general information:
-
Import, Export import from or export to a file CloudImport, CloudExport import from or export to a cloud object ImportString, ExportString import from or export to a string ImportByteArray, ExportByteArray import from or export to a byte array
Import Elements
-
"Elements" list of elements and options available in this file "Summary" summary of the file "Rules" list of rules for all available elements - Net Import elements, available when importing the .json file:
-
"InputNames" names of the net inputs "NetExternalObject" import the net as a NetExternalObject "NodeDataset" dataset of MXNet symbol nodes "NodeGraph" graph of nodes of MXNet symbol "NodeGraphPlot" plot of nodes of MXNet symbol - Import["file.json","MXNet"] uses the "NetExternalObject" element by default.
- Parameter Import elements, available when importing the .params file:
-
"ArrayAssociation" import the parameter arrays as an association "ArrayList" import the parameter arrays as a list "ArrayNames" the names of the parameter arrays - Import["file.params","MXNet"] uses the "ArrayAssociation" element by default.
Examples
open allclose allBasic Examples (1)
Import Elements (9)
NetExternalObject (2)
Import an MXNet net as a NetExternalObject:
This is equivalent to the following:
If an MXNet net has a parameter file with the same name, it is automatically imported as well:
The "ArrayPath" option can be used to avoid importing the parameter file, producing the equivalent of an uninitialized net:
Note that the resulting NetExternalObject has additional inputs where values for the missing arrays have to be provided.
ArrayAssociation (1)
Import Options (1)
"ArrayPath" (1)
"ArrayPath" allows for an explicit path to a parameter file to be specified:
When it is set to None, no parameters are imported, producing the equivalent of an uninitialized net:
Note that the resulting NetExternalObject has additional inputs where values for the missing arrays have to be provided.
Possible Issues (4)
MXNet model definitions do not preserve information about input and output dimensions. Define a NetChain with the dimensions of "Input" specified:
Export the net to the MXNet format:
The dimensions of the inputs have to be provided during import; otherwise, the procedure fails:
Providing inconsistent dimensions will trigger a shape inference error from MXNet:
A minimal set of consistent dimensions must be provided. In this case, providing the shape for a single input is enough to infer the rest of the net:
Nets containing layers that translate to MXNet operators acting on batches of elements need an additional input dimension when roundtripped. Create a small convolutional net:
Export the net to the MXNet format:
Providing the same input shape to the original net triggers an MXNet error:
An additional input dimension, the batch dimension, must be explicitly provided. It can usually have any value:
Any NetEncoder or NetDecoder attached to a net is not exported:
The imported NetExternalObject no longer has a NetEncoder:
Recurrent layers that operate on variable-length sequences cannot be exported:
Fixing the sequence length allows for the net to be exported: