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 }; 48 49 enum QuantType : int8_t { 50 QUANT_TYPE_NONE, 51 QUANT_TYPE_ALL, 52 }; 53 54 enum NodeType : uint32_t { 55 NODE_TYPE_NONE = 0, 56 NODE_TYPE_ACTIVATION = 2, 57 NODE_TYPE_ADD_FUSION = 5, 58 NODE_TYPE_ARGMAX_FUSION = 11, 59 NODE_TYPE_AVG_POOL_FUSION = 17, 60 NODE_TYPE_BATCH_TO_SPACE_ND = 22, 61 NODE_TYPE_BIAS_ADD = 23, 62 NODE_TYPE_CAST = 28, 63 NODE_TYPE_CONCAT = 31, 64 NODE_TYPE_CONV2D_FUSION = 35, 65 NODE_TYPE_CONV2D_TRANSPOSE_FUSION = 36, 66 NODE_TYPE_DIV_FUSION = 47, 67 NODE_TYPE_ELTWISE = 52, 68 NODE_TYPE_EXPAND_DIMS = 56, 69 NODE_TYPE_FILL = 66, 70 NODE_TYPE_FULL_CONNECTION = 67, 71 NODE_TYPE_FUSED_BATCH_NORM = 68, 72 NODE_TYPE_GATHER = 69, 73 NODE_TYPE_LAYER_NORM_FUSION = 75, 74 NODE_TYPE_LESS_EQUAL = 78, 75 NODE_TYPE_MATMUL_FUSION = 89, 76 NODE_TYPE_MAXIMUM = 90, 77 NODE_TYPE_MAX_POOL_FUSION = 92, 78 NODE_TYPE_MUL_FUSION = 99, 79 NODE_TYPE_ONE_HOT = 105, 80 NODE_TYPE_PAD_FUSION = 107, 81 NODE_TYPE_POW_FUSION = 110, 82 NODE_TYPE_PRELU_FUSION = 112, 83 NODE_TYPE_QUANT_DTYPE_CAST = 113, 84 NODE_TYPE_REDUCE_FUSION = 118, 85 NODE_TYPE_RESHAPE = 119, 86 NODE_TYPE_RESIZE = 120, 87 NODE_TYPE_RSQRT = 126, 88 NODE_TYPE_SCALE_FUSION = 127, 89 NODE_TYPE_SHAPE = 130, 90 NODE_TYPE_SLICE_FUSION = 135, 91 NODE_TYPE_SOFTMAX = 138, 92 NODE_TYPE_SPACE_TO_BATCH_ND = 141, 93 NODE_TYPE_SPLIT = 145, 94 NODE_TYPE_SQRT = 146, 95 NODE_TYPE_SQUEEZE = 147, 96 NODE_TYPE_SQUARED_DIFFERENCE = 149, 97 NODE_TYPE_STACK = 150, 98 NODE_TYPE_STRIDED_SLICE = 151, 99 NODE_TYPE_SUB_FUSION = 152, 100 NODE_TYPE_TILE_FUSION = 160, 101 NODE_TYPE_TOPK_FUSION = 161, 102 NODE_TYPE_TRANSPOSE = 162, 103 NODE_TYPE_UNSQUEEZE = 165, 104 }; 105 106 enum ResizeMethod : int8_t { 107 RESIZE_METHOD_UNKNOWN = -1, 108 RESIZE_METHOD_LINEAR = 0, 109 RESIZE_METHOD_NEAREST = 1, 110 RESIZE_METHOD_CUBIC = 2, 111 }; 112 113 enum CoordinateTransformMode : int8_t { 114 COORDINATE_TRANSFORM_MODE_ASYMMETRIC = 0, 115 COORDINATE_TRANSFORM_MODE_ALIGN_CORNERS = 1, 116 COORDINATE_TRANSFORM_MODE_HALF_PIXEL = 2, 117 }; 118 119 enum NearestMode : int8_t { 120 NEAREST_MODE_NORMAL = 0, 121 NEAREST_MODE_ROUND_HALF_DOWN = 1, 122 NEAREST_MODE_ROUND_HALF_UP = 2, 123 NEAREST_MODE_FLOOR = 3, 124 NEAREST_MODE_CEIL = 4, 125 }; 126 127 enum ActivationType : int8_t { 128 ACTIVATION_TYPE_NO_ACTIVATION = 0, 129 ACTIVATION_TYPE_RELU = 1, 130 ACTIVATION_TYPE_SIGMOID = 2, 131 ACTIVATION_TYPE_RELU6 = 3, 132 ACTIVATION_TYPE_ELU = 4, 133 ACTIVATION_TYPE_LEAKY_RELU = 5, 134 ACTIVATION_TYPE_ABS = 6, 135 ACTIVATION_TYPE_RELU1 = 7, 136 ACTIVATION_TYPE_SOFTSIGN = 8, 137 ACTIVATION_TYPE_SOFTPLUS = 9, 138 ACTIVATION_TYPE_TANH = 10, 139 ACTIVATION_TYPE_SELU = 11, 140 ACTIVATION_TYPE_HSWISH = 12, 141 ACTIVATION_TYPE_HSIGMOID = 13, 142 ACTIVATION_TYPE_THRESHOLDRELU = 14, 143 ACTIVATION_TYPE_LINEAR = 15, 144 ACTIVATION_TYPE_HARD_TANH = 16, 145 ACTIVATION_TYPE_SIGN = 17, 146 ACTIVATION_TYPE_SWISH = 18, 147 ACTIVATION_TYPE_GELU = 19, 148 ACTIVATION_TYPE_UNKNOWN = 20, 149 }; 150 151 enum ReduceMode : int8_t { 152 REDUCE_MODE_MEAN = 0, 153 REDUCE_MODE_MAX = 1, 154 REDUCE_MODE_MIN = 2, 155 REDUCE_MODE_PROD = 3, 156 REDUCE_MODE_SUM = 4, 157 REDUCE_MODE_SUM_SQUARE = 5, 158 REDUCE_MODE_ASUM = 6, 159 REDUCE_MODE_ALL = 7, 160 }; 161 162 enum PoolMode : int8_t { 163 POOL_MODE_MAX_POOLING = 0, 164 POOL_MODE_MEAN_POOLING = 1, 165 }; 166 167 enum EltwiseMode : int8_t { 168 ELTWISE_MODE_PROD = 0, 169 ELTWISE_MODE_SUM = 1, 170 ELTWISE_MODE_MAXIMUM = 2, 171 ELTWISE_MODE_UNKNOWN = 3, 172 }; 173 174 enum PadMode : int8_t { 175 PAD_MODE_PAD = 0, 176 PAD_MODE_SAME = 1, 177 PAD_MODE_VALID = 2, 178 }; 179 180 enum RoundMode : int8_t { 181 ROUND_MODE_FLOOR = 0, 182 ROUND_MODE_CEIL = 1, 183 }; 184 185 enum PaddingMode : int8_t { 186 PADDING_MODE_CONSTANT = 0, 187 PADDING_MODE_REFLECT = 1, 188 PADDING_MODE_SYMMETRIC = 2, 189 PADDING_MODE_RESERVED = 3, 190 }; 191 192 enum LshProjectionType : int8_t { 193 UNKNOWN = 0, 194 SPARSE = 1, 195 DENSE = 2, 196 }; 197 198 enum Reduction : int8_t { 199 REDUCTION_SUM = 0, 200 MEAN = 1, 201 NONE = 2, 202 }; 203 204 struct Attribute { 205 std::string name; 206 uint32_t data; 207 }; 208 } // namespace lite 209 } // namespace mindspore 210 #endif // MIDIR_LITE_TYPES_H 211