# 算子支持列表

小程序AI推理负责以最优化的方式运行你的模型，并在可用时利用特定设备的硬件加速。此页面提供关于目前各设备支持哪些 Op 的信息。

>> *注意：* 
1）以下算子若无特殊备注说明，一般符合 ONNX 算子定义，参考：https://github.com/onnx/onnx/blob/main/docs/Operators.md

2）目前 GPU 推理暂未对外开放，敬请期待。

| Operator           | CPU  | iOS NPU | iOS GPU | Android GPU | 备注  |
| ------------------ | ---- | ------- | ------- | ----------- | ----  |
| Activation         | ✔ |✔| ✔| ✔    | 详细支持的 Activation 种类参考下方 Activation 列表 |
| ArgMax             | ✔ |✔|     | ✔ |     |
| ArgMin             | ✔ |✔|     | ✔ |     |
| BatchNorm          | ✔ |✔| ✔ | ✔ |     |
| Bias               | ✔ |✔| ✔ | ✔ |     |
| Binary             | ✔ |✔| ✔ | ✔ | 详细支持的 Binary 操作种类参考下方 Binary 列表  |
| Bucketize          | ✔ |        |          |          |   |
| Cast               | ✔ |    |    | ✔ |    |
| Concat             | ✔ |✔| ✔ | ✔ |    |
| Const              | ✔ |✔|    |    |    |
| ConstOfShape       | ✔ |   |     |    |    |
| Conv1D             | ✔ |   | ✔ | ✔ |   |
| Conv1DTranspose    | ✔ |✔|   |    |    |
| Conv2D             | ✔ |✔| ✔ | ✔ |   |
| Conv2DTranspose    | ✔ |✔| ✔ | ✔ |  |
| Conv3D             | ✔ |        |    |     |     |
| Conv3DTranspose    | ✔ |        |    |     |     |
| Crop               | ✔ |        |    |     |     |
| CropAndResize      | ✔ |        |    |     |     |
| CumSum             | ✔ |        |    |     |     |
| DepthToSpace       | ✔ |✔|    |     |     |
| Dropout            | ✔ |        |    |     |     |
| ElementWise        | ✔ |✔| ✔ | ✔ |    |
| Expand             | ✔ |✔|          |          |    |
| FakeQuantize       | ✔ |        |          |          |    |
| Flatten            | ✔ |✔|          |          |    |
| FullyConnected     | ✔ |✔| ✔ | ✔ |    | 
| Gather             | ✔ |✔|          |          |    |
| GatherND           | ✔ |        |          |          |    |
| Gemm               | ✔ |        | ✔ | ✔ |    |
| GlobalPooling      | ✔ |✔| ✔ | ✔ |    |
| GroupNorm          | ✔ |        |          |          |    |
| Gru                | ✔ |        |          |          |    |
| InstanceNorm       | ✔ |        | ✔ | ✔ |    |
| LayerNorm          | ✔ |        |          |          |    |
| LpNorm             | ✔ |        |          |          |    |
| Lrn                | ✔ |        |          |          |    |
| Lstm               | ✔ |        |          |          |    |
| MatMul             | ✔ |✔|          |          |    |
| NMS                | ✔ |        |          |          |    |
| Normalize          | ✔ |        | ✔ | ✔ |    |
| OneHot             | ✔ |        |          | ✔ |    |
| Pad                | ✔ |✔|          | ✔ |    |
| Permute            | ✔ |        | ✔ | ✔ |    |
| Pooling1D          | ✔ |        | ✔ | ✔ |    |
| Pooling2D          | ✔ |✔| ✔ | ✔ |    |
| Pooling3D          | ✔ |        |          |          |    |
| PriorBox           | ✔ |        |          |          |    |
| Range              | ✔ |        |          |          |    |
| Reduce             | ✔ |✔| ✔ | ✔ |    |
| Reshape            | ✔ |✔|          |          |    |
| Resize2D           | ✔ |✔| ✔ | ✔ |    |
| Rnn                | ✔ |        |          |          |    |
| Scale              | ✔ |        | ✔ | ✔ |    |
| ScatterND          | ✔ |✔|          |          |    |
| Shape              | ✔ |        |          |          |    |
| ShuffleChannel     | ✔ |        |          |          |    |
| SpaceToDepth       | ✔ |✔|          |          |    |
| Split              | ✔ |✔|          |          |    |
| Slice              | ✔ |        | ✔ | ✔ |    |
| Softmax            | ✔ |✔| ✔ | ✔ |    |
| Squeeze            | ✔ |✔| ✔ | ✔ |    |
| Tile               | ✔ |✔|          |          |    |
| TopK               | ✔ |        |          |          |    |
| Unary              | ✔ |✔| ✔ | ✔ | 详细支持的 Unary 种类参考下方 Unary 列表  |
| Unsqueeze          | ✔ |✔| ✔ | ✔ |    |
| Where              | ✔ |        |          |          |    |

