IVGCVSW-5495 Fix validation for per-channel quant
* Now enter if block if bias OR weights have
multiple quantization scales.
Signed-off-by: James Conroy <james.conroy@arm.com>
Change-Id: I5eba0ceac9b347d0e3467e86d72d587b749b9521
diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp
index b39d6b3..676559c 100644
--- a/src/backends/backendsCommon/WorkloadData.cpp
+++ b/src/backends/backendsCommon/WorkloadData.cpp
@@ -230,7 +230,7 @@
to_string(biasTensor.GetQuantizationOffset()));
}
- if (biasTensor.HasMultipleQuantizationScales())
+ if (biasTensor.HasMultipleQuantizationScales() || weightsTensorInfo.HasMultipleQuantizationScales())
{
// Validate per-axis quantization scales
const std::vector<float>& weightScales = weightsTensorInfo.GetQuantizationScales();
@@ -239,8 +239,9 @@
if (weightScales.size() != biasScales.size())
{
std::stringstream msg;
- msg << descName << ": Expected matchhing number of per-axis quantization scales, but got different "
- << "values: weights=" << weightScales.size() << ", biases=" << biasScales.size();
+ msg << descName << ": Expected matching number of per-axis quantization scales for weights and bias, "
+ << "but got different values. This is currently unsupported: weights=" << weightScales.size()
+ << ", biases=" << biasScales.size();
throw InvalidArgumentException(msg.str(), CHECK_LOCATION());
}