MLBEDSW-5844: Inconsistent calculation of read shapes
- This bug causes a regression in the use of unpack and split operators
- The bug is due to the read_shapes attribute being an absolute calculation
for slice and strided_slice, but a relative one for unpack and split
- The fix is to consistently treat the attribute as a shape relative to the
read_offset
Signed-off-by: Tim Hall <tim.hall@arm.com>
Change-Id: I4504b161be507ea22ca6ee40fbe7808bfe049405
diff --git a/ethosu/vela/tflite_graph_optimiser.py b/ethosu/vela/tflite_graph_optimiser.py
index 7b10f86..8cfc373 100644
--- a/ethosu/vela/tflite_graph_optimiser.py
+++ b/ethosu/vela/tflite_graph_optimiser.py
@@ -146,7 +146,11 @@
new_op = Operation(Op.SplitSliceRead, split_op.name)
new_op.inputs = [inp]
ofm_shape_idx = 0
- read_shape = offset_end
+ if None in (offset_end, offset_start):
+ read_shape = None
+ else:
+ # the read shape is relative to each start offset
+ read_shape = [oe - os for oe, os in zip(offset_end, offset_start)]
# For Split the offset cannot be extracted from the tensor so it has to
# be calculated from the index of the output tensor