Overview Before you begin Check the supported layers Compare the ML framework and CMSIS-NN data layouts Quantization Compute activation statistics Choose a quantization scheme Compute the layer Q-formats Compute the layer shifts Generate the CMSIS-NN implementation Test the result Optimize the final implementation Summary Related information Next steps
Check the supported layers
CMSIS-NN only supports a small number of layers. The network that you want to convert should contain only layers that are supported by CMSIS-NN. If a layer is not directly supported by CMSIS-NN, that layer should be translatable into an equivalent combination of CMSIS-NN layers and CMSIS-DSP functions. Otherwise, it will not be possible to convert the network into a CMSIS-NN implementation.
For instance, there is no LSTM layer implementation in CMSIS-NN. But a LSTM layer can be expressed with CMSIS-NN and CMSIS-DSP using:
- Fully connected layers (CMSIS-NN)
- Sigmoid and hyperbolic tangent activations (CMSIS-NN)
- Elementwise vector product (CMSIS-DSP)
The CMSIS-NN library contains an example of implementation of a GRU layer with CMSIS-NN and CMSIS-DSP functions. You can look at this example to see how other layers could be expressed. The GRU example is in CMSIS/NN/arm_nn_examples/gru.