aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrik Svedberg <fredrik.svedberg@arm.com>2022-09-23 15:25:17 +0200
committerFredrik Svedberg <fredrik.svedberg@arm.com>2022-09-27 12:20:39 +0000
commit1e5456fcb153b310f6b74ccb2938667bc8b2b6dd (patch)
tree7f704601eb59482c5996bb32bd7b25d835380e87
parent5060ff53f5ac2382e04a68d7772bd71a36f63845 (diff)
downloadethos-u-vela-1e5456fcb153b310f6b74ccb2938667bc8b2b6dd.tar.gz
MLBEDSW-6708 Check the bias tensor in graph optimiser mean op
Cleaned up bias tensor use in graph optimiser for Mean operator. Signed-off-by: Fredrik Svedberg <fredrik.svedberg@arm.com> Change-Id: Ibcbfa010a4de67d97181df664b420168d6883d1e
-rw-r--r--ethosu/vela/tflite_graph_optimiser.py32
1 files changed, 6 insertions, 26 deletions
diff --git a/ethosu/vela/tflite_graph_optimiser.py b/ethosu/vela/tflite_graph_optimiser.py
index 028151fd..5d6d7071 100644
--- a/ethosu/vela/tflite_graph_optimiser.py
+++ b/ethosu/vela/tflite_graph_optimiser.py
@@ -1622,7 +1622,7 @@ def convert_mean_to_depthwise_conv_or_avgpool(op, arch, nng):
# Set IFM/OFM shapes after changing op type
op.set_ifm_ofm_shapes()
- weight_scale, bias = 1, None
+ weight_scale, bias = 1, 0
ofmq, ifmq = op.ofm.quantization, inp.quantization
# Set rounding mode, scaling and zero point based on which reference implementation to match
if len(shape) == 4 and axis == [1, 2] and keep_dims:
@@ -1645,20 +1645,13 @@ def convert_mean_to_depthwise_conv_or_avgpool(op, arch, nng):
# the bias can only effectively assume values in the range [-255, 255].
intermediate.dtype = DataType.int16
intermediate.quantization.zero_point = 0
- add_op = Operation(Op.Add, op.name + "_bias")
+ add_op = Operation(Op.Add, f"{op.name}_bias")
add_op.forced_output_quantization = foq
add_op.add_input_tensor(intermediate)
quant = QuantizationParameters()
quant.zero_point = 0
- bias_term_tens = create_const_tensor(
- op.name + "_bias",
- [1, 1, 1, 1],
- DataType.int16,
- [bias_term],
- np.int16,
- quantization=quant,
- )
- add_op.add_input_tensor(bias_term_tens)
+ bias_scalar = create_const_tensor(add_op.name, [], DataType.int16, [bias_term], quantization=quant)
+ add_op.add_input_tensor(bias_scalar)
add_op.set_output_tensor(op.ofm)
add_op.set_ifm_ofm_shapes()
add_op.activation = op.activation
@@ -1793,22 +1786,9 @@ def convert_mean_to_depthwise_conv_or_avgpool(op, arch, nng):
)
op.weights.values = np.reshape(op.inputs[1].values, weight_shape)
- # Add None bias tensor
- op.inputs.append(None)
# Add bias tensor
- if bias:
- bias_shape = [shape[-1]]
- op.set_input_tensor(
- create_const_tensor(
- "bias",
- bias_shape,
- inp.dtype,
- np.ones(bias_shape) * bias,
- value_dtype=np.int32,
- quantization=None,
- ),
- 2,
- )
+ bias_shape = [shape[-1]]
+ op.inputs.append(create_const_tensor("bias", bias_shape, DataType.int32, np.ones(bias_shape) * bias))
return op