[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 <fredrik.svedberg@arm.com>
Change-Id: Ib9ba8891dc95ef5491e15d0feedef44331a26393
diff --git a/ethosu/vela/graph_optimiser.py b/ethosu/vela/graph_optimiser.py
index 2bd57dd..81d5a18 100644
--- a/ethosu/vela/graph_optimiser.py
+++ b/ethosu/vela/graph_optimiser.py
@@ -433,6 +433,20 @@
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 @@
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,