IVGCVSW-5882 Produce warning if bias quantization scale mismatch

 * Changed behaviour of bias scale tolerance check such that if
input quant * weight quant != bias quant +/- tolerance
Then instead of throwing an error we send a warning.
 * Updated tests to reflect changes

Signed-off-by: mathad01 <matthew.haddon@arm.com>
Change-Id: Ifd97c574fe13805660df4636e9616b2d786b490d
diff --git a/src/backends/backendsCommon/WorkloadData.cpp b/src/backends/backendsCommon/WorkloadData.cpp
index 100d23e..470d460 100644
--- a/src/backends/backendsCommon/WorkloadData.cpp
+++ b/src/backends/backendsCommon/WorkloadData.cpp
@@ -8,6 +8,7 @@
 #include <armnnUtils/DataLayoutIndexed.hpp>
 #include <armnnUtils/TensorUtils.hpp>
 #include <armnn/utility/NumericCast.hpp>
+#include <armnn/Logging.hpp>
 
 #include <algorithm>
 #include <iomanip>
@@ -212,15 +213,13 @@
     // Helper lambda function to validate a single bias quantization scale value
     auto VerifyBiasQuantizationScale = [&descName](float biasScale, float expectedScale) -> void
     {
-        constexpr float tolerance = 0.000001f;
+        constexpr float tolerance = 0.0001f;
         if (std::abs(biasScale - expectedScale) > tolerance)
         {
             // Print the float values with extra precision to see very small differences
-            std::stringstream msg;
-            msg << std::setprecision(10) << descName << ": Expected " << expectedScale <<
-                " quantization scale for bias tensor (the product of the input and weight scales), but got " <<
-                biasScale;
-            throw InvalidArgumentException(msg.str(), CHECK_LOCATION());
+            ARMNN_LOG(warning) << std::setprecision(6) << descName << ": Expected " << expectedScale <<
+                " for bias quantization scale (product of input and weight scales), but got " <<
+                biasScale << ". Using scale provided.";
         }
     };
 
@@ -3707,4 +3706,4 @@
     ValidateTensorDataTypesMatch(inputTensorInfo, outputTensorInfo, descriptorName, "input", "output");
 }
 
-} // namespace armnn
+} // namespace armnn
\ No newline at end of file
diff --git a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
index 2eb4a06..5ac548f 100644
--- a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
+++ b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp
@@ -676,7 +676,7 @@
     ScopedCpuTensorHandle biasHandle2(biasInfo2);
     queueDescriptor.m_Bias = &biasHandle2;
 
-    BOOST_CHECK_THROW(queueDescriptor.Validate(workloadInfo), InvalidArgumentException);
+    BOOST_CHECK_NO_THROW(queueDescriptor.Validate(workloadInfo));
 
     // Test 3: mismatched number of quantization scales
     const std::vector<float> biasPerAxisScales3 = { 3.75f, 5.25f, 5.25f };