aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/tflite_mapping.py
diff options
context:
space:
mode:
authorDwight Lidman <dwight.lidman@arm.com>2020-08-18 14:08:10 +0200
committertim.hall <tim.hall@arm.com>2020-08-19 17:43:36 +0000
commitd2a972d8b400a84062793eafe5dfc65e939804b7 (patch)
tree135990c4f03168bd6f865dbb7570c0bd17eebf14 /ethosu/vela/tflite_mapping.py
parent2573311dbed6728fddba8bcb0cd03c35c45bbc03 (diff)
downloadethos-u-vela-d2a972d8b400a84062793eafe5dfc65e939804b7.tar.gz
MLBEDSW-2731: Allow all TensorFlow Lite operators to pass through
This commit adds missing entries and options in the tflite_mapping which should in theory allow every existing TensorFlow Lite operator to be passed through Vela without crashing. Previously some entries were missing and was crashing with a custom error whenever encountered. Signed-off-by: Dwight Lidman <dwight.lidman@arm.com> Change-Id: Ia69b7a84164bb57c52ceaf7380160794b7f0d9ee
Diffstat (limited to 'ethosu/vela/tflite_mapping.py')
-rw-r--r--ethosu/vela/tflite_mapping.py100
1 files changed, 57 insertions, 43 deletions
diff --git a/ethosu/vela/tflite_mapping.py b/ethosu/vela/tflite_mapping.py
index 55351cb9..e5c3e4f6 100644
--- a/ethosu/vela/tflite_mapping.py
+++ b/ethosu/vela/tflite_mapping.py
@@ -476,26 +476,26 @@ builtin_operator_map = {
BuiltinOperator.DEPTHWISE_CONV_2D: ("DepthwiseConv2dBiasAct", depthwise_opts),
BuiltinOperator.DEPTH_TO_SPACE: ("DepthToSpace", OptionsSerializer("DepthToSpaceOptions", ("block_size",))),
BuiltinOperator.DEQUANTIZE: ("Dequantize", OptionsSerializer("DequantizeOptions")),
- BuiltinOperator.EMBEDDING_LOOKUP: (None, None),
+ BuiltinOperator.EMBEDDING_LOOKUP: ("EmbeddingLookup", None),
BuiltinOperator.FLOOR: ("Floor", None),
BuiltinOperator.FULLY_CONNECTED: (
"FullyConnectedAct",
OptionsSerializer("FullyConnectedOptions", (fused_act, "weights_format")),
),
- BuiltinOperator.HASHTABLE_LOOKUP: (None, None),
- # BuiltinOperator.L2_NORMALIZATION : "L2NormAct",
- BuiltinOperator.L2_POOL_2D: (None, pool2d_opts),
+ BuiltinOperator.HASHTABLE_LOOKUP: ("HashtableLookup", None),
+ BuiltinOperator.L2_NORMALIZATION : ("L2NormAct", OptionsSerializer("L2NormOptions", (fused_act,))),
+ BuiltinOperator.L2_POOL_2D: ("L2Pool2D", pool2d_opts),
BuiltinOperator.LOCAL_RESPONSE_NORMALIZATION: (
"LRN",
OptionsSerializer("LocalResponseNormalizationOptions", ("radius", "bias", "alpha", "beta")),
),
BuiltinOperator.LOGISTIC: ("Sigmoid", None),
- # BuiltinOperator.LSH_PROJECTION : "",
+ 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: (None, None),
+ BuiltinOperator.RELU_N1_TO_1: ("ReluN1To1", None),
BuiltinOperator.RELU6: ("Relu6", None),
BuiltinOperator.RESHAPE: ("Reshape", OptionsSerializer("ReshapeOptions", (("new_shape", is_int_vec),))),
BuiltinOperator.RESIZE_BILINEAR: (
@@ -507,10 +507,24 @@ builtin_operator_map = {
BuiltinOperator.SPACE_TO_DEPTH: ("SpaceToDepth", OptionsSerializer("SpaceToDepthOptions", ("block_size",))),
BuiltinOperator.SVDF: ("SvdfAct", OptionsSerializer("SVDFOptions", ("rank", fused_act))),
BuiltinOperator.TANH: ("Tanh", None),
- # BuiltinOperator.CONCAT_EMBEDDINGS : "",
- # BuiltinOperator.SKIP_GRAM : "",
- # BuiltinOperator.CALL : "",
- BuiltinOperator.EMBEDDING_LOOKUP_SPARSE: (None, OptionsSerializer("EmbeddingLookupSparseOptions", ("combiner",))),
+ BuiltinOperator.CONCAT_EMBEDDINGS: (
+ "ConcatEmbeddings",
+ OptionsSerializer(
+ "ConcatEmbeddingsOptions",
+ ("num_channels", "num_columns_per_channel", "num_columns_per_channel_as_numpy",
+ "num_columns_per_channel_as_length", "embedding_dim_per_channel", "embedding_dim_per_channel_as_numpy",
+ "embedding_dim_per_channel_as_length",)
+ ),
+ ),
+ BuiltinOperator.SKIP_GRAM: (
+ "SkipGram",
+ OptionsSerializer("SkipGramOptions", ("ngram_size", "max_skip_size", "include_all_ngrams"))
+ ),
+ BuiltinOperator.CALL: ("Call", OptionsSerializer("CallOptions", ("subgraph",))),
+ BuiltinOperator.EMBEDDING_LOOKUP_SPARSE: (
+ "EmbeddingLookupSparse",
+ OptionsSerializer("EmbeddingLookupSparseOptions", ("combiner",))
+ ),
BuiltinOperator.PAD: ("Pad", OptionsSerializer("PadOptions")),
BuiltinOperator.UNIDIRECTIONAL_SEQUENCE_RNN: ("UnidirectionalSequenceRnnAct", seq_rnn_opts),
BuiltinOperator.GATHER: ("GatherV2", OptionsSerializer("GatherOptions", ("axis",))),
@@ -533,7 +547,7 @@ builtin_operator_map = {
BuiltinOperator.TOPK_V2: ("TopKV2", OptionsSerializer("TopKV2Options")),
BuiltinOperator.SPLIT: ("Split", OptionsSerializer("SplitOptions", ("num_splits",))),
BuiltinOperator.LOG_SOFTMAX: ("LogSoftmax", OptionsSerializer("LogSoftmaxOptions")),
- # BuiltinOperator.DELEGATE : "",
+ BuiltinOperator.DELEGATE : ("Delegate", None),
BuiltinOperator.BIDIRECTIONAL_SEQUENCE_LSTM: ("BidirectionalSequenceLstmAct", bidir_seq_lstm_opts),
BuiltinOperator.CAST: (
"Cast",
@@ -552,14 +566,14 @@ builtin_operator_map = {
OptionsSerializer("ArgMaxOptions", (("output_type", datatype_deserialize, datatype_serialize),)),
),
BuiltinOperator.MINIMUM: ("Minimum", OptionsSerializer("MaximumMinimumOptions")),
- BuiltinOperator.LESS: ("Less", None),
- BuiltinOperator.NEG: ("Neg", None),
- BuiltinOperator.PADV2: ("PadV2", None),
- BuiltinOperator.GREATER: ("Greater", None),
- BuiltinOperator.GREATER_EQUAL: ("GreaterEqual", None),
- BuiltinOperator.LESS_EQUAL: ("LessEqual", None),
- BuiltinOperator.SELECT: ("Select", None),
- BuiltinOperator.SLICE: ("Slice", None),
+ 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.TRANSPOSE_CONV: (
"Conv2DBackpropInput",
@@ -570,9 +584,9 @@ builtin_operator_map = {
OptionsSerializer("SparseToDenseOptions", ("validate_indices",)),
),
BuiltinOperator.TILE: ("Tile", OptionsSerializer("TileOptions")),
- BuiltinOperator.EXPAND_DIMS: ("ExpandDims", None),
- BuiltinOperator.EQUAL: ("Equal", None),
- BuiltinOperator.NOT_EQUAL: ("NotEqual", None),
+ 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),
@@ -581,7 +595,7 @@ builtin_operator_map = {
"Shape",
OptionsSerializer("ShapeOptions", (("out_type", datatype_deserialize, datatype_serialize),)),
),
- BuiltinOperator.POW: ("Pow", None),
+ BuiltinOperator.POW: ("Pow", OptionsSerializer("PowOptions")),
BuiltinOperator.ARG_MIN: (
"ArgMin",
OptionsSerializer("ArgMinOptions", (("output_type", datatype_deserialize, datatype_serialize),)),
@@ -593,47 +607,47 @@ builtin_operator_map = {
BuiltinOperator.REDUCE_PROD: ("Prod", reducer_opts),
BuiltinOperator.REDUCE_MAX: ("Max", reducer_opts),
BuiltinOperator.PACK: ("Pack", OptionsSerializer("PackOptions", ("values_count", "axis"))),
- BuiltinOperator.LOGICAL_OR: ("LogicalOr", None),
+ BuiltinOperator.LOGICAL_OR: ("LogicalOr", OptionsSerializer("LogicalOrOptions")),
BuiltinOperator.ONE_HOT: ("OneHot", OptionsSerializer("OneHotOptions", ("axis",))),
- BuiltinOperator.LOGICAL_AND: ("LogicalAnd", None),
- BuiltinOperator.LOGICAL_NOT: ("LogicalNot", None),
+ 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", None),
+ BuiltinOperator.FLOOR_DIV: ("FloorDiv", OptionsSerializer("FloorDivOptions")),
BuiltinOperator.REDUCE_ANY: ("Any", reducer_opts),
- BuiltinOperator.SQUARE: ("Square", None),
- BuiltinOperator.ZEROS_LIKE: ("ZerosLike", None),
- BuiltinOperator.FILL: ("Fill", None),
- BuiltinOperator.FLOOR_MOD: ("FloorMod", None),
- BuiltinOperator.RANGE: ("Range", None),
+ 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.RESIZE_NEAREST_NEIGHBOR: (
"ResizeNearestNeighbor",
OptionsSerializer("ResizeNearestNeighborOptions", ("align_corners",)),
),
BuiltinOperator.LEAKY_RELU: ("LeakyRelu", OptionsSerializer("LeakyReluOptions", ("alpha",))),
- BuiltinOperator.SQUARED_DIFFERENCE: ("SquaredDifference", None),
+ BuiltinOperator.SQUARED_DIFFERENCE: ("SquaredDifference", OptionsSerializer("SquaredDifferenceOptions")),
BuiltinOperator.MIRROR_PAD: ("MirrorPad", OptionsSerializer("MirrorPadOptions", ("mode",))),
- BuiltinOperator.ABS: ("Abs", None),
+ BuiltinOperator.ABS: ("Abs", OptionsSerializer("AbsOptions")),
BuiltinOperator.SPLIT_V: ("SplitV", OptionsSerializer("SplitVOptions", ("num_splits",))),
BuiltinOperator.UNIQUE: (
"Unique",
OptionsSerializer("UniqueOptions", (("idx_out_type", datatype_deserialize, datatype_serialize),)),
),
BuiltinOperator.CEIL: ("Ceil", None),
- BuiltinOperator.REVERSE_V2: ("ReverseV2", None),
- BuiltinOperator.ADD_N: ("AddN", None),
- BuiltinOperator.GATHER_ND: ("GatherNd", None),
- BuiltinOperator.COS: ("Cos", None),
- BuiltinOperator.WHERE: ("Where", None),
- BuiltinOperator.RANK: ("Rank", 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.REVERSE_SEQUENCE: (
"ReverseSequence",
OptionsSerializer("ReverseSequenceOptions", ("seq_dim", "batch_dim")),
),
- BuiltinOperator.MATRIX_DIAG: ("MatrixDiag", None),
- BuiltinOperator.QUANTIZE: ("Quantize", None),
- BuiltinOperator.MATRIX_SET_DIAG: ("MatrixSetDiag", None),
+ BuiltinOperator.MATRIX_DIAG: ("MatrixDiag", OptionsSerializer("MatrixDiagOptions")),
+ BuiltinOperator.QUANTIZE: ("Quantize", OptionsSerializer("QuantizeOptions")),
+ BuiltinOperator.MATRIX_SET_DIAG: ("MatrixSetDiag", OptionsSerializer("MatrixSetDiagOptions")),
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"))),