MLBEDSW-5052 Fix RELU scaling

Fixed scaling for RELUs with different IFM/OFM scaling.

Signed-off-by: Fredrik Svedberg <fredrik.svedberg@arm.com>
Change-Id: I0ac96326b3960c0fb025b885e06a259d24b2e684
diff --git a/ethosu/vela/tflite_graph_optimiser.py b/ethosu/vela/tflite_graph_optimiser.py
index 7526f46..15b82c7 100644
--- a/ethosu/vela/tflite_graph_optimiser.py
+++ b/ethosu/vela/tflite_graph_optimiser.py
@@ -42,6 +42,7 @@
 from .numeric_util import full_shape
 from .numeric_util import round_away_zero
 from .operation import create_activation_function
+from .operation import ExplicitScaling
 from .operation import NpuBlockType
 from .operation import Op
 from .operation import Operation
@@ -628,6 +629,10 @@
             relu_fused_op = create_avgpool_nop(op.name + "_avgpool")
             # And fuse the original activation function to it
             relu_fused_op.activation = create_activation_function(op.type)
+            # Add explicit rescaling
+            rescale = ifm.quantization.scale_f32 / ofm.quantization.scale_f32
+            multiplier, shift = scaling.quantise_scale(rescale)
+            relu_fused_op.rescale = ExplicitScaling(False, [shift], [multiplier])
             # Tidy up and assign the ifm and ofm to the new op
             ifm.consumer_list.remove(op)