From aee5d7537ff81ffda5ba222721b72f914ce50fb8 Mon Sep 17 00:00:00 2001 From: Louis Verhaard Date: Wed, 30 Sep 2020 09:01:52 +0200 Subject: MLBEDSW-3148: Refactor Operation - op.type is now an enum instead of a string - Removed unused operator codes - Refactored some attributes like npu_block_type, fused_activation_function - Refactored operator index calculation - Refactored a number of operator sets Change-Id: I641f65ee375794b7aec42abc0664251ae37d78e8 Signed-off-by: Louis Verhaard --- ethosu/vela/tflite_mapping.py | 279 +++++++++++++++++++++--------------------- 1 file changed, 141 insertions(+), 138 deletions(-) (limited to 'ethosu/vela/tflite_mapping.py') diff --git a/ethosu/vela/tflite_mapping.py b/ethosu/vela/tflite_mapping.py index c25f4156..8a53039a 100644 --- a/ethosu/vela/tflite_mapping.py +++ b/ethosu/vela/tflite_mapping.py @@ -22,6 +22,8 @@ import struct import numpy as np from .data_type import DataType +from .operation import CustomType +from .operation import Op from .tflite import AbsOptions from .tflite import AddNOptions from .tflite import AddOptions @@ -396,16 +398,16 @@ class CustomOptionsSerializer: attrs["custom_options_format"] = op_data.CustomOptionsFormat() if np.array_equal(custom_options, self.CUSTOM_OPTIONS_NPU_OP): - attrs["custom_type"] = "ExistingNpuOp" + attrs["custom_type"] = CustomType.ExistingNpuOp return attrs def serialize(self, builder, attrs): - custom_type = attrs.get("custom_type", "") + custom_type = attrs.get("custom_type", CustomType.ThirdPartyOp) self.custom_opt_format = attrs.get("custom_options_format", self.CUSTOM_OPTIONS_FORMAT_DEFAULT) # Set NPU op custom options for the TensorFlow Lite custom operator - if custom_type == "NpuOp": + if custom_type == CustomType.NpuOp: custom_options = self.CUSTOM_OPTIONS_NPU_OP else: custom_options = attrs.get("custom_options", []) @@ -426,11 +428,11 @@ padding_inv_map = inverse_map(padding_map) activation_function_map = { ActivationFunctionType.NONE: None, - ActivationFunctionType.RELU: "Relu", - ActivationFunctionType.RELU_N1_TO_1: "ReluN1To1", - ActivationFunctionType.RELU6: "Relu6", - ActivationFunctionType.TANH: "Tanh", - ActivationFunctionType.SIGN_BIT: "SignBit", + ActivationFunctionType.RELU: Op.Relu, + ActivationFunctionType.RELU_N1_TO_1: Op.ReluN1To1, + ActivationFunctionType.RELU6: Op.Relu6, + ActivationFunctionType.TANH: Op.Tanh, + ActivationFunctionType.SIGN_BIT: Op.SignBit, } activation_function_inv_map = inverse_map(activation_function_map) @@ -478,52 +480,50 @@ reducer_opts = OptionsSerializer("ReducerOptions", ("keep_dims",)) is_int_vec = True -custom_prefix = "Custom_" - builtin_operator_map = { - BuiltinOperator.ADD: ("AddAct", OptionsSerializer("AddOptions", (fused_act, "pot_scale_int16"))), - BuiltinOperator.AVERAGE_POOL_2D: ("AvgPoolAct", pool2d_opts), - BuiltinOperator.CONCATENATION: ("ConcatTFLite", OptionsSerializer("ConcatenationOptions", ("axis", fused_act))), - BuiltinOperator.CONV_2D: ("Conv2DBiasAct", conv2d_opts), - BuiltinOperator.DEPTHWISE_CONV_2D: ("DepthwiseConv2dBiasAct", depthwise_opts), - BuiltinOperator.DEPTH_TO_SPACE: ("DepthToSpace", OptionsSerializer("DepthToSpaceOptions", ("block_size",))), - BuiltinOperator.DEQUANTIZE: ("Dequantize", OptionsSerializer("DequantizeOptions")), - BuiltinOperator.EMBEDDING_LOOKUP: ("EmbeddingLookup", None), - BuiltinOperator.FLOOR: ("Floor", None), + BuiltinOperator.ADD: (Op.Add, OptionsSerializer("AddOptions", (fused_act, "pot_scale_int16"))), + BuiltinOperator.AVERAGE_POOL_2D: (Op.AvgPool, pool2d_opts), + BuiltinOperator.CONCATENATION: (Op.ConcatTFLite, OptionsSerializer("ConcatenationOptions", ("axis", fused_act))), + BuiltinOperator.CONV_2D: (Op.Conv2DBias, conv2d_opts), + BuiltinOperator.DEPTHWISE_CONV_2D: (Op.DepthwiseConv2DBias, depthwise_opts), + BuiltinOperator.DEPTH_TO_SPACE: (Op.DepthToSpace, OptionsSerializer("DepthToSpaceOptions", ("block_size",))), + BuiltinOperator.DEQUANTIZE: (Op.Dequantize, OptionsSerializer("DequantizeOptions")), + BuiltinOperator.EMBEDDING_LOOKUP: (Op.EmbeddingLookup, None), + BuiltinOperator.FLOOR: (Op.Floor, None), BuiltinOperator.FULLY_CONNECTED: ( - "FullyConnectedAct", + Op.FullyConnected, OptionsSerializer("FullyConnectedOptions", (fused_act, "weights_format", "asymmetric_quantize_inputs")), ), - BuiltinOperator.HASHTABLE_LOOKUP: ("HashtableLookup", None), - BuiltinOperator.L2_NORMALIZATION: ("L2NormAct", OptionsSerializer("L2NormOptions", (fused_act,))), - BuiltinOperator.L2_POOL_2D: ("L2Pool2D", pool2d_opts), + BuiltinOperator.HASHTABLE_LOOKUP: (Op.HashtableLookup, None), + BuiltinOperator.L2_NORMALIZATION: (Op.L2Norm, OptionsSerializer("L2NormOptions", (fused_act,))), + BuiltinOperator.L2_POOL_2D: (Op.L2Pool2D, pool2d_opts), BuiltinOperator.LOCAL_RESPONSE_NORMALIZATION: ( - "LRN", + Op.LRN, OptionsSerializer("LocalResponseNormalizationOptions", ("radius", "bias", "alpha", "beta")), ), - BuiltinOperator.LOGISTIC: ("Sigmoid", None), - BuiltinOperator.LSH_PROJECTION: ("LSHProjection", OptionsSerializer("LSHProjectionOptions", ("type",))), - BuiltinOperator.LSTM: ("LstmAct", lstm_opts), - BuiltinOperator.MAX_POOL_2D: ("MaxPool", pool2d_opts), - BuiltinOperator.MUL: ("MulAct", OptionsSerializer("MulOptions", (fused_act,))), - BuiltinOperator.RELU: ("Relu", None), - BuiltinOperator.RELU_N1_TO_1: ("ReluN1To1", None), - BuiltinOperator.RELU6: ("Relu6", None), - BuiltinOperator.RESHAPE: ("Reshape", OptionsSerializer("ReshapeOptions", (("new_shape", is_int_vec),))), + BuiltinOperator.LOGISTIC: (Op.Sigmoid, None), + BuiltinOperator.LSH_PROJECTION: (Op.LSHProjection, OptionsSerializer("LSHProjectionOptions", ("type",))), + BuiltinOperator.LSTM: (Op.Lstm, lstm_opts), + BuiltinOperator.MAX_POOL_2D: (Op.MaxPool, pool2d_opts), + BuiltinOperator.MUL: (Op.Mul, OptionsSerializer("MulOptions", (fused_act,))), + BuiltinOperator.RELU: (Op.Relu, None), + BuiltinOperator.RELU_N1_TO_1: (Op.ReluN1To1, None), + BuiltinOperator.RELU6: (Op.Relu6, None), + BuiltinOperator.RESHAPE: (Op.Reshape, OptionsSerializer("ReshapeOptions", (("new_shape", is_int_vec),))), BuiltinOperator.RESIZE_BILINEAR: ( - "ResizeBilinear", + Op.ResizeBilinear, OptionsSerializer("ResizeBilinearOptions", ("align_corners", "half_pixel_centers")), ), - BuiltinOperator.RNN: ("RnnAct", rnn_opts), - BuiltinOperator.SOFTMAX: ("Softmax", OptionsSerializer("SoftmaxOptions", ("beta",))), - BuiltinOperator.SPACE_TO_DEPTH: ("SpaceToDepth", OptionsSerializer("SpaceToDepthOptions", ("block_size",))), + BuiltinOperator.RNN: (Op.Rnn, rnn_opts), + BuiltinOperator.SOFTMAX: (Op.Softmax, OptionsSerializer("SoftmaxOptions", ("beta",))), + BuiltinOperator.SPACE_TO_DEPTH: (Op.SpaceToDepth, OptionsSerializer("SpaceToDepthOptions", ("block_size",))), BuiltinOperator.SVDF: ( - "SvdfAct", + Op.Svdf, OptionsSerializer("SVDFOptions", ("rank", fused_act, "asymmetric_quantize_inputs")), ), - BuiltinOperator.TANH: ("Tanh", None), + BuiltinOperator.TANH: (Op.Tanh, None), BuiltinOperator.CONCAT_EMBEDDINGS: ( - "ConcatEmbeddings", + Op.ConcatEmbeddings, OptionsSerializer( "ConcatEmbeddingsOptions", ( @@ -538,40 +538,40 @@ builtin_operator_map = { ), ), BuiltinOperator.SKIP_GRAM: ( - "SkipGram", + Op.SkipGram, OptionsSerializer("SkipGramOptions", ("ngram_size", "max_skip_size", "include_all_ngrams")), ), - BuiltinOperator.CALL: ("Call", OptionsSerializer("CallOptions", ("subgraph",))), + BuiltinOperator.CALL: (Op.Call, OptionsSerializer("CallOptions", ("subgraph",))), BuiltinOperator.EMBEDDING_LOOKUP_SPARSE: ( - "EmbeddingLookupSparse", + Op.EmbeddingLookupSparse, OptionsSerializer("EmbeddingLookupSparseOptions", ("combiner",)), ), - BuiltinOperator.PAD: ("Pad", OptionsSerializer("PadOptions")), - BuiltinOperator.UNIDIRECTIONAL_SEQUENCE_RNN: ("UnidirectionalSequenceRnnAct", seq_rnn_opts), - BuiltinOperator.GATHER: ("GatherV2", OptionsSerializer("GatherOptions", ("axis",))), - BuiltinOperator.BATCH_TO_SPACE_ND: ("BatchToSpaceND", OptionsSerializer("BatchToSpaceNDOptions")), - BuiltinOperator.SPACE_TO_BATCH_ND: ("SpaceToBatchND", OptionsSerializer("SpaceToBatchNDOptions")), - BuiltinOperator.TRANSPOSE: ("Transpose", OptionsSerializer("TransposeOptions")), - BuiltinOperator.MEAN: ("Mean", None), - BuiltinOperator.SUB: ("SubAct", OptionsSerializer("SubOptions", (fused_act, "pot_scale_int16",))), - BuiltinOperator.DIV: ("DivAct", OptionsSerializer("DivOptions", (fused_act,))), - BuiltinOperator.SQUEEZE: ("Squeeze", OptionsSerializer("SqueezeOptions", (("squeeze_dims", is_int_vec),))), - BuiltinOperator.UNIDIRECTIONAL_SEQUENCE_LSTM: ("UnidirectionalSequenceLstmAct", unidir_seq_lstm_opts), + BuiltinOperator.PAD: (Op.Pad, OptionsSerializer("PadOptions")), + BuiltinOperator.UNIDIRECTIONAL_SEQUENCE_RNN: (Op.UnidirectionalSequenceRnn, seq_rnn_opts), + BuiltinOperator.GATHER: (Op.GatherV2, OptionsSerializer("GatherOptions", ("axis",))), + BuiltinOperator.BATCH_TO_SPACE_ND: (Op.BatchToSpaceND, OptionsSerializer("BatchToSpaceNDOptions")), + BuiltinOperator.SPACE_TO_BATCH_ND: (Op.SpaceToBatchND, OptionsSerializer("SpaceToBatchNDOptions")), + BuiltinOperator.TRANSPOSE: (Op.Transpose, OptionsSerializer("TransposeOptions")), + BuiltinOperator.MEAN: (Op.Mean, None), + BuiltinOperator.SUB: (Op.Sub, OptionsSerializer("SubOptions", (fused_act, "pot_scale_int16",))), + BuiltinOperator.DIV: (Op.Div, OptionsSerializer("DivOptions", (fused_act,))), + BuiltinOperator.SQUEEZE: (Op.Squeeze, OptionsSerializer("SqueezeOptions", (("squeeze_dims", is_int_vec),))), + BuiltinOperator.UNIDIRECTIONAL_SEQUENCE_LSTM: (Op.UnidirectionalSequenceLstm, unidir_seq_lstm_opts), BuiltinOperator.STRIDED_SLICE: ( - "StridedSlice", + Op.StridedSlice, OptionsSerializer( "StridedSliceOptions", ("begin_mask", "end_mask", "ellipsis_mask", "new_axis_mask", "shrink_axis_mask") ), ), - BuiltinOperator.BIDIRECTIONAL_SEQUENCE_RNN: ("BidirectionalSequenceRnnAct", bidir_seq_rnn_opts), - BuiltinOperator.EXP: ("Exp", OptionsSerializer("ExpOptions")), - BuiltinOperator.TOPK_V2: ("TopKV2", OptionsSerializer("TopKV2Options")), - BuiltinOperator.SPLIT: ("Split", OptionsSerializer("SplitOptions", ("num_splits",))), - BuiltinOperator.LOG_SOFTMAX: ("LogSoftmax", OptionsSerializer("LogSoftmaxOptions")), - BuiltinOperator.DELEGATE: ("Delegate", None), - BuiltinOperator.BIDIRECTIONAL_SEQUENCE_LSTM: ("BidirectionalSequenceLstmAct", bidir_seq_lstm_opts), + BuiltinOperator.BIDIRECTIONAL_SEQUENCE_RNN: (Op.BidirectionalSequenceRnn, bidir_seq_rnn_opts), + BuiltinOperator.EXP: (Op.Exp, OptionsSerializer("ExpOptions")), + BuiltinOperator.TOPK_V2: (Op.TopKV2, OptionsSerializer("TopKV2Options")), + BuiltinOperator.SPLIT: (Op.Split, OptionsSerializer("SplitOptions", ("num_splits",))), + BuiltinOperator.LOG_SOFTMAX: (Op.LogSoftmax, OptionsSerializer("LogSoftmaxOptions")), + BuiltinOperator.DELEGATE: (Op.Delegate, None), + BuiltinOperator.BIDIRECTIONAL_SEQUENCE_LSTM: (Op.BidirectionalSequenceLstm, bidir_seq_lstm_opts), BuiltinOperator.CAST: ( - "Cast", + Op.Cast, OptionsSerializer( "CastOptions", ( @@ -580,109 +580,112 @@ builtin_operator_map = { ), ), ), - BuiltinOperator.PRELU: ("Prelu", None), - BuiltinOperator.MAXIMUM: ("Maximum", OptionsSerializer("MaximumMinimumOptions")), + BuiltinOperator.PRELU: (Op.Prelu, None), + BuiltinOperator.MAXIMUM: (Op.Maximum, OptionsSerializer("MaximumMinimumOptions")), BuiltinOperator.ARG_MAX: ( - "ArgMax", + Op.ArgMax, OptionsSerializer("ArgMaxOptions", (("output_type", datatype_deserialize, datatype_serialize),)), ), - BuiltinOperator.MINIMUM: ("Minimum", OptionsSerializer("MaximumMinimumOptions")), - BuiltinOperator.LESS: ("Less", OptionsSerializer("LessOptions")), - BuiltinOperator.NEG: ("Neg", OptionsSerializer("NegOptions")), - BuiltinOperator.PADV2: ("PadV2", OptionsSerializer("PadV2Options")), - BuiltinOperator.GREATER: ("Greater", OptionsSerializer("GreaterOptions")), - BuiltinOperator.GREATER_EQUAL: ("GreaterEqual", OptionsSerializer("GreaterEqualOptions")), - BuiltinOperator.LESS_EQUAL: ("LessEqual", OptionsSerializer("LessEqualOptions")), - BuiltinOperator.SELECT: ("Select", OptionsSerializer("SelectOptions")), - BuiltinOperator.SLICE: ("Slice", OptionsSerializer("SliceOptions")), - BuiltinOperator.SIN: ("Sin", None), + BuiltinOperator.MINIMUM: (Op.Minimum, OptionsSerializer("MaximumMinimumOptions")), + BuiltinOperator.LESS: (Op.Less, OptionsSerializer("LessOptions")), + BuiltinOperator.NEG: (Op.Neg, OptionsSerializer("NegOptions")), + BuiltinOperator.PADV2: (Op.PadV2, OptionsSerializer("PadV2Options")), + BuiltinOperator.GREATER: (Op.Greater, OptionsSerializer("GreaterOptions")), + BuiltinOperator.GREATER_EQUAL: (Op.GreaterEqual, OptionsSerializer("GreaterEqualOptions")), + BuiltinOperator.LESS_EQUAL: (Op.LessEqual, OptionsSerializer("LessEqualOptions")), + BuiltinOperator.SELECT: (Op.Select, OptionsSerializer("SelectOptions")), + BuiltinOperator.SLICE: (Op.Slice, OptionsSerializer("SliceOptions")), + BuiltinOperator.SIN: (Op.Sin, None), BuiltinOperator.TRANSPOSE_CONV: ( - "Conv2DBackpropInput", + Op.Conv2DBackpropInput, OptionsSerializer("TransposeConvOptions", (padding, "stride_w", "stride_h")), ), BuiltinOperator.SPARSE_TO_DENSE: ( - "SparseToDense", + Op.SparseToDense, OptionsSerializer("SparseToDenseOptions", ("validate_indices",)), ), - BuiltinOperator.TILE: ("Tile", OptionsSerializer("TileOptions")), - BuiltinOperator.EXPAND_DIMS: ("ExpandDims", OptionsSerializer("ExpandDimsOptions")), - BuiltinOperator.EQUAL: ("Equal", OptionsSerializer("EqualOptions")), - BuiltinOperator.NOT_EQUAL: ("NotEqual", OptionsSerializer("NotEqualOptions")), - BuiltinOperator.LOG: ("Log", None), - BuiltinOperator.SUM: ("Sum", None), - BuiltinOperator.SQRT: ("Sqrt", None), - BuiltinOperator.RSQRT: ("Rsqrt", None), + BuiltinOperator.TILE: (Op.Tile, OptionsSerializer("TileOptions")), + BuiltinOperator.EXPAND_DIMS: (Op.ExpandDims, OptionsSerializer("ExpandDimsOptions")), + BuiltinOperator.EQUAL: (Op.Equal, OptionsSerializer("EqualOptions")), + BuiltinOperator.NOT_EQUAL: (Op.NotEqual, OptionsSerializer("NotEqualOptions")), + BuiltinOperator.LOG: (Op.Log, None), + BuiltinOperator.SUM: (Op.Sum, None), + BuiltinOperator.SQRT: (Op.Sqrt, None), + BuiltinOperator.RSQRT: (Op.Rsqrt, None), BuiltinOperator.SHAPE: ( - "Shape", + Op.Shape, OptionsSerializer("ShapeOptions", (("out_type", datatype_deserialize, datatype_serialize),)), ), - BuiltinOperator.POW: ("Pow", OptionsSerializer("PowOptions")), + BuiltinOperator.POW: (Op.Pow, OptionsSerializer("PowOptions")), BuiltinOperator.ARG_MIN: ( - "ArgMin", + Op.ArgMin, OptionsSerializer("ArgMinOptions", (("output_type", datatype_deserialize, datatype_serialize),)), ), BuiltinOperator.FAKE_QUANT: ( - "FakeQuantWithMinMaxArgs", + Op.FakeQuantWithMinMaxArgs, OptionsSerializer("FakeQuantOptions", ("min", "max", "num_bits", "narrow_range")), ), - BuiltinOperator.REDUCE_PROD: ("Prod", reducer_opts), - BuiltinOperator.REDUCE_MAX: ("Max", reducer_opts), - BuiltinOperator.PACK: ("Pack", OptionsSerializer("PackOptions", ("values_count", "axis"))), - BuiltinOperator.LOGICAL_OR: ("LogicalOr", OptionsSerializer("LogicalOrOptions")), - BuiltinOperator.ONE_HOT: ("OneHot", OptionsSerializer("OneHotOptions", ("axis",))), - BuiltinOperator.LOGICAL_AND: ("LogicalAnd", OptionsSerializer("LogicalAndOptions")), - BuiltinOperator.LOGICAL_NOT: ("LogicalNot", OptionsSerializer("LogicalNotOptions")), - BuiltinOperator.UNPACK: ("Unpack", OptionsSerializer("UnpackOptions", ("num", "axis"))), - BuiltinOperator.REDUCE_MIN: ("Min", reducer_opts), - BuiltinOperator.FLOOR_DIV: ("FloorDiv", OptionsSerializer("FloorDivOptions")), - BuiltinOperator.REDUCE_ANY: ("Any", reducer_opts), - BuiltinOperator.SQUARE: ("Square", OptionsSerializer("SquareOptions")), - BuiltinOperator.ZEROS_LIKE: ("ZerosLike", OptionsSerializer("ZerosLikeOptions")), - BuiltinOperator.FILL: ("Fill", OptionsSerializer("FillOptions")), - BuiltinOperator.FLOOR_MOD: ("FloorMod", OptionsSerializer("FloorModOptions")), - BuiltinOperator.RANGE: ("Range", OptionsSerializer("RangeOptions")), + BuiltinOperator.REDUCE_PROD: (Op.Prod, reducer_opts), + BuiltinOperator.REDUCE_MAX: (Op.Max, reducer_opts), + BuiltinOperator.PACK: (Op.Pack, OptionsSerializer("PackOptions", ("values_count", "axis"))), + BuiltinOperator.LOGICAL_OR: (Op.LogicalOr, OptionsSerializer("LogicalOrOptions")), + BuiltinOperator.ONE_HOT: (Op.OneHot, OptionsSerializer("OneHotOptions", ("axis",))), + BuiltinOperator.LOGICAL_AND: (Op.LogicalAnd, OptionsSerializer("LogicalAndOptions")), + BuiltinOperator.LOGICAL_NOT: (Op.LogicalNot, OptionsSerializer("LogicalNotOptions")), + BuiltinOperator.UNPACK: (Op.Unpack, OptionsSerializer("UnpackOptions", ("num", "axis"))), + BuiltinOperator.REDUCE_MIN: (Op.Min, reducer_opts), + BuiltinOperator.FLOOR_DIV: (Op.FloorDiv, OptionsSerializer("FloorDivOptions")), + BuiltinOperator.REDUCE_ANY: (Op.Any, reducer_opts), + BuiltinOperator.SQUARE: (Op.Square, OptionsSerializer("SquareOptions")), + BuiltinOperator.ZEROS_LIKE: (Op.ZerosLike, OptionsSerializer("ZerosLikeOptions")), + BuiltinOperator.FILL: (Op.Fill, OptionsSerializer("FillOptions")), + BuiltinOperator.FLOOR_MOD: (Op.FloorMod, OptionsSerializer("FloorModOptions")), + BuiltinOperator.RANGE: (Op.Range, OptionsSerializer("RangeOptions")), BuiltinOperator.RESIZE_NEAREST_NEIGHBOR: ( - "ResizeNearestNeighbor", + Op.ResizeNearestNeighbor, OptionsSerializer("ResizeNearestNeighborOptions", ("align_corners", "half_pixel_centers")), ), - BuiltinOperator.LEAKY_RELU: ("LeakyRelu", OptionsSerializer("LeakyReluOptions", ("alpha",))), - BuiltinOperator.SQUARED_DIFFERENCE: ("SquaredDifference", OptionsSerializer("SquaredDifferenceOptions")), - BuiltinOperator.MIRROR_PAD: ("MirrorPad", OptionsSerializer("MirrorPadOptions", ("mode",))), - BuiltinOperator.ABS: ("Abs", OptionsSerializer("AbsOptions")), - BuiltinOperator.SPLIT_V: ("SplitV", OptionsSerializer("SplitVOptions", ("num_splits",))), + BuiltinOperator.LEAKY_RELU: (Op.LeakyRelu, OptionsSerializer("LeakyReluOptions", ("alpha",))), + BuiltinOperator.SQUARED_DIFFERENCE: (Op.SquaredDifference, OptionsSerializer("SquaredDifferenceOptions")), + BuiltinOperator.MIRROR_PAD: (Op.MirrorPad, OptionsSerializer("MirrorPadOptions", ("mode",))), + BuiltinOperator.ABS: (Op.Abs, OptionsSerializer("AbsOptions")), + BuiltinOperator.SPLIT_V: (Op.SplitV, OptionsSerializer("SplitVOptions", ("num_splits",))), BuiltinOperator.UNIQUE: ( - "Unique", + Op.Unique, OptionsSerializer("UniqueOptions", (("idx_out_type", datatype_deserialize, datatype_serialize),)), ), - BuiltinOperator.CEIL: ("Ceil", None), - BuiltinOperator.REVERSE_V2: ("ReverseV2", OptionsSerializer("ReverseV2Options")), - BuiltinOperator.ADD_N: ("AddN", OptionsSerializer("AddNOptions")), - BuiltinOperator.GATHER_ND: ("GatherNd", OptionsSerializer("GatherNdOptions")), - BuiltinOperator.COS: ("Cos", OptionsSerializer("CosOptions")), - BuiltinOperator.WHERE: ("Where", OptionsSerializer("WhereOptions")), - BuiltinOperator.RANK: ("Rank", OptionsSerializer("RankOptions")), - BuiltinOperator.ELU: ("Elu", None), + BuiltinOperator.CEIL: (Op.Ceil, None), + BuiltinOperator.REVERSE_V2: (Op.ReverseV2, OptionsSerializer("ReverseV2Options")), + BuiltinOperator.ADD_N: (Op.AddN, OptionsSerializer("AddNOptions")), + BuiltinOperator.GATHER_ND: (Op.GatherNd, OptionsSerializer("GatherNdOptions")), + BuiltinOperator.COS: (Op.Cos, OptionsSerializer("CosOptions")), + BuiltinOperator.WHERE: (Op.Where, OptionsSerializer("WhereOptions")), + BuiltinOperator.RANK: (Op.Rank, OptionsSerializer("RankOptions")), + BuiltinOperator.ELU: (Op.Elu, None), BuiltinOperator.REVERSE_SEQUENCE: ( - "ReverseSequence", + Op.ReverseSequence, OptionsSerializer("ReverseSequenceOptions", ("seq_dim", "batch_dim")), ), - BuiltinOperator.MATRIX_DIAG: ("MatrixDiag", OptionsSerializer("MatrixDiagOptions")), - BuiltinOperator.QUANTIZE: ("Quantize", OptionsSerializer("QuantizeOptions")), - BuiltinOperator.MATRIX_SET_DIAG: ("MatrixSetDiag", OptionsSerializer("MatrixSetDiagOptions")), - BuiltinOperator.ROUND: ("Round", None), - BuiltinOperator.HARD_SWISH: ("HardSwish", OptionsSerializer("HardSwishOptions")), - BuiltinOperator.IF: ("If", OptionsSerializer("IfOptions", ("then_subgraph_index", "else_subgraph_index"))), - BuiltinOperator.WHILE: ("While", OptionsSerializer("WhileOptions", ("cond_subgraph_index", "body_subgraph_index"))), - BuiltinOperator.NON_MAX_SUPPRESSION_V4: ("NonMaxSuppressionV4", OptionsSerializer("NonMaxSuppressionV4Options")), - BuiltinOperator.NON_MAX_SUPPRESSION_V5: ("NonMaxSuppressionV5", OptionsSerializer("NonMaxSuppressionV5Options")), - BuiltinOperator.SCATTER_ND: ("ScatterNd", OptionsSerializer("ScatterNdOptions")), - BuiltinOperator.SELECT_V2: ("SelectV2", OptionsSerializer("SelectV2Options")), - BuiltinOperator.DENSIFY: ("Densify", OptionsSerializer("DensifyOptions")), - BuiltinOperator.SEGMENT_SUM: ("SegmentSum", OptionsSerializer("SegmentSumOptions")), - BuiltinOperator.BATCH_MATMUL: ("BatchMatMul", OptionsSerializer("BatchMatMulOptions", ("adj_x", "adj_y"))), - BuiltinOperator.CUSTOM: (custom_prefix, CustomOptionsSerializer()), + BuiltinOperator.MATRIX_DIAG: (Op.MatrixDiag, OptionsSerializer("MatrixDiagOptions")), + BuiltinOperator.QUANTIZE: (Op.Quantize, OptionsSerializer("QuantizeOptions")), + BuiltinOperator.MATRIX_SET_DIAG: (Op.MatrixSetDiag, OptionsSerializer("MatrixSetDiagOptions")), + BuiltinOperator.ROUND: (Op.Round, None), + BuiltinOperator.HARD_SWISH: (Op.HardSwish, OptionsSerializer("HardSwishOptions")), + BuiltinOperator.IF: (Op.If, OptionsSerializer("IfOptions", ("then_subgraph_index", "else_subgraph_index"))), + BuiltinOperator.WHILE: ( + Op.While, + OptionsSerializer("WhileOptions", ("cond_subgraph_index", "body_subgraph_index")), + ), + BuiltinOperator.NON_MAX_SUPPRESSION_V4: (Op.NonMaxSuppressionV4, OptionsSerializer("NonMaxSuppressionV4Options")), + BuiltinOperator.NON_MAX_SUPPRESSION_V5: (Op.NonMaxSuppressionV5, OptionsSerializer("NonMaxSuppressionV5Options")), + BuiltinOperator.SCATTER_ND: (Op.ScatterNd, OptionsSerializer("ScatterNdOptions")), + BuiltinOperator.SELECT_V2: (Op.SelectV2, OptionsSerializer("SelectV2Options")), + BuiltinOperator.DENSIFY: (Op.Densify, OptionsSerializer("DensifyOptions")), + BuiltinOperator.SEGMENT_SUM: (Op.SegmentSum, OptionsSerializer("SegmentSumOptions")), + BuiltinOperator.BATCH_MATMUL: (Op.BatchMatMul, OptionsSerializer("BatchMatMulOptions", ("adj_x", "adj_y"))), + BuiltinOperator.CUSTOM: (Op.Custom, CustomOptionsSerializer()), } builtin_operator_inv_map = {v[0]: (k, v[1]) for k, v in builtin_operator_map.items()} -builtin_operator_inv_map["NpuOp"] = (BuiltinOperator.CUSTOM, CustomOptionsSerializer()) +builtin_operator_inv_map[Op.CustomNpuOp] = (BuiltinOperator.CUSTOM, CustomOptionsSerializer()) -- cgit v1.2.1