***

## Activation列表:
|名称            | 描述                                               |
| ------------- | -------------------------------------------------  |
|None           | f(x) = x                                           |  
|Abs            | f(x) = [x]                                         |
|Clip           | f(x) = min(max(x, constA), constB)                 |                 
|HardSigmoid    | f(x) = min(max(x * constA + constB, 0), 1)         |        
|HardSwish      | f(x) = min(max(x * constA + constB, 0), 1) * x     |   
|HSigmoid       | f(x) = (ReLU6(x + 3) / 6)                          |                        
|HSwish         | f(x) = (ReLU6(x + 3) / 6) * x                      |                    
|LeakyReLU      | f(x) = min(x, 0) * constA + max(x, 0)              |              
|Linear         | f(x) = x * constA + constB                         |                      
|PReLU          | f(x) = min(x, 0) * weight + max(x, 0) (Caffe1's)   |   
|ReLU           | f(x) = max(x, 0)                                   |                                   
|ReLUN          | f(x) = min(x, 0) * constA + min(max(x, 0), constB) | 
|SELU           | f(x) = (x >= 0 ? x : (exp(x)-1) * constA) * constB | 
|Sigmoid        | f(x) = 1 / (1 + exp(-x)), a.k.a. Logistic          |         
|SoftPlus       | f(x) = log(1 + exp(x * constB)) * constA           |          
|SoftSign       | f(x) = x / (1 + \|x\|)                             |                             
|Swish          | f(x) = x / (1 + exp(-x * constA))                  |                
|Tanh           | f(x) = tanh(x * constB) * constA                   |                
|Threshold      | f(x) = (x > constA ? 1 : 0)                        |                       
|ThrReLU        | f(x) = (x > constA ? x : 0) (Thresholded ReLU)     |

***

## Binary列表:
| 名称           | 描述                                   |
| ------------- | ---------------------------------------|
| Add           |  f(x, y) = x + y                       | 
| Sub           |  f(x, y) = x - y                       |      
| Mul           |  f(x, y) = x * y                       |     
| Div           |  f(x, y) = x / y                       |    
| Pow           |  f(x, y) = pow(x, y)                   | 
| Max           |  f(x, y) = max(x, y)                   |  
| Min           |  f(x, y) = min(x, y)                   |   
| Mean          |  f(x, y) = (x + y) / 2                 |
| And           |  f(x, y) = x & y                       |    
| Or            |  f(x, y) = x \| y                      |   
| Xor           |  f(x, y) = x ^ y                       |     
| BitShiftLeft  |  f(x, y) = x > y                      |
| Equal         |  f(x, y) = (x == y)                    | 
| NotEqual      |  f(x, y) = (x != y)                    |   
| Greater       |  f(x, y) = (x >  y)                    |   
| GreaterEqual  |  f(x, y) = (x >= y)                    |   
| Less          |  f(x, y) = (x <  y)                    |    
| LessEqual     |  f(x, y) = (x <= y)                    |

***

## Unary列表:
| 名称           | 描述                             |
| ------------- | ---------------------------------|
| Abs           |  f(x) = [x]                      | 
| Neg           |  f(x) = -x                       |      
| Celi          |  f(x) = ceil(x)                  |     
| Floor         |  f(x) = floor(x)                 |    
| Reciprocal    |  f(x) = 1 / x                    | 
| Sqrt          |  f(x) = sqrt(x)                  |  
| Exp           |  f(x) = exp(x)                   |   
| Log           |  f(x) = log(x)                   |
| Erf           |  f(x) = erf(x)                   |    
| Acos          |  f(x) = acos(x)                  |   
| Acosh         |  f(x) = acosh(x)                 |     
| Cos           |  f(x) = cos(x)                   |   
| Cosh          |  f(x) = cosh(x)                  |   
| Sin           |  f(x) = sin(x)                   |   
| Sinh          |  f(x) = sinh(x)                  |   
| Atan          |  f(x) = atan(x)                  |    
| Atanh         |  f(x) = atanh(x)                 |
| Tan           |  f(x) = tan(x)                   |   
| Tanh          |  f(x) = tanh(x)                  |   
| ExpM1         |  f(x) = expm1(x)                 |    
| Log1P         |  f(x) = log1p(x)                 |
