1include "Tensor.fbs"; 2namespace MNN; 3 4enum BinaryOpOperation : byte { 5 ADD = 0, 6 SUB = 1, 7 MUL = 2, 8 DIV = 3, 9 MAX_TEMP = 4, 10 MIN_TEMP = 5, 11 POW = 6, 12 REALDIV = 7, 13 MINIMUM = 8, 14 MAXIMUM = 9, 15 GREATER = 10, 16 GREATER_EQUAL = 11, 17 LESS = 12, 18 FLOORDIV = 13, 19 SquaredDifference = 14, 20 EQUAL = 15, 21 LESS_EQUAL = 16, 22 FLOORMOD = 17, 23 MOD = 19, 24 ATAN2 = 20, 25 LOGICALOR = 21, 26 NOTEQUAL = 22, 27} 28 29table BinaryOp { 30 opType:int; 31 T:DataType=DT_FLOAT; 32} 33 34table PackParam { 35 dataType:DataType; 36 axis:int; 37} 38 39table StridedSliceParam { 40 Index:DataType; 41 T:DataType; 42 beginMask:int; 43 endMask:int; 44 ellipsisMask:int; 45 newAxisMask:int; 46 shrinkAxisMask:int; 47} 48 49table SqueezeParam { 50 squeezeDims:[int]; 51} 52 53table CastParam { 54 srcT:DataType; 55 dstT:DataType; 56} 57 58enum ReductionType : byte{ 59 SUM = 0, 60 ASUM = 1, 61 SUMSQ = 2, 62 MEAN = 3, 63 MAXIMUM = 4, 64 MINIMUM = 5, 65 PROD = 6, 66 ANY = 7, 67 ALL = 8, 68} 69 70table ReductionParam { 71 operation:ReductionType; 72 dim:[int]; 73 coeff:float; 74 keepDims:bool; 75 dType:DataType=DT_FLOAT; 76} 77 78table Gather { 79 Tindices:DataType; 80 Tparams:DataType; 81 validateIndices:bool; 82 axis:int; 83} 84 85table ExpandDims { 86 T:DataType; 87 Tdim:DataType; 88 axis:int; 89} 90 91table Selu { 92 scale:float; 93 alpha:float; 94} 95 96table AsString { 97 T:DataType; 98 precision:int; 99 scientific:bool; 100 shortest:bool; 101 width:int; 102 fillString:string; 103} 104 105table ReduceJoin { 106 keepDims:bool; 107 separator:string; 108} 109 110enum UnaryOpOperation : int { 111 ABS = 0, 112 NEG = 1, 113 FLOOR = 2, 114 CEIL = 3, 115 SQUARE = 4, 116 SQRT = 5, 117 RSQRT = 6, 118 EXP = 7, 119 LOG = 8, 120 SIN = 9, 121 COS = 10, 122 TAN = 11, 123 ASIN = 12, 124 ACOS = 13, 125 ATAN = 14, 126 RECIPROCAL = 15, 127 LOG1P = 16, 128 BNLL = 17, 129 ACOSH = 18, 130 SINH = 19, 131 ASINH = 20, 132 ATANH = 21, 133 SIGN = 22, 134 ROUND = 23, 135 COSH = 24, 136 ERF = 25, 137 ERFC = 26, 138 ERFINV = 27, 139 EXPM1 = 28, 140 SIGMOID = 29, 141 TANH = 30, 142 HARDSWISH = 31, 143 GELU = 32, 144} 145 146table UnaryOp { 147 opType:UnaryOpOperation; 148 T:DataType; 149} 150 151table TopKV2 { 152 T:DataType=DT_FLOAT; 153 sorted:bool=false; 154} 155enum CropAndResizeMethod : byte{ 156 BILINEAR=0, 157 NEAREST=1, 158} 159 160table CropAndResize { 161 extrapolationValue:float; 162 method:CropAndResizeMethod; 163} 164 165table Fill { 166 167} 168 169table GatherV2 { 170 Taxis:DataType; 171 Tindices:DataType; 172 Tparams:DataType; 173} 174 175table NonMaxSuppressionV2 { 176 177} 178 179table Range { 180 Tidx:DataType; 181} 182 183table Rank { 184 185} 186 187table Size { 188 outputDataType:DataType; 189} 190 191table Transpose { 192 Tperm:DataType; 193} 194 195table SliceTf { 196 T:DataType; 197} 198 199table QuantizeMaxMin { 200 T:DataType; 201} 202 203table Crop { 204 axis:int=2; 205 offset:[int]; 206} 207 208table SpaceBatch { 209 blockShape:Blob; 210 padding:Blob; 211} 212table MatMul { 213 T:DataType; 214 transposeA:bool; 215 transposeB:bool; 216 weight:[float]; 217 bias:[float]; 218} 219 220table MomentsParam { 221 dim:[int]; 222 keepDims:bool=true; 223 dType:DataType=DT_FLOAT; 224} 225 226table RNNParam { 227 numUnits: int; 228 isBidirectionalRNN: bool; 229 linearBeforeReset: bool; 230 231 keepAllOutputs: bool; 232 fwGateWeight: Blob; 233 fwGateBias: Blob; 234 fwCandidateWeight: Blob; 235 fwCandidateBias: Blob; 236 fwRecurrentBias: Blob; 237 238 bwGateWeight: Blob; 239 bwGateBias: Blob; 240 bwCandidateWeight: Blob; 241 bwCandidateBias: Blob; 242 bwRecurrentBias: Blob; 243} 244 245table BatchMatMulParam { 246 adjX: bool = false; 247 adjY: bool = false; 248} 249 250enum DepthToSpaceMode : byte { 251 DCR = 0, 252 CRD = 1 253} 254 255// DepthToSpace and SpaceToDepth using the same parameter 256table DepthSpaceParam { 257 blockSize: int; 258 mode: DepthToSpaceMode = DCR; 259} 260 261table ReverseSequenceParam { 262 batchDim: int; 263 seqDim : int; 264} 265 266table DetectionPostProcessParam{ 267 maxDetections: int; 268 maxClassesPerDetection: int; 269 detectionsPerClass: int; 270 nmsScoreThreshold:float; 271 iouThreshold:float; 272 numClasses:int; 273 useRegularNMS:bool; 274 // y_scale, x_scale, h_scale, w_scale 275 // always size == 4 276 centerSizeEncoding:[float]; 277} 278 279table OneHotParam{ 280 dType:DataType=DT_FLOAT; 281 axis:int=-1; 282} 283 284enum PadValueMode : byte{ 285 CONSTANT = 0, 286 REFLECT = 1, 287 SYMMETRIC = 2 288} 289 290table PadParam{ 291 mode: PadValueMode = CONSTANT; 292} 293table LayerNorm { 294 axis: [int]; 295 epsilon: float; 296 gamma: [float]; 297 beta: [float]; 298} 299table RandomUniform { 300 seed:int = 0; 301 seed2:int = 0; 302 type:DataType = DT_FLOAT; 303 low:float = 0.0; 304 high:float = 1.0; 305} 306table TensorArray { 307 // false - fix array size; true - dynamic array size; 308 dynamic_size:bool = false; 309 // false - element dynamic shape; true - element identical shape; 310 identical_element_shapes:bool = false; 311 element_shape:[int]; 312 T:DataType = DT_FLOAT; 313} 314 315table LSTMBlockCell { 316 cell_clip:float = 3.0; 317 forget_bias:float = 1.0; 318 use_peephole:bool = false; 319} 320