Supported Operator List
Supported Operator List by Tensorflow Lite for Microcontrollers
The TensorFlow Lite library since version 2.3 provides an alternative implementation optimized for microcontrollers with low memory capacity called TensorFlow Lite for Microcontrollers (or TensorFlow Lite Micro). In comparison to TensorFlow Lite, the Micro version uses static memory allocation, has no dependencies on standard C or C++ libraries and contains implementations of operation kernels optimized for Arm Cortex-M architecture using Arm’s CMSIS-NN library. The following table contains a comparison of supported operations by both libraries.
TensorFlow Lite operations |
Supported by TensorFlow Lite for Microcontrollers |
|---|---|
ABS |
Yes |
ADD |
Yes |
ADD_N |
Yes |
ARG_MAX |
Yes |
ARG_MIN |
Yes |
ASSIGN_VARIABLE |
Yes |
ATAN2 |
No |
AVERAGE_POOL_2D |
Yes |
BATCH_MATMUL |
Yes |
BATCH_TO_SPACE_ND |
Yes |
BIDIRECTIONAL_SEQUENCE_LSTM |
No |
BIDIRECTIONAL_SEQUENCE_RNN |
No |
BROADCAST_ARGS |
Yes |
BROADCAST_TO |
Yes |
BUCKETIZE |
No |
CALL_ONCE |
No |
CAST |
Yes |
CEIL |
Yes |
COMPLEX_ABS |
No |
CONCATENATION |
Yes |
CONV_2D |
Yes |
CONV_3D |
No |
CONV_3D_TRANSPOSE |
No |
COS |
Yes |
CUMSUM |
Yes |
DELAY |
Yes |
DENSIFY |
No |
DEPTH_TO_SPACE |
Yes |
DEPTHWISE_CONV_2D |
Yes |
DEQUANTIZE |
Yes |
DETECTION_POSTPROCESS |
Yes |
DIV |
Yes |
DYNAMIC_UPDATE_SLICE |
No |
ELU |
Yes |
EMBEDDING_LOOKUP |
Yes |
EMBEDDING_LOOKUP_SPARSE |
No |
EQUAL |
Yes |
EXP |
Yes |
EXPAND_DIMS |
Yes |
FAKE_QUANT |
No |
FILL |
Yes |
FLOOR |
Yes |
FLOOR_DIV |
Yes |
FLOOR_MOD |
Yes |
FULLY_CONNECTED |
Yes |
GATHER |
Yes |
GELU |
No |
GATHER_ND |
Yes |
GREATER |
Yes |
GREATER_EQUAL |
Yes |
HARD_SWISH |
Yes |
HASHTABLE |
No |
HASHTABLE_FIND |
No |
HASHTABLE_IMPORT |
No |
HASHTABLE_LOOKUP |
No |
HASHTABLE_SIZE |
No |
IF |
Yes |
IMAG |
No |
L2_NORMALIZATION |
Yes |
L2_POOL_2D |
Yes |
LEAKY_RELU |
Yes |
LESS |
Yes |
LESS_EQUAL |
Yes |
LOCAL_RESPONSE_NORMALIZATION |
No |
LOG |
Yes |
LOG_SOFTMAX |
Yes |
LOGICAL_AND |
Yes |
LOGICAL_NOT |
Yes |
LOGICAL_OR |
Yes |
LOGISTIC |
Yes |
LSH_PROJECTION |
No |
LSTM |
No |
MATRIX_DIAG |
No |
MATRIX_SET_DIAG |
No |
MAX_POOL_2D |
Yes |
MAXIMUM |
Yes |
MEAN |
Yes |
MINIMUM |
Yes |
MIRROR_PAD |
Yes |
MUL |
Yes |
MULTINOMIAL |
No |
NEG |
Yes |
NON_MAX_SUPPRESSION_V4 |
No |
NON_MAX_SUPPRESSION_V5 |
No |
NOT_EQUAL |
Yes |
ONE_HOT |
No |
PACK |
Yes |
PAD |
Yes |
PADV2 |
Yes |
POW |
No |
PRELU |
Yes |
QUANTIZE |
Yes |
RANDOM_STANDARD_NORMAL |
No |
RANDOM_UNIFORM |
No |
RANGE |
No |
RANK |
No |
READ_VARIABLE |
No |
REAL |
No |
REDUCE_ALL |
No |
REDUCE_ANY |
No |
REDUCE_MAX |
Yes |
REDUCE_MIN |
No |
REDUCE_PROD |
No |
RELU |
Yes |
RELU_N1_TO_1 |
No |
RELU6 |
Yes |
RFFT2D |
No |
RESHAPE |
Yes |
RESIZE_BILINEAR |
Yes |
RESIZE_NEAREST_NEIGHBOR |
Yes |
REVERSE_SEQUENCE |
No |
REVERSE_V2 |
No |
RNN |
No |
ROUND |
Yes |
RSQRT |
Yes |
SCATTER_ND |
No |
SEGMENT_SUM |
No |
SELECT |
No |
SELECT_V2 |
Yes |
SHAPE |
Yes |
SIN |
Yes |
SKIP_GRAM |
No |
SLICE |
Yes |
SOFTMAX |
Yes |
SPACE_TO_BATCH_ND |
Yes |
SPACE_TO_DEPTH |
Yes |
SPARSE_TO_DENSE |
No |
SPLIT |
Yes |
SPLIT_V |
Yes |
SQRT |
Yes |
SQUARE |
Yes |
SQUARED_DIFFERENCE |
Yes |
SQUEEZE |
Yes |
STRIDED_SLICE |
Yes |
SUB |
Yes |
SUM |
Yes |
SVDF |
Yes |
TANH |
Yes |
TILE |
No |
TOPK_V2 |
No |
TRANSPOSE |
Yes |
TRANSPOSE_CONV |
Yes |
UNIDIRECTIONAL_SEQUENCE_LSTM |
Yes (on Xtensa cores) |
UNIDIRECTIONAL_SEQUENCE_RNN |
No |
UNIQUE |
No |
UNPACK |
Yes |
WHERE |
No |
WHILE |
Yes |
UNSORTED_SEGMENT_MAX |
No |
UNSORTED_SEGMENT_PROD |
No |
UNSORTED_SEGMENT_SUM |
No |
VAR_HANDLE |
No |
ZEROS_LIKE |
Yes |
Table 2 contains an overview of hardware optimized TensorFlow Lite Micro operators on supported devices. Operators not listed in the table are reference C++ implementations only. Optimized operators for ARM Cortex-M cores leverage the ARM CMSIS-NN library. For details, see the middleware/eiq/tensorflow-lite/third_party/cmsis/CMSIS/NN/README.md file. Optimized operators for Cadence Xtensa cores (HiFi4 and FusionF1) leverage the Xtensa HiFi4 NN library.
Supported Operator List by eIQ Neutron NPU Library and HiFi 4 NN Library
Operator |
Operator input type |
CMSIS-NN for Cortex-M33 and Cortex-M7 |
MCXN947 (eIQ Neutron NPU) |
i.MX RT700 (eIQ Neutron NPU) |
i.MX RT600 |
|---|---|---|---|---|---|
ABS |
float |
No |
No |
No |
Yes |
ADD |
float |
Yes |
No |
No |
Yes |
ARGMAX |
float |
Yes |
No |
No |
Yes |
AVERAGE_POOL_2D |
float |
Yes |
No |
No |
Yes |
BATCHMATMUL |
float |
Yes |
No |
No |
No |
BATCHNORML |
float |
No |
No |
No |
No |
CONCAT |
float |
No |
No |
No |
No |
CONV_1D |
float |
No |
No |
No |
No |
CONV_2D |
float |
Yes |
No |
No |
Yes |
DEPTHWISE_CONV_2D |
float |
Yes |
No |
No |
Yes |
FULLY_CONNECTED |
float |
Yes |
No |
No |
Yes |
GATHER |
float |
No |
No |
No |
No |
RELU6 |
float |
No |
No |
No |
Yes |
RELU |
float |
No |
No |
No |
Yes |
LEAKY_RELU |
float |
No |
No |
No |
No |
LOGISTIC |
float |
No |
No |
No |
No |
MAX |
float |
Yes |
No |
No |
No |
MAX_POOL_2D |
float |
Yes |
No |
No |
Yes |
MIRRORPAD |
float |
No |
No |
No |
No |
MUL |
float |
Yes |
No |
No |
Yes |
PAD |
float |
No |
No |
No |
Yes |
PRELU |
float |
No |
No |
No |
No |
RESIZE_NEAREST_NEIGHBOR |
float |
No |
No |
No |
No |
SLICE |
float |
No |
No |
No |
No |
STRIDED_SLICE |
float |
No |
No |
No |
Yes |
SOFTMAX |
float |
Yes |
No |
No |
No |
SUB |
float |
No |
No |
No |
Yes |
TANH |
float |
No |
No |
No |
Yes |
TRANSPOSE |
float |
Yes |
No |
No |
No |
TRANSPOSE_CONV |
float |
Yes |
No |
No |
Yes |
UNIDIRECTIONAL_SEQUENCE_LSTM |
float |
No |
No |
No |
No |