MXNet (.json, .params)
Background & Context

-
- Underlying format of the MXNet deep learning framework, used by the Wolfram Language.
- Translation is performed automatically between the low-level layers used by MXNet and corresponding high-level layers used by the Wolfram Language.
- The mapping between Wolfram Language layers and MXNet layers is not always invertible.
- MXNet nets are saved as separate .json files, specifying the network topology, and .params files, specifying the numeric arrays used in the network. The Wolfram Language will automatically look for an appropriate .params file when loading a .json file.
- By default, Import and Export use the "JSON" format for files ending in .json, rather than the "MXNet" format.
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.json",{"MXNet",elem}] imports the net with the specified element elem.
- Import["file.params","MXNet"] imports the MXNet parameter file saved as a .params file as an association of weights.
- Import["file.params",{"MXNet",elem}] imports the parameter file with the specified element elem.
- Export["file.json",net,"MXNet"] exports a trained neural network as a .json file and a corresponding .params file.
Import Elements

- Net Import elements:
-
"InputNames" names of the net inputs "LayerAssociation" list of rules for options, properties and settings "Net" import the net as a NetGraph or NetChain "NodeDataset" dataset of MXNet symbol nodes "NodeGraph" graph of nodes of MXNet symbol "NodeGraphPlot" plot of nodes of MXNet symbol "UninitializedNet" import the net without any parameters - Parameter Import elements:
-
"ArrayAssociation" import the parameter arrays as an association "ArrayList" import the parameter arrays as a list "ArrayNames" the names of the parameter arrays
Examples
open allclose allBasic Examples (1)
Define an initialized NetChain:
Import Elements (11)
Net (2)
Import an MXNet net as a NetGraph:
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:
This is equivalent to using the "UninitializedNet" content element:
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:
Possible Issues (3)
Any NetEncoder or NetDecoder attached to a net is not exported:
The imported net no longer has a NetEncoder:
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 input are no longer known:
The dimensions can be added manually using NetReplacePart:
Recurrent layers that operate on variable-length sequences cannot be exported:

Fixing the sequence length allows for the net to be exported:
Recurrent layers can often not be re-imported:

The reason is that they are not exported to a single MXNet operator, but rather as a computational graph unrolled over the sequence length: