diff options
author | Fredrik Svedberg <fredrik.svedberg@arm.com> | 2022-09-23 15:25:17 +0200 |
---|---|---|
committer | Fredrik Svedberg <fredrik.svedberg@arm.com> | 2022-09-27 12:20:39 +0000 |
commit | 1e5456fcb153b310f6b74ccb2938667bc8b2b6dd (patch) | |
tree | 7f704601eb59482c5996bb32bd7b25d835380e87 /ethosu | |
parent | 5060ff53f5ac2382e04a68d7772bd71a36f63845 (diff) | |
download | ethos-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
Diffstat (limited to 'ethosu')
-rw-r--r-- | ethosu/vela/tflite_graph_optimiser.py | 32 |
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 |