aboutsummaryrefslogtreecommitdiff
path: root/tests/validation/NEON/PoolingLayer.cpp
diff options
context:
space:
mode:
authorMichele Di Giorgio <michele.digiorgio@arm.com>2017-06-19 15:19:29 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-09-17 14:14:20 +0100
commit8af2dd6eb230f2205070dce50c2a22bdf2d55e46 (patch)
treeb0d523617ae866495bc19c5ef3a41b5545eada76 /tests/validation/NEON/PoolingLayer.cpp
parentc6cb35a1935cde168f4b72d8782c21a344e78623 (diff)
downloadComputeLibrary-8af2dd6eb230f2205070dce50c2a22bdf2d55e46.tar.gz
COMPMID-403: Add 7x7 NEON Pooling support.
Change-Id: I2f1e808884f215b9cf79e1f2015ef901e66b3e5f Reviewed-on: http://mpd-gerrit.cambridge.arm.com/78146 Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com> Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Diffstat (limited to 'tests/validation/NEON/PoolingLayer.cpp')
-rw-r--r--tests/validation/NEON/PoolingLayer.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/validation/NEON/PoolingLayer.cpp b/tests/validation/NEON/PoolingLayer.cpp
index 10b9a5250e..489c5b668b 100644
--- a/tests/validation/NEON/PoolingLayer.cpp
+++ b/tests/validation/NEON/PoolingLayer.cpp
@@ -92,6 +92,20 @@ Tensor compute_pooling_layer(const TensorShape &shape_in, const TensorShape &sha
return dst;
}
+
+TensorShape get_output_shape(TensorShape in_shape, const PoolingLayerInfo &pool_info)
+{
+ TensorShape out_shape(in_shape);
+ const std::pair<unsigned int, unsigned int> scaled_dims = arm_compute::scaled_dimensions(in_shape.x(),
+ in_shape.y(),
+ pool_info.pool_size(),
+ pool_info.pad_stride_info().stride().first, pool_info.pad_stride_info().stride().second,
+ pool_info.pad_stride_info().pad().first, pool_info.pad_stride_info().pad().second,
+ pool_info.pad_stride_info().round());
+ out_shape.set(0, scaled_dims.first);
+ out_shape.set(1, scaled_dims.second);
+ return out_shape;
+}
} // namespace
#ifndef DOXYGEN_SKIP_THIS
@@ -113,6 +127,23 @@ BOOST_DATA_TEST_CASE(RandomDataset,
// Validate output
validate(NEAccessor(dst), ref_dst, tolerance_f, 0);
}
+
+BOOST_DATA_TEST_CASE(RunSmall7x7,
+ SmallShapes() * CNNFloatDataTypes() * PoolingTypes() * boost::unit_test::data::make({ 2, 3, 7 }) * boost::unit_test::data::make({ 1, 2 }) * boost::unit_test::data::make({ 0, 1 }),
+ src_shape, dt, pool_type, pool_size, pool_stride, pool_pad)
+{
+ PoolingLayerInfo pool_info(pool_type, pool_size, PadStrideInfo(pool_stride, pool_stride, pool_pad, pool_pad, DimensionRoundingType::CEIL));
+ TensorShape dst_shape = get_output_shape(src_shape, pool_info);
+
+ // Compute function
+ Tensor dst = compute_pooling_layer(src_shape, dst_shape, dt, pool_info);
+
+ // Compute reference
+ RawTensor ref_dst = Reference::compute_reference_pooling_layer(src_shape, dst_shape, dt, pool_info);
+
+ // Validate output
+ validate(NEAccessor(dst), ref_dst, tolerance_f, 0);
+}
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE(Quantized)