1 /** 2 * Copyright 2021 Huawei Technologies Co., Ltd 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 #ifndef MINDSPORE_LITE_TYPES_H 17 #define MINDSPORE_LITE_TYPES_H 18 #include <string> 19 namespace mindspore { 20 namespace lite { 21 22 struct QuantParam { 23 int32_t zeroPoint; 24 double scale; 25 int numBits; 26 }; 27 28 enum DataType : int8_t { 29 DATA_TYPE_UNKNOWN = 0, 30 DATA_TYPE_BOOL = 30, 31 DATA_TYPE_INT8 = 32, 32 DATA_TYPE_INT16 = 33, 33 DATA_TYPE_INT32 = 34, 34 DATA_TYPE_INT64 = 35, 35 DATA_TYPE_UINT8 = 37, 36 DATA_TYPE_UINT16 = 38, 37 DATA_TYPE_UINT32 = 39, 38 DATA_TYPE_UINT64 = 40, 39 DATA_TYPE_FLOAT16 = 42, 40 DATA_TYPE_FLOAT32 = 43, 41 DATA_TYPE_FLOAT64 = 44, 42 }; 43 44 enum Format : int8_t { 45 FORMAT_NCHW = 0, 46 FORMAT_NHWC = 1, 47 FORMAT_NHWC4 = 2, 48 FORMAT_HWKC = 3, 49 FORMAT_HWCK = 4, 50 FORMAT_KCHW = 5, 51 FORMAT_CKHW = 6, 52 FORMAT_KHWC = 7, 53 FORMAT_CHWK = 8, 54 FORMAT_HW = 9, 55 FORMAT_HW4 = 10, 56 FORMAT_NC = 11, 57 FORMAT_NC4 = 12, 58 FORMAT_NC4HW4 = 13, 59 FORMAT_NUM_OF_FORMAT = 14, 60 FORMAT_NCDHW = 15, 61 FORMAT_NWC = 16, 62 FORMAT_NCW = 17, 63 FORMAT_NC8HW8 = 18, 64 FORMAT_MIN = FORMAT_NCHW, 65 FORMAT_MAX = FORMAT_NC8HW8 66 }; 67 68 enum QuantType : int8_t { 69 QUANT_TYPE_NONE = 0, 70 QUANT_TYPE_AWARETRAINING = 1, 71 QUANT_TYPE_WEIGHTQUANT = 2, 72 QUANT_TYPE_POSTTRAINING = 3, 73 QUANT_TYPE_WEIGHT = 4, 74 QUANT_TYPE_ALL = 5, 75 QUANT_TYPE_DYNAMIC = 6 76 }; 77 78 enum NodeType : uint32_t { 79 NODE_TYPE_NONE = 0, 80 NODE_TYPE_ABS = 1, 81 NODE_TYPE_ACTIVATION = 2, 82 NODE_TYPE_ADD_FUSION = 5, 83 NODE_TYPE_ALL = 9, 84 NODE_TYPE_ARGMAX_FUSION = 11, 85 NODE_TYPE_ASSERT = 13, 86 NODE_TYPE_AVG_POOL_FUSION = 17, 87 NODE_TYPE_BATCH_TO_SPACE = 21, 88 NODE_TYPE_BATCH_TO_SPACE_ND = 22, 89 NODE_TYPE_BIAS_ADD = 23, 90 NODE_TYPE_BROADCAST_TO = 27, 91 NODE_TYPE_CAST = 28, 92 NODE_TYPE_CEIL = 29, 93 NODE_TYPE_CLIP = 30, 94 NODE_TYPE_CONCAT = 31, 95 NODE_TYPE_CONV2D_FUSION = 35, 96 NODE_TYPE_CONV2D_TRANSPOSE_FUSION = 36, 97 NODE_TYPE_COS = 37, 98 NODE_TYPE_CONSTANT_OF_SHAPE = 38, 99 NODE_TYPE_CROP = 39, 100 NODE_TYPE_DEPEND = 44, 101 NODE_TYPE_DEPTH_TO_SPACE = 45, 102 NODE_TYPE_DETECTION_POST_PROCESS = 46, 103 NODE_TYPE_DIV_FUSION = 47, 104 NODE_TYPE_DROPOUT = 49, 105 NODE_TYPE_ELU = 51, 106 NODE_TYPE_ELTWISE = 52, 107 NODE_TYPE_EQUAL = 53, 108 NODE_TYPE_EMBEDDING_LOOKUP_FUSION = 54, 109 NODE_TYPE_EXPFUSION = 55, 110 NODE_TYPE_EXPAND_DIMS = 56, 111 NODE_TYPE_FAKE_QUANT_WITH_MIN_MAX_VARS = 57, 112 NODE_TYPE_FAKE_QUANT_WITH_MIN_MAX_VARS_PER_CHANNEL = 58, 113 NODE_TYPE_FFT_REAL = 59, 114 NODE_TYPE_FFT_IMAG = 60, 115 NODE_TYPE_FLATTEN = 61, 116 NODE_TYPE_FLOOR = 63, 117 NODE_TYPE_FLOOR_DIV = 64, 118 NODE_TYPE_FLOOR_MOD = 65, 119 NODE_TYPE_FILL = 66, 120 NODE_TYPE_FULL_CONNECTION = 67, 121 NODE_TYPE_FUSED_BATCH_NORM = 68, 122 NODE_TYPE_GATHER = 69, 123 NODE_TYPE_GATHER_ND = 70, 124 NODE_TYPE_GREATER = 71, 125 NODE_TYPE_GREATER_EQUAL = 72, 126 NODE_TYPE_HASHTABLE_LOOKUP = 73, 127 NODE_TYPE_INSTANCE_NORM = 74, 128 NODE_TYPE_LAYER_NORM_FUSION = 75, 129 NODE_TYPE_LEAKY_RELU = 76, 130 NODE_TYPE_LESS = 77, 131 NODE_TYPE_LESS_EQUAL = 78, 132 NODE_TYPE_LOG = 79, 133 NODE_TYPE_LOGICAL_AND = 81, 134 NODE_TYPE_LOGICAL_NOT = 82, 135 NODE_TYPE_LOGICAL_OR = 83, 136 NODE_TYPE_LP_NORMALIZATION = 84, 137 NODE_TYPE_L_R_N = 85, 138 NODE_TYPE_LSH_PROJECTION = 86, 139 NODE_TYPE_LSTM = 87, 140 NODE_TYPE_L2_NORMALIZE_FUSION = 88, 141 NODE_TYPE_MATMUL_FUSION = 89, 142 NODE_TYPE_MAXIMUM = 90, 143 NODE_TYPE_MAX_POOL_FUSION = 92, 144 NODE_TYPE_SWITCH_LAYER = 94, 145 NODE_TYPE_MFCC = 95, 146 NODE_TYPE_MINIMUM = 96, 147 NODE_TYPE_MOD = 98, 148 NODE_TYPE_MUL_FUSION = 99, 149 NODE_TYPE_NEG = 101, 150 NODE_TYPE_NOT_EQUAL = 103, 151 NODE_TYPE_NON_MAX_SUPPRESSION = 104, 152 NODE_TYPE_ONE_HOT = 105, 153 NODE_TYPE_ONES_LIKE = 106, 154 NODE_TYPE_PAD_FUSION = 107, 155 NODE_TYPE_PARTIAL_FUSION = 108, 156 NODE_TYPE_POW_FUSION = 110, 157 NODE_TYPE_PRIOR_BOX = 111, 158 NODE_TYPE_PRELU_FUSION = 112, 159 NODE_TYPE_QUANT_DTYPE_CAST = 113, 160 NODE_TYPE_RANK = 114, 161 NODE_TYPE_RANGE = 115, 162 NODE_TYPE_RECIPROCAL = 116, 163 NODE_TYPE_REAL_DIV = 117, 164 NODE_TYPE_REDUCE_FUSION = 118, 165 NODE_TYPE_RESHAPE = 119, 166 NODE_TYPE_RESIZE = 120, 167 NODE_TYPE_REVERSE_SEQUENCE = 121, 168 NODE_TYPE_REVERSE_V2 = 122, 169 NODE_TYPE_RFFT = 123, 170 NODE_TYPE_R_O_I_POOLING = 124, 171 NODE_TYPE_ROUND = 125, 172 NODE_TYPE_RSQRT = 126, 173 NODE_TYPE_SCALE_FUSION = 127, 174 NODE_TYPE_SCATTER_ND = 128, 175 NODE_TYPE_SHAPE = 130, 176 NODE_TYPE_SIN = 133, 177 NODE_TYPE_SKIP_GRAM = 134, 178 NODE_TYPE_SLICE_FUSION = 135, 179 NODE_TYPE_SOFTMAX = 138, 180 NODE_TYPE_SPACE_TO_BATCH_ND = 141, 181 NODE_TYPE_SPACE_TO_DEPTH = 142, 182 NODE_TYPE_SPARSE_TO_DENSE = 144, 183 NODE_TYPE_SPLIT = 145, 184 NODE_TYPE_SQRT = 146, 185 NODE_TYPE_SQUEEZE = 147, 186 NODE_TYPE_SQUARE = 148, 187 NODE_TYPE_SQUARED_DIFFERENCE = 149, 188 NODE_TYPE_STACK = 150, 189 NODE_TYPE_STRIDED_SLICE = 151, 190 NODE_TYPE_SUB_FUSION = 152, 191 NODE_TYPE_SWITCH = 154, 192 NODE_TYPE_TILE_FUSION = 160, 193 NODE_TYPE_TOPK_FUSION = 161, 194 NODE_TYPE_TRANSPOSE = 162, 195 NODE_TYPE_UNIQUE = 163, 196 NODE_TYPE_UNSORTED_SEGMENT_SUM = 164, 197 NODE_TYPE_UNSQUEEZE = 165, 198 NODE_TYPE_UNSTACK = 166, 199 NODE_TYPE_WHERE = 168, 200 NODE_TYPE_ZEROS_LIKE = 169, 201 NODE_TYPE_SELECT = 170, 202 NODE_TYPE_G_R_U = 172, 203 NODE_TYPE_NON_ZERO = 173, 204 NODE_TYPE_INVERT_PERMUTATION = 174, 205 NODE_TYPE_SIZE = 175, 206 NODE_TYPE_RANDOM_STANDARD_NORMAL = 176, 207 NODE_TYPE_CROP_AND_RESIZE = 177, 208 NODE_TYPE_ERF = 178, 209 NODE_TYPE_IS_FINITE = 180, 210 NODE_TYPE_LIN_SPACE = 181, 211 NODE_TYPE_UNIFORM_REAL = 182, 212 NODE_TYPE_SPLICE = 188, 213 NODE_TYPE_LOG_SOFTMAX = 189, 214 NODE_TYPE_CALL = 190, 215 NODE_TYPE_CUSTOM = 191, 216 NODE_TYPE_CUM_SUM = 192, 217 NODE_TYPE_SPLIT_WITH_OVERLAP = 193, 218 NODE_TYPE_GEN_O_P = 194, 219 NODE_TYPE_RAGGED_RANGE = 195, 220 NODE_TYPE_G_L_U = 196, 221 NODE_TYPE_AFFINE = 200, 222 NODE_TYPE_ALL_GATHER = 201, 223 NODE_TYPE_REDUCE_SCATTER = 202, 224 NODE_TYPE_DYNAMIC_QUANT = 203, 225 NODE_TYPE_RANDOM_NORMAL = 206, 226 NODE_TYPE_FORMAT_TRANSPOSE = 209, 227 NODE_TYPE_GATHER_D = 210, 228 NODE_TYPE_GROUP_NORM_FUSION = 211, 229 NODE_TYPE_LOG1P = 212, 230 NODE_TYPE_SPARSE_FILL_EMPTY_ROWS = 214, 231 NODE_TYPE_SPARSE_RESHAPE = 215, 232 NODE_TYPE_SPARSE_SEGMENT_SUM = 216, 233 NODE_TYPE_SCATTER_ELEMENTS = 217, 234 NODE_TYPE_TRIU = 218, 235 NODE_TYPE_TRIL = 219, 236 }; 237 238 enum ResizeMethod : int8_t { 239 RESIZE_METHOD_UNKNOWN = -1, 240 RESIZE_METHOD_LINEAR = 0, 241 RESIZE_METHOD_NEAREST = 1, 242 RESIZE_METHOD_CUBIC = 2, 243 }; 244 245 enum CoordinateTransformMode : int8_t { 246 COORDINATE_TRANSFORM_MODE_ASYMMETRIC = 0, 247 COORDINATE_TRANSFORM_MODE_ALIGN_CORNERS = 1, 248 COORDINATE_TRANSFORM_MODE_HALF_PIXEL = 2, 249 }; 250 251 enum NearestMode : int8_t { 252 NEAREST_MODE_NORMAL = 0, 253 NEAREST_MODE_ROUND_HALF_DOWN = 1, 254 NEAREST_MODE_ROUND_HALF_UP = 2, 255 NEAREST_MODE_FLOOR = 3, 256 NEAREST_MODE_CEIL = 4, 257 }; 258 259 enum ActivationType : int8_t { 260 ACTIVATION_TYPE_NO_ACTIVATION = 0, 261 ACTIVATION_TYPE_RELU = 1, 262 ACTIVATION_TYPE_SIGMOID = 2, 263 ACTIVATION_TYPE_RELU6 = 3, 264 ACTIVATION_TYPE_ELU = 4, 265 ACTIVATION_TYPE_LEAKY_RELU = 5, 266 ACTIVATION_TYPE_ABS = 6, 267 ACTIVATION_TYPE_RELU1 = 7, 268 ACTIVATION_TYPE_SOFTSIGN = 8, 269 ACTIVATION_TYPE_SOFTPLUS = 9, 270 ACTIVATION_TYPE_TANH = 10, 271 ACTIVATION_TYPE_SELU = 11, 272 ACTIVATION_TYPE_HSWISH = 12, 273 ACTIVATION_TYPE_HSIGMOID = 13, 274 ACTIVATION_TYPE_THRESHOLDRELU = 14, 275 ACTIVATION_TYPE_LINEAR = 15, 276 ACTIVATION_TYPE_HARD_TANH = 16, 277 ACTIVATION_TYPE_SIGN = 17, 278 ACTIVATION_TYPE_SWISH = 18, 279 ACTIVATION_TYPE_GELU = 19, 280 ACTIVATION_TYPE_UNKNOWN = 20, 281 }; 282 283 enum ReduceMode : int8_t { 284 REDUCE_MODE_MEAN = 0, 285 REDUCE_MODE_MAX = 1, 286 REDUCE_MODE_MIN = 2, 287 REDUCE_MODE_PROD = 3, 288 REDUCE_MODE_SUM = 4, 289 REDUCE_MODE_SUM_SQUARE = 5, 290 REDUCE_MODE_ASUM = 6, 291 REDUCE_MODE_ALL = 7, 292 REDUCE_MODE_L2 = 8, 293 }; 294 295 enum PoolMode : int8_t { 296 POOL_MODE_MAX_POOLING = 0, 297 POOL_MODE_MEAN_POOLING = 1, 298 }; 299 300 enum EltwiseMode : int8_t { 301 ELTWISE_MODE_PROD = 0, 302 ELTWISE_MODE_SUM = 1, 303 ELTWISE_MODE_MAXIMUM = 2, 304 ELTWISE_MODE_UNKNOWN = 3, 305 }; 306 307 enum PadMode : int8_t { 308 PAD_MODE_PAD = 0, 309 PAD_MODE_SAME = 1, 310 PAD_MODE_VALID = 2, 311 }; 312 313 enum RoundMode : int8_t { 314 ROUND_MODE_FLOOR = 0, 315 ROUND_MODE_CEIL = 1, 316 }; 317 318 enum PaddingMode : int8_t { 319 PADDING_MODE_CONSTANT = 0, 320 PADDING_MODE_REFLECT = 1, 321 PADDING_MODE_SYMMETRIC = 2, 322 PADDING_MODE_RESERVED = 3, 323 }; 324 325 enum LshProjectionType : int8_t { 326 UNKNOWN = 0, 327 SPARSE = 1, 328 DENSE = 2, 329 }; 330 331 enum Reduction : int8_t { 332 REDUCTION_SUM = 0, 333 MEAN = 1, 334 NONE = 2, 335 }; 336 337 struct Attribute { 338 std::string name; 339 uint32_t data; 340 }; 341 } // namespace lite 342 } // namespace mindspore 343 #endif // MIDIR_LITE_TYPES_H 344