Neural network layer/op support¶
Below is a list of all TFLite 'ops' (operations or neural network layer types) that are supported by the inference engine. The main data-type of the inference engine is quantized 8-bit integers ('INT8'), which should be used for best performance. Additionally, many ops, including the most common ones, are also available in quantized 16-bit ('INT16'). Some supporting ops are also available in non-quantized 32-bit integer ('INT32') or 32-bit floating-point ('FLOAT32') mode. These supporting ops are typically only used for simple index or shape computations.
For some ops below there are certain conditions for which a certain data-type is supported. This can depend on the op parameters for example. Those conditions are mentioned in the 'Notes' column and/or will be checked at run-time. More details for each TFLite op type can be found on the TFLite MLIR website.
We group the ops in these types to make the long table a bit easier to parse:
- NN layer: A neural network layer, typically only available in quantized INT8
- NN activation: A neural network activation function
- Math op: A mathematical support op, typically only available in FLOAT32
- Support op: Any other support operation, used e.g. for indexing or reshaping
TFlite op/layer name | Type | INT8 (quantized) | INT16 (quantized) | INT32 | FLOAT32 | Notes |
---|---|---|---|---|---|---|
Abs | Math op | ✔ | ✔ | ✔ | ||
Add | NN layer | ✔ | ✔ | ✔ | ||
AddN | NN layer | ✔ | ✔ | |||
ArgMax | Support op | ✔ | ✔ | ✔ | Output is always INT32 | |
ArgMin | Support op | ✔ | ✔ | ✔ | Output is always INT32 | |
AssignVariable | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
AveragePool2D | NN layer | ✔ | ✔ | |||
BatchToSpaceNd | Support op | ✔ | ✔ | |||
BatchMatmul | NN layer | ✔ | ✔ | ✔ | ||
BroadcastArgs | Support op | ✔ | ||||
BroadcastTo | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
CallOnce | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
Cast | Support op | ✔ | ✔ | ✔ | ✔ | |
Ceil | Math op | ✔ | ||||
CircularBuffer | Support op | ✔ | ||||
Concatenation | Support op | ✔ | ||||
Conv2D | NN layer | ✔ | ✔ | |||
Cos | Math op | ✔ | ||||
CumSum | Support op | ✔ | ✔ | |||
DepthToSpace | Support op | ✔ | ✔ | |||
DepthwiseConv2D | NN layer | ✔ | ✔ | |||
Dequantize | Support op | ✔ | ✔ | |||
DetectionPostProcess | NN layer | ✔ | ||||
Div | NN layer | ✔ | ✔ | ✔ | ||
Elu | NN activation | ✔ | ✔ | |||
Equal | Support op | ✔ | ✔ | ✔ | Also supports bools and INT64 | |
Exp | Math op | ✔ | ||||
ExpandDims | Support op | ✔ | ✔ | |||
EmbeddingLookup | Support op | ✔ | ✔ | |||
Fill | Support op | ✔ | ✔ | ✔ | ||
Floor | Math op | ✔ | ||||
FloorDiv | Math op | ✔ | ||||
FloorMod | Math op | ✔ | ||||
FullyConnected | NN layer | ✔ | ✔ | |||
Gather | Support op | ✔ | ✔ | With INT32 coordinates | ||
GatherNd | Support op | ✔ | ✔ | With INT32 coordinates | ||
Greater | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
GreaterEqual | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
HardSwish | NN activation | ✔ | ✔ | |||
If | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
L2Normalization | NN layer | ✔ | ✔ | |||
L2Pool2D | NN layer | ✔ | ||||
LeakyRelu | NN activation | ✔ | ✔ | ✔ | ||
Less | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
LessEqual | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
Log | Math op | ✔ | ||||
LogicalAnd | Bool support | Boolean only | ||||
LogicalNot | Bool support | Boolean only | ||||
LogicalOr | Bool support | Boolean only | ||||
Logistic | Math op | ✔ | ✔ | ✔ | ✔ | |
Maximum | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
MaxPool2D | NN layer | ✔ | ✔ | |||
MirrorPad | Support op | ✔ | ✔ | |||
Mean | Support op | ✔ | ✔ | ✔ | ✔ | |
Minimum | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
Mul | NN layer | ✔ | ✔ | ✔ | ✔ | INT32 mode is quantized |
Neg | Math op | ✔ | ||||
NotEqual | Support op | ✔ | ✔ | ✔ | Also supports bools and INT64 | |
Pack | Support op | ✔ | ✔ | ✔ | Also supports INT64 | |
Pad | Support op | ✔ | ✔ | |||
PadV2 | Support op | ✔ | ||||
Prelu | NN activation | ✔ | ✔ | |||
Quantize | Support op | ✔ | ✔ | ✔ | ✔ | |
ReadVariable | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
ReduceMax | Support op | ✔ | ✔ | |||
Relu | NN activation | ✔ | ✔ | |||
Relu6 | NN activation | ✔ | ✔ | |||
Reshape | Support op | ✔ | ✔ | ✔ | ✔ | Also supports bools and INT64 |
ResizeBilinear | Support op | ✔ | ✔ | |||
ResizeNearestNeighbor | Support op | ✔ | ✔ | ✔ | ||
ReverseV2 | Support op | ✔ | ✔ | ✔ | Also supports bools and INT64 | |
Round | Math op | ✔ | ||||
Rsqrt | Math op | ✔ | ✔ | ✔ | ||
SelectV2 | Support op | ✔ | ✔ | ✔ | ||
Shape | Shape op | ✔ | ✔ | |||
Sin | Math op | ✔ | ||||
Slice | Support op | ✔ | ✔ | ✔ | ✔ | |
Softmax | NN activation | ✔ | ✔ | |||
SpaceToBatchNd | Support op | ✔ | ✔ | |||
SpaceToDepth | Support op | ✔ | ✔ | |||
Split | Support op | ✔ | ✔ | ✔ | ✔ | |
SplitV | Support op | ✔ | ✔ | ✔ | ✔ | |
SquaredDifference | Math op | ✔ | ✔ | ✔ | ||
Squeeze | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
Sqrt | Math op | ✔ | ||||
Square | Math op | ✔ | ||||
StridedSlice | Support op | ✔ | ✔ | ✔ | ✔ | |
Sub | NN layer | ✔ | ✔ | ✔ | ||
Sum | NN layer | ✔ | ✔ | ✔ | ||
Svdf | NN layer | ✔ | ✔ | |||
Tanh | NN activation | ✔ | ✔ | ✔ | ||
TransposeConv | NN layer | ✔ | ✔ | |||
Transpose | Support op | ✔ | ✔ | |||
Unpack | Support op | ✔ | ✔ | ✔ | ✔ | |
UnidirectionalSequenceLSTM | NN layer | ✔ | ✔ | FLOAT32 is in hybrid mode | ||
VarHandle | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
While | Support op | ✔ | ✔ | ✔ | ✔ | Supports any data-type |
ZerosLike | Support op | ✔ | ✔ | ✔ | Also supports INT64 |