aboutsummaryrefslogtreecommitdiff
path: root/arm_compute/core/utils/misc/ShapeCalculator.h
diff options
context:
space:
mode:
authorSang-Hoon Park <sang-hoon.park@arm.com>2019-10-15 16:49:24 +0100
committerSang-Hoon Park <sang-hoon.park@arm.com>2019-10-30 14:49:34 +0000
commit2697fd8fa42425f7bfdd60dd486d4c2132b06523 (patch)
tree098450f7f60211c7e5bfbd41eb1a7a10c1c0437f /arm_compute/core/utils/misc/ShapeCalculator.h
parentdf4cf57c7394265b27d051cb1cf0152c53659126 (diff)
downloadComputeLibrary-2697fd8fa42425f7bfdd60dd486d4c2132b06523.tar.gz
COMPMID-2707: add keep_dims parameter to Reduction Operation
The added parameter is used to decide whether or not to keep the target dimension of reduction operation. ArgMinMax operations will always remove the reduced dimension. Following things are updated to support the parameter. - [CL/NEON] functions and reference kernel - [CL/NEON] ArgMinMax function to use ReductionOperation function - [CL/NEON] validation test suite for Reduction and ArgMinMax operations to validate the added parameter - ReductionOperationFixture is modified NOT to pre-populate output tensor and now relies on underlying kernel/function. - Adjust CL validation test suite for Reduction operation to remove excessive test cases with axis values beyond input tensor's dimension. Change-Id: I3e24d276ed469a4201f323001708f0c525f11c4f Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com> Reviewed-on: https://review.mlplatform.org/c/2167 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Diffstat (limited to 'arm_compute/core/utils/misc/ShapeCalculator.h')
-rw-r--r--arm_compute/core/utils/misc/ShapeCalculator.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/arm_compute/core/utils/misc/ShapeCalculator.h b/arm_compute/core/utils/misc/ShapeCalculator.h
index c4c360842f..080d63f60d 100644
--- a/arm_compute/core/utils/misc/ShapeCalculator.h
+++ b/arm_compute/core/utils/misc/ShapeCalculator.h
@@ -1179,15 +1179,24 @@ inline TensorShape compute_tiled_shape(const TensorShape &input_shape, const Mul
/** Calculate the reduced shape of a tensor given an axis
*
- * @param[in] input Input tensor info
- * @param[in] axis Axis on which to perform reduction
+ * @param[in] input Input tensor info
+ * @param[in] axis Axis on which to perform reduction
+ * @param[in] keep_dims (Optional) Whether to keep the dimension after reduction operation. Defaults to true.
*
* @return the calculated shape
*/
-inline TensorShape compute_reduced_shape(const TensorShape &input, unsigned int axis)
+inline TensorShape compute_reduced_shape(const TensorShape &input, unsigned int axis, bool keep_dims = true)
{
TensorShape output_shape{ input };
- output_shape.set(axis, 1);
+
+ if(!keep_dims)
+ {
+ output_shape.remove_dimension(axis);
+ }
+ else
+ {
+ output_shape.set(axis, 1);
+ }
return output_shape;
}