Convolution |
common 2D&3D convolution, dilated 2D&3D convolution, group 2D&3D convolution, depthwise 2D convolution |
Deconvolution |
2D deconvolution, onnx ConvTranspose |
FullyConnected |
onnx Gemm, Linear |
RNN |
LSTM, PLSTM, GRU, onnx LBR GRU, onnx Scan, also supports bi-direction |
Matmul |
matrix multiply |
Resize |
linear, nearest, cubic mode resize, same as onnx Resize, Upsample |
BilateralSliceApply |
hrnet BilateralSliceApply function |
Pooling |
max, mean pooling |
Scale |
y = alpha * x + beta per channel |
Prelu |
prelu activation |
BatchNorm |
y = (x - mean) / sqrt(variance + eps) per channel |
LayerNorm |
layernorm |
L2Normalization |
L2-Normalization |
Reduction |
sum, min, max, mean reduction |
ArgMax |
max value index |
Softmax |
y = exp(x - max(x)) / sum(exp(x - max(x))) |
SoftmaxWithLoss |
softmax with loss(not implement) |
LogSoftmax |
log softmax |
Clip |
y = clip(x, min, max) |
Power |
y = (scale * x + shift) ^ pow |
Sigmoid |
sigmoid activation |
Relu |
relu(scale = 0 when x < 0) |
LeakyRelu |
relu(scale != 0 when x < 0) |
Relu6 |
y = relu6(x) |
HSwish |
y = x * relu6(x + 3) / 6 |
HSigmoid |
hard sigmoid, y = clip((x + 1) / 2, 0, 1) |
Gelu |
gelu activation |
TanH |
y = tanh(x) |
Mish |
y = x * tanh(log(1 + e ^ x)) |
Erf |
erf(x) = 2/sqrt(pi) * integral from 0 to x of exp(-t^2) dt |
Gather |
onnx gather, gather_elements, gatherND, also same as embedding |
Embedding |
Caffe embedding |
Pad |
constant(0), reflect, edge, symmetric padding |
Eltwise |
sum, min, max, mul(prod), sub, div elementwise operation |
Concat |
many tensors concat on some axis |
Slice |
caffe slice |
TfSlice |
onnx or tflite slice, strided slice |
Cast |
change tensor data type |
Shape |
get tensor shape |
ConstantOfShape |
allocate memory(not implement) |
Transpose |
transpose data, same as caffe permute |
Reshape |
change dimension |
Squeeze |
remove 1 dimension |
Unsqueeze |
add 1 dimension |
Space2Depth |
tensorflow space_to_depth function |
Depth2Space |
tensorflow depth_to_space function |
Constant |
onnx constant |
ChannelResize |
channel padding or channel cut |
PreAllocatedMemory |
allocate memory |
SharedWeight |
used to represent onnx/tflite operator input that is not generated by another operator |
Copy |
memory copy |
Check |
tensor level compare, result is used for Jump |
Repeat |
do while loop for dynamic control flow |
Jump |
if statement for dynamic control flow |
Attention |
transformer global attention mask |
AttentionMask |
transformer local attention mask |
RelativePositionEmbedding |
relative position embedding |
RelativeShift |
relative shift |
PriorBox |
SSD caffe PriorBox |
DetectionOutput |
SSD caffe DetectionOutput |
Yolov3DetectionOutput |
Yolov3 caffe DetectionOutput |
MultiHeadAttention |
transformer multi-head attention |
SqDiff |
tflite squared difference |
Tile |
onnx tile |
Splice |
Kaldi extract feature function, same as Gather |
Neg |
y = -x |
Greater |
elementwise tensor compare, same as onnx greater |
Where |
onnx where |
SoftPlus |
y = log(1 + e ^ x) |
Exp |
y = exp(x) |
Split |
y = x |
Tdnn |
Kaldi tdnn operator(Splice + Linear) |
Dropout |
dropout function |
TopK |
same as onnx topk |
SpaceToBatchNd |
tensorflow space_to_batch function |
BatchToSpaceNd |
tensorflow batch_to_space function |
Abs |
y = (x > 0) ? x : -x |
Equal |
elementwise tensor compare, same as onnx equal, this also support tflite NOT_EQUAL |
Sign |
y = sign(x) |
HSwishNoDiv |
y = x * relu6(x + 3) |
InstanceNorm |
Instance Normalization |
Expand |
onnx expand |
Scatter |
onnx scatter, scatter_elements, scatterND |
Log |
y = log(x) |
Select |
y = choice ? a : b, same as tflite select |
Not |
y = ! (x), same as onnx not |
RoIAlign |
same as onnx RoIAlign |
GenerateProposals |
same as tf tf.image.generate_bounding_box_proposals |
Reciprocal |
same as onnx reciprocal |