Review all shapes in datasets to account for padding removal Part 2
* Fix validate compare_dimensions to account for cases where 1D tensor
permuted into a 3D tensor
* Add the following configurations to stress padding removal:
* size = 1
* size = multiple of processing size
* size = non-multiple of processing size
Partially resolves COMPMID-3865
Change-Id: Iee0de4c9e72b3413c0807e2c86bc2331911a4c6f
Signed-off-by: SiCong Li <sicong.li@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4393
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
diff --git a/tests/datasets/RandomBatchNormalizationLayerDataset.h b/tests/datasets/RandomBatchNormalizationLayerDataset.h
index 5a49dd7..4ccb2ea 100644
--- a/tests/datasets/RandomBatchNormalizationLayerDataset.h
+++ b/tests/datasets/RandomBatchNormalizationLayerDataset.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017-2019 Arm Limited.
+ * Copyright (c) 2017-2021 Arm Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -42,9 +42,9 @@
public:
SmallRandomBatchNormalizationLayerDataset()
{
- add_config(TensorShape(15U, 16U, 2U, 12U), TensorShape(2U), 0.1f);
+ add_config(TensorShape(1U, 16U, 2U, 12U), TensorShape(2U), 0.1f);
add_config(TensorShape(21U, 11U, 12U, 7U), TensorShape(12U), 0.1f);
- add_config(TensorShape(7U, 3U, 6U, 11U), TensorShape(6U), 0.1f);
+ add_config(TensorShape(32U, 3U, 6U, 11U), TensorShape(6U), 0.1f);
}
};
class LargeRandomBatchNormalizationLayerDataset final : public BatchNormalizationLayerDataset
diff --git a/tests/datasets/ShapeDatasets.h b/tests/datasets/ShapeDatasets.h
index a7f1a44..558b37a 100644
--- a/tests/datasets/ShapeDatasets.h
+++ b/tests/datasets/ShapeDatasets.h
@@ -839,7 +839,7 @@
SoftmaxLayerSmallShapes()
: ShapeDataset("Shape",
{
- TensorShape{ 9U, 9U },
+ TensorShape{ 1U, 9U },
TensorShape{ 256U, 10U },
TensorShape{ 353U, 8U },
TensorShape{ 781U, 5U },
diff --git a/tests/validation/CL/DepthwiseConvolutionLayerNative.cpp b/tests/validation/CL/DepthwiseConvolutionLayerNative.cpp
index 6b917d8..f640ee2 100644
--- a/tests/validation/CL/DepthwiseConvolutionLayerNative.cpp
+++ b/tests/validation/CL/DepthwiseConvolutionLayerNative.cpp
@@ -30,7 +30,6 @@
#include "tests/CL/CLAccessor.h"
#include "tests/CL/Helper.h"
#include "tests/PaddingCalculator.h"
-#include "tests/datasets/ShapeDatasets.h"
#include "tests/framework/Asserts.h"
#include "tests/framework/Macros.h"
#include "tests/framework/datasets/Datasets.h"
diff --git a/tests/validation/Validation.h b/tests/validation/Validation.h
index c2df1c3..a75562b 100644
--- a/tests/validation/Validation.h
+++ b/tests/validation/Validation.h
@@ -157,11 +157,15 @@
}
else
{
- // In case a 2D shape becomes 3D after permutation, the permuted tensor will have one dimension more and the first value will be 1
- if((dimensions1.num_dimensions() != dimensions2.num_dimensions()) && ((dimensions1.num_dimensions() != (dimensions2.num_dimensions() + 1)) || (dimensions1.x() != 1)))
+ // In case a 1D/2D shape becomes 3D after permutation, the permuted tensor will have two/one dimension(s) more and the first (two) value(s) will be 1
+ // clang-format off
+ if((dimensions1.num_dimensions() != dimensions2.num_dimensions()) &&
+ ((dimensions1.num_dimensions() != (dimensions2.num_dimensions() + 1)) || (dimensions1.x() != 1)) &&
+ ((dimensions1.num_dimensions() != (dimensions2.num_dimensions() + 2)) || (dimensions1.x() != 1) || (dimensions1.y() != 1)))
{
return false;
}
+ // clang-format on
if((dimensions1[0] != dimensions2[2]) || (dimensions1[1] != dimensions2[0]) || (dimensions1[2] != dimensions2[1]))
{