From 0f98b361288c71fca327969346db32de098c797b Mon Sep 17 00:00:00 2001 From: Fredrik Svedberg Date: Tue, 29 Sep 2020 10:00:39 +0200 Subject: [MLBEDSW-2802] Fix 5D tensor crash Fixed crash in networks with 5D tensors. Fixed crash for (int32) tensors without quantization. Added validity checks for concatenation. Moved unfusing of activation function from tflite_reader to graph_optimiser. Signed-off-by: Fredrik Svedberg Change-Id: Ib9ba8891dc95ef5491e15d0feedef44331a26393 --- ethosu/vela/graph_optimiser.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'ethosu/vela/graph_optimiser.py') diff --git a/ethosu/vela/graph_optimiser.py b/ethosu/vela/graph_optimiser.py index 2bd57ddd..81d5a188 100644 --- a/ethosu/vela/graph_optimiser.py +++ b/ethosu/vela/graph_optimiser.py @@ -433,6 +433,20 @@ def fixup_pack_input(op, arch): return op +def unfuse_activation_function(op, arch): + unfuse_ops = ("ConcatTFLite",) + if op.type in unfuse_ops and op.run_on_npu and op.attrs.get("fused_activation_function", None) is not None: + act = op.attrs["fused_activation_function"] + del op.attrs["fused_activation_function"] + act_op = Operation(act, op.name + act) + out_tens = op.outputs[0] + intermediate_tens = out_tens.clone("_act_intermediate") + act_op.set_output_tensor(out_tens) + act_op.add_input_tensor(intermediate_tens) + op.set_output_tensor(intermediate_tens) + + return op + def fixup_unpack_output(tens, arch): op = tens.ops[0] if op.type in set(("Unpack", "StridedSlice")): @@ -1087,6 +1101,7 @@ def optimise_graph_a(nng, arch, verbose_graph=False): fixup_fully_connected_input, convert_batched_fc_to_conv, fixup_pack_input, + unfuse_activation_function, fixup_conv2d_backprop, fixup_relus_with_differing_ifm_ofm_scaling, fixup_act_reorder, -- cgit v1.2.1