From aeebe4ad332bc6dd4797243b39ec6000975429c5 Mon Sep 17 00:00:00 2001 From: Michalis Spyrou Date: Wed, 9 Jan 2019 14:21:03 +0000 Subject: COMPMID-1652 NEON Cleanup and add missing tests Change-Id: I7b351f18a78ed8a250bf3a91ef320db61984146a Reviewed-on: https://review.mlplatform.org/485 Reviewed-by: Isabella Gottardi Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio --- .../kernels/NEFuseBatchNormalizationKernel.cpp | 7 +- tests/benchmark/CL/BatchNormalizationLayer.cpp | 66 ++--- tests/datasets/DepthwiseConvolutionLayerDataset.h | 63 +++-- tests/datasets/ImageFileDatasets.h | 4 +- .../RandomBatchNormalizationLayerDataset.h | 15 +- tests/validation/CL/BatchNormalizationLayer.cpp | 8 +- .../GLES_COMPUTE/BatchNormalizationLayer.cpp | 28 +- tests/validation/NEON/AbsoluteDifference.cpp | 12 +- tests/validation/NEON/Accumulate.cpp | 16 +- tests/validation/NEON/ActivationLayer.cpp | 16 +- tests/validation/NEON/BatchNormalizationLayer.cpp | 85 +++++- tests/validation/NEON/ChannelCombine.cpp | 16 +- tests/validation/NEON/ChannelExtract.cpp | 14 +- tests/validation/NEON/ChannelShuffle.cpp | 29 +- tests/validation/NEON/ColorConvert.cpp | 24 +- .../NEON/ConvertFullyConnectedWeights.cpp | 46 +++- tests/validation/NEON/Convolution.cpp | 306 ++++++--------------- tests/validation/NEON/ConvolutionLayer.cpp | 80 +++--- tests/validation/NEON/DepthConvertLayer.cpp | 118 +++++--- .../validation/NEON/DepthwiseConvolutionLayer.cpp | 72 +++-- tests/validation/NEON/DequantizationLayer.cpp | 42 ++- tests/validation/NEON/Derivative.cpp | 6 +- tests/validation/NEON/Dilate.cpp | 6 +- tests/validation/NEON/DilatedConvolutionLayer.cpp | 78 +++--- tests/validation/NEON/DirectConvolutionLayer.cpp | 21 +- tests/validation/NEON/Flatten.cpp | 33 ++- tests/validation/NEON/HarrisCorners.cpp | 4 +- tests/validation/NEON/Im2Col.cpp | 41 +-- tests/validation/NEON/PoolingLayer.cpp | 8 +- tests/validation/NEON/QuantizationLayer.cpp | 35 ++- tests/validation/NEON/Scale.cpp | 18 +- tests/validation/NEON/YOLOLayer.cpp | 42 ++- tests/validation/fixtures/ConvolutionFixture.h | 7 +- 33 files changed, 776 insertions(+), 590 deletions(-) diff --git a/src/core/NEON/kernels/NEFuseBatchNormalizationKernel.cpp b/src/core/NEON/kernels/NEFuseBatchNormalizationKernel.cpp index 25a0848977..b2708731d5 100644 --- a/src/core/NEON/kernels/NEFuseBatchNormalizationKernel.cpp +++ b/src/core/NEON/kernels/NEFuseBatchNormalizationKernel.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -14,9 +14,9 @@ * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INNEUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY NEAIM, DAMAGES OR OTHER + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. @@ -48,7 +48,6 @@ Status validate_arguments(const ITensorInfo *conv_weights, const ITensorInfo *bn float epsilon) { ARM_COMPUTE_UNUSED(epsilon); - //ARM_COMPUTE_RETURN_ERROR_ON_F16_UNSUPPORTED(conv_weights); ARM_COMPUTE_RETURN_ERROR_ON_DATA_TYPE_CHANNEL_NOT_IN(conv_weights, 1, DataType::F16, DataType::F32); ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_SHAPES(bn_mean, bn_var); ARM_COMPUTE_RETURN_ERROR_ON_MISMATCHING_DATA_TYPES(conv_weights, bn_mean, bn_var); diff --git a/tests/benchmark/CL/BatchNormalizationLayer.cpp b/tests/benchmark/CL/BatchNormalizationLayer.cpp index 9ae80a8854..6d19030998 100644 --- a/tests/benchmark/CL/BatchNormalizationLayer.cpp +++ b/tests/benchmark/CL/BatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -15,10 +15,10 @@ * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITCLSS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONCLCTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include "arm_compute/core/TensorShape.h" @@ -43,7 +43,13 @@ namespace benchmark { namespace { -const auto data_types = framework::dataset::make("DataType", { DataType::F32 }); +const auto data_types = framework::dataset::make("DataType", { DataType::F32 }); +const auto data_layouts = framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }); +const auto data_act = framework::dataset::make("ActivationInfo", ActivationLayerInfo()); +const auto data_GB = combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true })); +const auto batch_one = combine(combine(data_types, data_layouts), framework::dataset::make("Batches", 1)); +const auto batch_four_eight = combine(combine(data_types, data_layouts), framework::dataset::make("Batches", { 4, 8 })); } // namespace using CLBatchNormalizationLayerFixture = BatchNormalizationLayerFixture; @@ -51,60 +57,28 @@ using CLBatchNormalizationLayerFixture = BatchNormalizationLayerFixture using CLBatchNormalizationLayerFixture = BatchNormalizationLayerValidationFixture; -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), +DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), combine(framework::dataset::make("UseBeta", { false, true }), framework::dataset::make("UseGamma", { false, true }))), framework::dataset::make("DataType", { DataType::F16, DataType::F32 })), @@ -152,7 +152,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( TEST_SUITE(Float) TEST_SUITE(FP32) -FIXTURE_DATA_TEST_CASE(Random, CLBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), +FIXTURE_DATA_TEST_CASE(Random, CLBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), combine(framework::dataset::make("UseBeta", { false, true }), framework::dataset::make("UseGamma", { false, true }))), act_infos), @@ -165,7 +165,7 @@ FIXTURE_DATA_TEST_CASE(Random, CLBatchNormalizationLayerFixture, framewor TEST_SUITE_END() //FP32 TEST_SUITE(FP16) -FIXTURE_DATA_TEST_CASE(Random, CLBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), +FIXTURE_DATA_TEST_CASE(Random, CLBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), combine(framework::dataset::make("UseBeta", { false, true }), framework::dataset::make("UseGamma", { false, true }))), framework::dataset::make("ActivationInfo", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f))), diff --git a/tests/validation/GLES_COMPUTE/BatchNormalizationLayer.cpp b/tests/validation/GLES_COMPUTE/BatchNormalizationLayer.cpp index 3a3d1d796d..d08459d20d 100644 --- a/tests/validation/GLES_COMPUTE/BatchNormalizationLayer.cpp +++ b/tests/validation/GLES_COMPUTE/BatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -52,6 +52,13 @@ const auto act_infos = framework::dataset::make("Activat ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 6.f), ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 8.f, 2.f), }); + +const auto data_GB = combine(framework::dataset::make("UseGamma", { false, true }), + framework::dataset::make("UseBeta", { false, true })); +const auto data_f16 = combine(combine(combine(data_GB, act_infos), framework::dataset::make("DataType", DataType::F16)), + framework::dataset::make("DataLayout", { DataLayout::NCHW })); +const auto data_f32 = combine(combine(combine(data_GB, act_infos), framework::dataset::make("DataType", DataType::F32)), + framework::dataset::make("DataLayout", { DataLayout::NCHW })); } // namespace TEST_SUITE(GC) @@ -60,9 +67,8 @@ TEST_SUITE(BatchNormalizationLayer) template using GCBatchNormalizationLayerFixture = BatchNormalizationLayerValidationFixture; -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), - combine(framework::dataset::make("UseBeta", { false, true }), - framework::dataset::make("UseGamma", { false, true }))), +DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), + data_GB), framework::dataset::make("DataType", { DataType::F32 })), framework::dataset::make("DataLayout", { DataLayout::NCHW })), shape0, shape1, epsilon, use_beta, use_gamma, dt, data_layout) @@ -94,12 +100,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combi TEST_SUITE(Float) TEST_SUITE(FP16) -FIXTURE_DATA_TEST_CASE(Random, GCBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), - combine(framework::dataset::make("UseBeta", { false, true }), - framework::dataset::make("UseGamma", { false, true }))), - act_infos), - framework::dataset::make("DataType", DataType::F16)), - framework::dataset::make("DataLayout", { DataLayout::NCHW }))) +FIXTURE_DATA_TEST_CASE(Random, GCBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::SmallRandomBatchNormalizationLayerDataset(), data_f16)) { // Validate output validate(GCAccessor(_target), _reference, tolerance_f16, 0); @@ -107,12 +108,7 @@ FIXTURE_DATA_TEST_CASE(Random, GCBatchNormalizationLayerFixture, framework TEST_SUITE_END() TEST_SUITE(FP32) -FIXTURE_DATA_TEST_CASE(Random, GCBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), - combine(framework::dataset::make("UseBeta", { false, true }), - framework::dataset::make("UseGamma", { false, true }))), - act_infos), - framework::dataset::make("DataType", DataType::F32)), - framework::dataset::make("DataLayout", { DataLayout::NCHW }))) +FIXTURE_DATA_TEST_CASE(Random, GCBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::LargeRandomBatchNormalizationLayerDataset(), data_f32)) { // Validate output validate(GCAccessor(_target), _reference, tolerance_f, 0); diff --git a/tests/validation/NEON/AbsoluteDifference.cpp b/tests/validation/NEON/AbsoluteDifference.cpp index 74c5701a76..98aab71148 100644 --- a/tests/validation/NEON/AbsoluteDifference.cpp +++ b/tests/validation/NEON/AbsoluteDifference.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -18,7 +18,7 @@ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONCLCTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include "arm_compute/core/Types.h" @@ -90,7 +90,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEAbsoluteDifferenceFixture, framework // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), AbsoluteDifferenceS16Dataset), @@ -127,10 +127,10 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEAbsoluteDifferenceFixture, framework // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // S16 -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // AbsoluteDifference +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/Accumulate.cpp b/tests/validation/NEON/Accumulate.cpp index cb6894a586..0610c8afba 100644 --- a/tests/validation/NEON/Accumulate.cpp +++ b/tests/validation/NEON/Accumulate.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -88,8 +88,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEAccumulateFixture, framework::Datase validate(Accessor(_target), _reference, tolerance); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // U8 +TEST_SUITE_END() // Accumulate TEST_SUITE(AccumulateWeighted) @@ -134,8 +134,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEAccumulateWeightedFixture, framework validate(Accessor(_target), _reference, tolerance); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // U8 +TEST_SUITE_END() // AccumulateWeighted TEST_SUITE(AccumulateSquared) @@ -180,10 +180,10 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEAccumulateSquaredFixture, framework: validate(Accessor(_target), _reference, tolerance); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // U8 +TEST_SUITE_END() // AccumulateSquared -TEST_SUITE_END() +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/ActivationLayer.cpp b/tests/validation/NEON/ActivationLayer.cpp index 5b16b0621c..cd35504465 100644 --- a/tests/validation/NEON/ActivationLayer.cpp +++ b/tests/validation/NEON/ActivationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -65,7 +65,6 @@ RelativeTolerance relative_tolerance(DataType data_type, ActivationLayerI default: return RelativeTolerance(0.05f); } - break; default: return RelativeTolerance(0.f); } @@ -93,7 +92,6 @@ AbsoluteTolerance absolute_tolerance(DataType data_type, ActivationLayerI default: return AbsoluteTolerance(0.00001f); } - break; default: return AbsoluteTolerance(0.f); } @@ -217,8 +215,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEActivationLayerFixture, framework::Dat // Validate output validate(Accessor(_target), _reference, relative_tolerance(_data_type, _function), 0.f, absolute_tolerance(_data_type, _function)); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // FP32 +TEST_SUITE_END() // Float template using NEActivationLayerQuantizedFixture = ActivationValidationQuantizedFixture; @@ -249,11 +247,11 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEActivationLayerQuantizedFixture, fra // Validate output validate(Accessor(_target), _reference, relative_tolerance(_data_type, _function), 0.f, absolute_tolerance(_data_type, _function)); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // QASYMM8 +TEST_SUITE_END() // Quantized -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // ActivationLayer +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/BatchNormalizationLayer.cpp b/tests/validation/NEON/BatchNormalizationLayer.cpp index 155f6c336e..58b7474b41 100644 --- a/tests/validation/NEON/BatchNormalizationLayer.cpp +++ b/tests/validation/NEON/BatchNormalizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -71,7 +71,7 @@ TEST_SUITE(BatchNormalizationLayer) template using NEBatchNormalizationLayerFixture = BatchNormalizationLayerValidationFixture; -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), +DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), combine(framework::dataset::make("UseBeta", { false, true }), framework::dataset::make("UseGamma", { false, true }))), framework::dataset::make("DataType", { DataType::F32 })), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })), @@ -151,26 +151,47 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( TEST_SUITE(Float) TEST_SUITE(FP32) -FIXTURE_DATA_TEST_CASE(Random, NEBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), - combine(framework::dataset::make("UseBeta", { false, true }), - framework::dataset::make("UseGamma", { false, true }))), - act_infos), - framework::dataset::make("DataType", DataType::F32)), - framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +FIXTURE_DATA_TEST_CASE(RandomSmall, NEBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseBeta", { false, true }), + framework::dataset::make("UseGamma", { false, true }))), + act_infos), + framework::dataset::make("DataType", DataType::F32)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) { // Validate output validate(Accessor(_target), _reference, abs_tolerance_f32, 0); } -TEST_SUITE_END() +FIXTURE_DATA_TEST_CASE(RandomLarge, NEBatchNormalizationLayerFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(datasets::LargeRandomBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseBeta", { false, true }), + framework::dataset::make("UseGamma", { false, true }))), + act_infos), + framework::dataset::make("DataType", DataType::F32)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +{ + // Validate output + validate(Accessor(_target), _reference, abs_tolerance_f32, 0); +} +TEST_SUITE_END() // F32 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(FP16) -FIXTURE_DATA_TEST_CASE(Random, NEBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::RandomBatchNormalizationLayerDataset(), - combine(framework::dataset::make("UseBeta", { false, true }), - framework::dataset::make("UseGamma", { false, true }))), - framework::dataset::make("ActivationInfo", ActivationLayerInfo())), - framework::dataset::make("DataType", DataType::F16)), - framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +FIXTURE_DATA_TEST_CASE(RandomSmall, NEBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallRandomBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseBeta", { false, true }), + framework::dataset::make("UseGamma", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + framework::dataset::make("DataType", DataType::F16)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +{ + // Validate output + validate(Accessor(_target), _reference, tolerance_f16, 0); +} + +FIXTURE_DATA_TEST_CASE(RandomLarge, NEBatchNormalizationLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::LargeRandomBatchNormalizationLayerDataset(), + combine(framework::dataset::make("UseBeta", { false, true }), + framework::dataset::make("UseGamma", { false, true }))), + framework::dataset::make("ActivationInfo", ActivationLayerInfo())), + framework::dataset::make("DataType", DataType::F16)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) { // Validate output validate(Accessor(_target), _reference, tolerance_f16, 0); @@ -185,6 +206,40 @@ TEST_SUITE(BatchNormalizationLayerFusion) template using NEBatchNormalizationLayerFusionFixture = BatchNormalizationLayerFusionValidationFixture; +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip( + framework::dataset::make("Weights", { TensorInfo(TensorShape(32U, 13U, 2U, 2U), 1, DataType::F32), // Valid + TensorInfo(TensorShape(32U, 13U, 2U, 2U), 1, DataType::F32), // Mismatching data types + TensorInfo(TensorShape(32U, 13U, 2U, 2U), 1, DataType::F16), // Mismatching data types + TensorInfo(TensorShape(32U, 13U, 2U, 1U), 1, DataType::F32), // Invalid mean/var/beta/gamma shape + }), + framework::dataset::make("MVBGInfo",{ TensorInfo(TensorShape(2U), 1, DataType::F32), + TensorInfo(TensorShape(2U), 1, DataType::F16), + TensorInfo(TensorShape(2U), 1, DataType::F32), + TensorInfo(TensorShape(5U), 1, DataType::F32), + })), + framework::dataset::make("Expected", { true, false, false, false})), + weights_info, mvbg_info, expected) +{ + const auto &weights_in_info = weights_info; + const auto &mean_info = mvbg_info; + const auto &var_info = mvbg_info; + const auto &fused_weights_info = weights_info; + const auto &fused_bias_info = mvbg_info; + const auto &conv_bias_info = mvbg_info; + const auto &beta_info = mvbg_info; + const auto &gamma_info = mvbg_info; + bool has_error = bool(NEFuseBatchNormalization::validate( + &weights_in_info.clone()->set_is_resizable(false), &mean_info.clone()->set_is_resizable(false), + &var_info.clone()->set_is_resizable(false), &fused_weights_info.clone()->set_is_resizable(false), + &fused_bias_info.clone()->set_is_resizable(false), &conv_bias_info.clone()->set_is_resizable(false), + &beta_info.clone()->set_is_resizable(false), &gamma_info.clone()->set_is_resizable(false), 1.f)); + ARM_COMPUTE_EXPECT(has_error == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + TEST_SUITE(Float) TEST_SUITE(FP32) FIXTURE_DATA_TEST_CASE(RunSmall, NEBatchNormalizationLayerFusionFixture, framework::DatasetMode::PRECOMMIT, diff --git a/tests/validation/NEON/ChannelCombine.cpp b/tests/validation/NEON/ChannelCombine.cpp index 3dbc64dbd2..ee449da8fa 100644 --- a/tests/validation/NEON/ChannelCombine.cpp +++ b/tests/validation/NEON/ChannelCombine.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -18,7 +18,7 @@ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONCLCTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include "arm_compute/core/Types.h" @@ -90,7 +90,7 @@ DATA_TEST_CASE(YUVPlanar, framework::DatasetMode::ALL, combine(concat(datasets:: { validate_configuration(shape, format); } -TEST_SUITE_END() +TEST_SUITE_END() // Configuration template using NEChannelCombineFixture = ChannelCombineValidationFixture; @@ -112,7 +112,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEChannelCombineFixture, framework::Da validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // RGBA TEST_SUITE(YUV) FIXTURE_DATA_TEST_CASE(RunSmall, NEChannelCombineFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), framework::dataset::make("FormatType", { Format::YUYV422, Format::UYVY422 }))) @@ -131,7 +131,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEChannelCombineFixture, framework::Da validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // YUV TEST_SUITE(YUVPlanar) FIXTURE_DATA_TEST_CASE(RunSmall, NEChannelCombineFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), framework::dataset::make("FormatType", { Format::NV12, Format::NV21, Format::IYUV, Format::YUV444 }))) @@ -150,10 +150,10 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEChannelCombineFixture, framework::Da validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // YUVPlanar -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // ChannelCombine +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/ChannelExtract.cpp b/tests/validation/NEON/ChannelExtract.cpp index 4d8599a21d..858cb4eda6 100644 --- a/tests/validation/NEON/ChannelExtract.cpp +++ b/tests/validation/NEON/ChannelExtract.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -104,7 +104,7 @@ DATA_TEST_CASE(YUVPlanar, framework::DatasetMode::ALL, combine(concat(datasets:: { validate_configuration(shape, format, channel); } -TEST_SUITE_END() +TEST_SUITE_END() // Configuration TEST_SUITE(RGBA) FIXTURE_DATA_TEST_CASE(RunSmall, NEChannelExtractFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ChannelExtractRGBADataset)) @@ -117,7 +117,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEChannelExtractFixture, framework::Da // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // RGBA TEST_SUITE(YUV) FIXTURE_DATA_TEST_CASE(RunSmall, NEChannelExtractFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ChannelExtractYUVDataset)) @@ -130,7 +130,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEChannelExtractFixture, framework::Da // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // YUV TEST_SUITE(YUVPlanar) FIXTURE_DATA_TEST_CASE(RunSmall, NEChannelExtractFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ChannelExtractYUVPlanarDataset)) @@ -143,10 +143,10 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEChannelExtractFixture, framework::Da // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // YUVPlanar -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // ChannelExtract +TEST_SUITE_END() // NEON } // namespace validation } // namespace test diff --git a/tests/validation/NEON/ChannelShuffle.cpp b/tests/validation/NEON/ChannelShuffle.cpp index 474fb49d29..ec84183f09 100644 --- a/tests/validation/NEON/ChannelShuffle.cpp +++ b/tests/validation/NEON/ChannelShuffle.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -43,6 +43,33 @@ namespace validation TEST_SUITE(NEON) TEST_SUITE(ChannelShuffle) +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), // Invalid num groups + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::U8), // Mismatching data_type + TensorInfo(TensorShape(4U, 5U, 4U), 1, DataType::F32), // Mismatching shapes + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), // Num groups == channels + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), // (channels % num_groups) != 0 + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), // Valid + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), + })), + framework::dataset::make("NumGroups",{ 1, 2, 2, 4, 3, 2, + })), + framework::dataset::make("Expected", { false, false, false, false, false, true})), + input_info, output_info, num_groups, expected) +{ + ARM_COMPUTE_EXPECT(bool(NEChannelShuffleLayer::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), num_groups)) == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(datasets::SmallRandomChannelShuffleLayerDataset(), diff --git a/tests/validation/NEON/ColorConvert.cpp b/tests/validation/NEON/ColorConvert.cpp index ecd95f23e0..2fdcdafd5f 100644 --- a/tests/validation/NEON/ColorConvert.cpp +++ b/tests/validation/NEON/ColorConvert.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -181,7 +181,7 @@ DATA_TEST_CASE(NVtoYUV, framework::DatasetMode::ALL, combine(concat(datasets::Sm { validate_configuration(shape, src_format, dst_format); } -TEST_SUITE_END() +TEST_SUITE_END() // Configuration TEST_SUITE(RGBA) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_RGBA_to_RGB)) @@ -201,7 +201,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // RGBA TEST_SUITE(RGB) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_RGB_to_RGBA)) @@ -220,7 +220,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // RGB TEST_SUITE(RGBtoU8) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_RGB_to_U8)) @@ -239,7 +239,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // RGBtoU8 TEST_SUITE(YUV) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_YUYVDataset_to_RGBDataset)) @@ -258,7 +258,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // YUV TEST_SUITE(YUVPlanar) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_YUVPlanar_to_RGBDataset)) @@ -277,7 +277,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // YUVPlanar TEST_SUITE(NV) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_RGBDataset_to_NVDataset)) @@ -297,7 +297,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx], tolerance_nv); } } -TEST_SUITE_END() +TEST_SUITE_END() // NV TEST_SUITE(YUYVtoNV) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_YUYVDataset_to_NVDataset)) @@ -317,7 +317,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // YUYVtoNV TEST_SUITE(NVtoYUV) FIXTURE_DATA_TEST_CASE(RunSmall, NEColorConvertFixture, framework::DatasetMode::PRECOMMIT, combine(datasets::Small2DShapes(), ColorConvert_NVDataset_to_YUVDataset)) @@ -336,10 +336,10 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEColorConvertFixture, framework::Data validate(Accessor(*_target.plane(plane_idx)), _reference[plane_idx]); } } -TEST_SUITE_END() +TEST_SUITE_END() // NVtoYUV -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // ColorConvert +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/ConvertFullyConnectedWeights.cpp b/tests/validation/NEON/ConvertFullyConnectedWeights.cpp index dbb81d6902..90509847ac 100644 --- a/tests/validation/NEON/ConvertFullyConnectedWeights.cpp +++ b/tests/validation/NEON/ConvertFullyConnectedWeights.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -47,6 +47,38 @@ auto params = combine(framework::dataset::make("WeightsWidth", { 16, 32, 64 }), TEST_SUITE(NEON) TEST_SUITE(ConvertFullyConnectedWeights) +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(27U, 42U), 1, DataType::F32), // Mismatching data types + TensorInfo(TensorShape(32U, 42U), 1, DataType::F32), // Valid + TensorInfo(TensorShape(27U, 42U), 1, DataType::F32), // Mismatching shapes + TensorInfo(TensorShape(27U, 42U), 1, DataType::F32), // Wrong DataLayout + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(27U, 42U), 1, DataType::F16), + TensorInfo(TensorShape(32U, 42U), 1, DataType::F32), + TensorInfo(TensorShape(32U, 42U), 1, DataType::F32), + TensorInfo(TensorShape(32U, 42U), 1, DataType::F32), + })), + framework::dataset::make("OriginalInput", { TensorShape(7U, 3U, 2U), + TensorShape(7U, 3U, 2U), + TensorShape(7U, 3U, 2U), + TensorShape(7U, 3U, 2U), + })), + framework::dataset::make("DataLayout", { DataLayout::NCHW, + DataLayout::NCHW, + DataLayout::NCHW, + DataLayout::UNKNOWN, + })), + framework::dataset::make("Expected", { false, true, false, false})), + input_info, output_info, original_input_shape, data_layout, expected) +{ + bool is_valid = bool(NEConvertFullyConnectedWeights::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), original_input_shape, data_layout)); + ARM_COMPUTE_EXPECT(is_valid == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + template using NEConvertFullyConnectedWeightsFixture = ConvertFullyConnectedWeightsValidationFixture; @@ -63,7 +95,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEConvertFullyConnectedWeightsFixture, f // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // FP32 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(FP16) @@ -79,8 +111,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEConvertFullyConnectedWeightsFixture, fr // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ +TEST_SUITE_END() // FP16 +#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ TEST_SUITE(QASYMM8) FIXTURE_DATA_TEST_CASE(RunSmall, NEConvertFullyConnectedWeightsFixture, framework::DatasetMode::ALL, combine(datasets::Small3DShapes(), combine(params, framework::dataset::make("DataType", @@ -96,10 +128,10 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEConvertFullyConnectedWeightsFixture, // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // QASYMM8 -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // ConvertFullyConnectedWeights +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/Convolution.cpp b/tests/validation/NEON/Convolution.cpp index 5545b7f574..3a9f29c8d0 100644 --- a/tests/validation/NEON/Convolution.cpp +++ b/tests/validation/NEON/Convolution.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -56,9 +56,9 @@ TEST_SUITE(NEON) TEST_SUITE(CustomConvolution) TEST_SUITE(Square3x3) -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 3 })), +DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), + datasets::BorderModes()), + framework::dataset::make("filter_size", { 3 })), shape, output_data_type, border_mode, filter_size) { // Create tensors @@ -99,50 +99,34 @@ template using NEConvolutionFixture = ConvolutionSquareValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 3 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 3 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 3 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 3 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Square3x3 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Square3x3 TEST_SUITE(Square5x5) -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 5 })), +DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), + datasets::BorderModes()), + framework::dataset::make("filter_size", { 5 })), shape, output_data_type, border_mode, filter_size) { // Create tensors @@ -183,50 +167,34 @@ template using NEConvolutionFixture = ConvolutionSquareValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 5 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 5 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 5 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 5 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Square5x5 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Square5x5 TEST_SUITE(Square7x7) -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 7 })), +DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), + datasets::BorderModes()), + framework::dataset::make("filter_size", { 7 })), shape, output_data_type, border_mode, filter_size) { // Create tensors @@ -267,50 +235,34 @@ template using NEConvolutionFixture = ConvolutionSquareValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 7 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 7 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 7 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 7 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Square7x7 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Square7x7 TEST_SUITE(Square9x9) -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 9 })), +DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), + datasets::BorderModes()), + framework::dataset::make("filter_size", { 9 })), shape, output_data_type, border_mode, filter_size) { // Create tensors @@ -351,48 +303,32 @@ template using NEConvolutionFixture = ConvolutionSquareValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 9 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 9 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 9 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 9 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Square9x9 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Square9x9 TEST_SUITE(Rectangle) -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", +DATA_TEST_CASE(Configuration, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", { DataType::U8, DataType::S16 })), datasets::BorderModes()), framework::dataset::make("filter_width", { 3, 5, 7, 9 })), @@ -441,18 +377,9 @@ template using NEConvolutionFixture = ConvolutionRectangleValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_width", { 3, 5, 7, 9 })), - framework::dataset::make("filter_height", { 3, 5, 7, 9 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_width", { 3, 5, 7, 9 })), framework::dataset::make("filter_height", { 3, 5, 7, 9 }))) @@ -460,21 +387,12 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::Datas // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_width", { 3, 5, 7, 9 })), - framework::dataset::make("filter_height", { 3, 5, 7, 9 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_width", { 3, 5, 7, 9 })), framework::dataset::make("filter_height", { 3, 5, 7, 9 }))) @@ -482,146 +400,98 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::Datas // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Rectangle */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Rectangle TEST_SUITE(Separable5x5) template using NEConvolutionFixture = ConvolutionSeparableValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 5 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 5 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 5 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 5 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Separable5x5 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Separable5x5 TEST_SUITE(Separable7x7) template using NEConvolutionFixture = ConvolutionSeparableValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 7 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 7 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 7 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 7 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Separable7x7 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Separable7x7 TEST_SUITE(Separable9x9) template using NEConvolutionFixture = ConvolutionSeparableValidationFixture; TEST_SUITE(U8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::U8)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 9 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::U8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::U8)), datasets::BorderModes()), framework::dataset::make("filter_size", { 9 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEConvolutionFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", - DataType::S16)), - datasets::BorderModes()), - framework::dataset::make("filter_size", { 9 }))) -{ - // Validate output - validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); -} - -FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", - DataType::S16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEConvolutionFixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", + DataType::S16)), datasets::BorderModes()), framework::dataset::make("filter_size", { 9 }))) { // Validate output validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), BorderSize(_height / 2, _width / 2)), tolerance_s16); } -TEST_SUITE_END() -TEST_SUITE_END() /* Separable9x9 */ +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Separable9x9 -TEST_SUITE_END() /* Custom Convolution */ -TEST_SUITE_END() +TEST_SUITE_END() // CustomConvolution +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/ConvolutionLayer.cpp b/tests/validation/NEON/ConvolutionLayer.cpp index d8710ee91b..0c9e1bbaf8 100644 --- a/tests/validation/NEON/ConvolutionLayer.cpp +++ b/tests/validation/NEON/ConvolutionLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -77,34 +77,36 @@ const auto ActivationFunctionsDataset = framework::dataset::make("ActivationInfo } // namespace TEST_SUITE(NEON) - TEST_SUITE(ConvolutionLayer) + +// *INDENT-OFF* +// clang-format off DATA_TEST_CASE(ValidateConvolutionMethod, framework::DatasetMode::ALL, zip(zip(zip(zip(zip( - framework::dataset::make("InputInfo", { TensorInfo(TensorShape(18U, 18U, 32U), 1, DataType::F32), - TensorInfo(TensorShape(23U, 27U, 32U, 4U), 1, DataType::F32), - TensorInfo(TensorShape(3U, 3U, 2U, 1U), 1, DataType::F32), - TensorInfo(TensorShape(33U, 27U, 7U, 4U), 1, DataType::F32) - }), - framework::dataset::make("WeightsInfo", { TensorInfo(TensorShape(3U, 3U, 32U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(5U, 5U, 32U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(5U, 5U, 7U, 16U), 1, DataType::F16) - })), - framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(16U, 16U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(19U, 23U, 21U, 4U), 1, DataType::F32), - TensorInfo(TensorShape(11U, 25U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(11U, 12U, 16U, 4U), 1, DataType::F32) - })), - framework::dataset::make("ConvInfo", { PadStrideInfo(1, 1, 0, 0), - PadStrideInfo(1, 1, 0, 0), - PadStrideInfo(2, 1, 0, 0), - PadStrideInfo(3, 2, 1, 0) - })), - framework::dataset::make("FastMath", { true, - true, - false, - false - })), + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(18U, 18U, 32U), 1, DataType::F32), + TensorInfo(TensorShape(23U, 27U, 32U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(3U, 3U, 2U, 1U), 1, DataType::F32), + TensorInfo(TensorShape(33U, 27U, 7U, 4U), 1, DataType::F32) + }), + framework::dataset::make("WeightsInfo", { TensorInfo(TensorShape(3U, 3U, 32U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(5U, 5U, 32U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(5U, 5U, 7U, 16U), 1, DataType::F16) + })), + framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(16U, 16U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(19U, 23U, 21U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(11U, 25U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(11U, 12U, 16U, 4U), 1, DataType::F32) + })), + framework::dataset::make("ConvInfo", { PadStrideInfo(1, 1, 0, 0), + PadStrideInfo(1, 1, 0, 0), + PadStrideInfo(2, 1, 0, 0), + PadStrideInfo(3, 2, 1, 0) + })), + framework::dataset::make("FastMath", { true, + true, + false, + false + })), framework::dataset::make("Expected", { ConvolutionMethod::WINOGRAD, ConvolutionMethod::WINOGRAD, ConvolutionMethod::GEMM, ConvolutionMethod::GEMM })), input_info, weights_info, output_info, conv_info, fast_math, expected) { @@ -113,7 +115,9 @@ DATA_TEST_CASE(ValidateConvolutionMethod, framework::DatasetMode::ALL, zip(zip(z &output_info.clone()->set_is_resizable(true), conv_info, WeightsInfo(), Size2D(1U, 1U), ActivationLayerInfo(), fast_math); ARM_COMPUTE_EXPECT(is_valid == expected, framework::LogLevel::ERRORS); } -TEST_SUITE_END() +// clang-format on +// *INDENT-ON* +TEST_SUITE_END() // ConvolutionLayer TEST_SUITE(WinogradLayer) template @@ -316,8 +320,8 @@ FIXTURE_DATA_TEST_CASE(RunSmallNoBias, NEWinogradConvolutionLayerNoBiasFixture, framework: // Validate output validate(Accessor(_target), _reference, rel_tolerance_f16, tolerance_num, abs_tolerance_f16); } -TEST_SUITE_END() -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ +TEST_SUITE_END() // FP16 +#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ TEST_SUITE(FP32) FIXTURE_DATA_TEST_CASE(RunSmall, NEGEMMConvolutionLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallConvolutionLayerDataset(), @@ -412,8 +416,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEGEMMConvolutionLayerFixture, framework // Validate output validate(Accessor(_target), _reference, rel_tolerance_f32, 0.f, float(abs_tolerance_f32)); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // FP32 +TEST_SUITE_END() // Float template using NEGEMMConvolutionLayerQuantizedFixture = ConvolutionValidationQuantizedFixture; @@ -446,11 +450,11 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEGEMMConvolutionLayerQuantizedFixture // Validate output validate(Accessor(_target), _reference, tolerance_qasymm8); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // QASYMM8 +TEST_SUITE_END() // Quantized -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // GEMMConvolutionLayer +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/DepthConvertLayer.cpp b/tests/validation/NEON/DepthConvertLayer.cpp index 0916f633a3..c85a09dbf2 100644 --- a/tests/validation/NEON/DepthConvertLayer.cpp +++ b/tests/validation/NEON/DepthConvertLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -18,7 +18,7 @@ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONCLCTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include "arm_compute/core/Types.h" @@ -44,27 +44,69 @@ namespace validation namespace { /** Input data sets **/ -const auto DepthConvertLayerQASYMM8toF16Dataset = combine(framework::dataset::make("DataType", DataType::QASYMM8), framework::dataset::make("DataType", DataType::F16)); -const auto DepthConvertLayerQASYMM8toF32Dataset = combine(framework::dataset::make("DataType", DataType::QASYMM8), framework::dataset::make("DataType", DataType::F32)); -const auto DepthConvertLayerU8toU16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::U16)); -const auto DepthConvertLayerU8toS16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S16)); -const auto DepthConvertLayerU8toS32Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S32)); -const auto DepthConvertLayerU16toU8Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U8)); -const auto DepthConvertLayerU16toU32Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U32)); -const auto DepthConvertLayerS16toU8Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::U8)); -const auto DepthConvertLayerS16toS32Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::S32)); -const auto DepthConvertLayerF16toF32Dataset = combine(framework::dataset::make("DataType", DataType::F16), framework::dataset::make("DataType", DataType::F32)); -const auto DepthConvertLayerF32toF16Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::F16)); -const auto DepthConvertLayerF16toQASYMM8Dataset = combine(framework::dataset::make("DataType", DataType::F16), framework::dataset::make("DataType", DataType::QASYMM8)); -const auto DepthConvertLayerF32toQASYMM8Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::QASYMM8)); -const auto DepthConvertLayerShiftDataset = framework::dataset::make("Shift", 0, 7); -const auto DepthConvertLayerZeroShiftDataset = framework::dataset::make("Shift", 0); +const auto DepthConvertLayerQASYMM8toF16Dataset = combine(framework::dataset::make("DataType", DataType::QASYMM8), framework::dataset::make("DataType", DataType::F16)); +const auto DepthConvertLayerQASYMM8toF32Dataset = combine(framework::dataset::make("DataType", DataType::QASYMM8), framework::dataset::make("DataType", DataType::F32)); +const auto DepthConvertLayerU8toU16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::U16)); +const auto DepthConvertLayerU8toS16Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S16)); +const auto DepthConvertLayerU8toS32Dataset = combine(framework::dataset::make("DataType", DataType::U8), framework::dataset::make("DataType", DataType::S32)); +const auto DepthConvertLayerU16toU8Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U8)); +const auto DepthConvertLayerU16toU32Dataset = combine(framework::dataset::make("DataType", DataType::U16), framework::dataset::make("DataType", DataType::U32)); +const auto DepthConvertLayerS16toU8Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::U8)); +const auto DepthConvertLayerS16toS32Dataset = combine(framework::dataset::make("DataType", DataType::S16), framework::dataset::make("DataType", DataType::S32)); +const auto DepthConvertLayerF16toF32Dataset = combine(framework::dataset::make("DataType", DataType::F16), framework::dataset::make("DataType", DataType::F32)); +const auto DepthConvertLayerF32toF16Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::F16)); +const auto DepthConvertLayerF16toQASYMM8Dataset = combine(framework::dataset::make("DataType", DataType::F16), framework::dataset::make("DataType", DataType::QASYMM8)); +const auto DepthConvertLayerF32toQASYMM8Dataset = combine(framework::dataset::make("DataType", DataType::F32), framework::dataset::make("DataType", DataType::QASYMM8)); +const auto DepthConvertLayerShiftDatasetNightly = framework::dataset::make("Shift", 0, 7); +const auto DepthConvertLayerShiftDatasetPrecommit = framework::dataset::make("Shift", { 0, 3, 6 }); +const auto DepthConvertLayerZeroShiftDataset = framework::dataset::make("Shift", 0); constexpr AbsoluteTolerance tolerance_qasymm8(1); } // namespace TEST_SUITE(NEON) TEST_SUITE(DepthConvertLayer) + +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::QASYMM8), // Invalid data type combination + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::U8), // Invalid data type combination + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::U16), // Invalid data type combination + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::S16), // Invalid data type combination + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::F32), // Invalid data type combination + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::F16), // Invalid data type combination + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::U8), // Mismatching shapes + TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::U8), // Invalid shift + TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::U8), // Valid + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::S16), + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::F32), + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::F32), + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::F32), + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::U8), + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::U8), + TensorInfo(TensorShape(32U, 13U, 2U), 1, DataType::U8), + TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::U8), + })), + framework::dataset::make("Policy",{ ConvertPolicy::WRAP, + ConvertPolicy::WRAP, + ConvertPolicy::WRAP, + ConvertPolicy::WRAP, + ConvertPolicy::WRAP, + ConvertPolicy::WRAP, + ConvertPolicy::WRAP, + })), + framework::dataset::make("Shift",{ 1, 1, 1, 1, 1, 1, 8, 1, + })), + framework::dataset::make("Expected", { false, false, false, false, false, false, false, true})), + input_info, output_info, policy, shift, expected) +{ + ARM_COMPUTE_EXPECT(bool(NEDepthConvertLayer::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), policy, shift)) == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + template using NEDepthConvertLayerToU16Fixture = DepthConvertLayerValidationFixture; template @@ -131,7 +173,7 @@ TEST_SUITE_END() // QASYMM8_to_F32 TEST_SUITE(U8_to_U16) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -154,7 +196,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToU16Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerU8toU16Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); @@ -162,7 +204,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToU16Fixture, frame FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToU16Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerU8toU16Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); @@ -171,7 +213,7 @@ TEST_SUITE_END() // U8_to_U16 TEST_SUITE(U8_to_S16) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -194,7 +236,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToS16Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerU8toS16Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); @@ -202,7 +244,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToS16Fixture, frame FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToS16Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerU8toS16Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); @@ -210,7 +252,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToS16Fixture, frame TEST_SUITE_END() // U8_to_S16 TEST_SUITE(U8_to_S32) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -233,7 +275,7 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToS32Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerU8toS32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); @@ -241,7 +283,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToS32Fixture, frame FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToS32Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerU8toS32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); @@ -250,7 +292,7 @@ TEST_SUITE_END() // U8_to_S32 TEST_SUITE(U16_to_U8) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -273,14 +315,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToU8Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerU16toU8Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); } FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToU8Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerU16toU8Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); @@ -289,7 +331,7 @@ TEST_SUITE_END() // U16_to_U8 TEST_SUITE(U16_to_U32) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -312,14 +354,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToU32Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerU16toU32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); } FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToU32Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerU16toU32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); @@ -328,7 +370,7 @@ TEST_SUITE_END() // U16_to_U32 TEST_SUITE(S16_to_U8) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -351,14 +393,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToU8Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerS16toU8Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); } FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToU8Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerS16toU8Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); @@ -367,7 +409,7 @@ TEST_SUITE_END() // S16_to_U8 TEST_SUITE(S16_to_S32) DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(framework::dataset::concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset), + DepthConvertLayerShiftDatasetNightly), shape, policy, shift) { // Create tensors @@ -390,14 +432,14 @@ DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(frame FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthConvertLayerToS32Fixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(datasets::SmallShapes(), DepthConvertLayerS16toS32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetPrecommit)) { // Validate output validate(Accessor(_target), _reference); } FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthConvertLayerToS32Fixture, framework::DatasetMode::NIGHTLY, combine(combine(combine(datasets::LargeShapes(), DepthConvertLayerS16toS32Dataset), framework::dataset::make("ConvertPolicy", { ConvertPolicy::SATURATE, ConvertPolicy::WRAP })), - DepthConvertLayerShiftDataset)) + DepthConvertLayerShiftDatasetNightly)) { // Validate output validate(Accessor(_target), _reference); diff --git a/tests/validation/NEON/DepthwiseConvolutionLayer.cpp b/tests/validation/NEON/DepthwiseConvolutionLayer.cpp index f2b4650527..6c0f590241 100644 --- a/tests/validation/NEON/DepthwiseConvolutionLayer.cpp +++ b/tests/validation/NEON/DepthwiseConvolutionLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -18,7 +18,7 @@ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONCLCTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ #include "arm_compute/core/Types.h" @@ -50,7 +50,7 @@ constexpr AbsoluteTolerance tolerance_qasymm8(1); /**< Tolerance value #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC RelativeTolerance tolerance_f16(half_float::half(0.01)); /**< Tolerance value for comparing reference's output against implementation's output for DataType::F16 */ constexpr float tolerance_num = 0.05f; /**< Tolerance number */ -#endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC +#endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC const auto depth_multipliers = framework::dataset::make("DepthMultiplier", { 1, 2, 3 }); } // namespace @@ -234,11 +234,21 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthwiseConvolutionLayerFixture3x3, f { validate(Accessor(_target), _reference, tolerance_f32); } -FIXTURE_DATA_TEST_CASE(RunOptimized, NEDepthwiseConvolutionLayerFixture3x3, framework::DatasetMode::ALL, combine(combine(combine(datasets::OptimizedDepthwiseConvolutionLayerDataset3x3(), - framework::dataset::make("DepthMultiplier", 1)), - framework::dataset::make("DataType", - DataType::F32)), - framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +FIXTURE_DATA_TEST_CASE(RunOptimizedSmall, NEDepthwiseConvolutionLayerFixture3x3, framework::DatasetMode::PRECOMMIT, + combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(), + framework::dataset::make("DepthMultiplier", 1)), + framework::dataset::make("DataType", + DataType::F32)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +{ + validate(Accessor(_target), _reference, tolerance_f32); +} +FIXTURE_DATA_TEST_CASE(RunOptimizedLarge, NEDepthwiseConvolutionLayerFixture3x3, framework::DatasetMode::NIGHTLY, + combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(), + framework::dataset::make("DepthMultiplier", 1)), + framework::dataset::make("DataType", + DataType::F32)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) { validate(Accessor(_target), _reference, tolerance_f32); } @@ -286,11 +296,21 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthwiseConvolutionLayerFixture3x3, fr { validate(Accessor(_target), _reference, tolerance_f16); } -FIXTURE_DATA_TEST_CASE(RunOptimized, NEDepthwiseConvolutionLayerFixture3x3, framework::DatasetMode::ALL, combine(combine(combine(datasets::OptimizedDepthwiseConvolutionLayerDataset3x3(), - framework::dataset::make("DepthMultiplier", 1)), - framework::dataset::make("DataType", - DataType::F16)), - framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +FIXTURE_DATA_TEST_CASE(RunOptimizedSmall, NEDepthwiseConvolutionLayerFixture3x3, framework::DatasetMode::PRECOMMIT, + combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(), + framework::dataset::make("DepthMultiplier", 1)), + framework::dataset::make("DataType", + DataType::F16)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +{ + validate(Accessor(_target), _reference, tolerance_f16); +} +FIXTURE_DATA_TEST_CASE(RunOptimizedLarge, NEDepthwiseConvolutionLayerFixture3x3, framework::DatasetMode::NIGHTLY, + combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(), + framework::dataset::make("DepthMultiplier", 1)), + framework::dataset::make("DataType", + DataType::F16)), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) { validate(Accessor(_target), _reference, tolerance_f16); } @@ -317,7 +337,7 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset3x3(), depth_multipliers), @@ -327,8 +347,18 @@ FIXTURE_DATA_TEST_CASE(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture3x3< { validate(Accessor(_target), _reference, tolerance_qasymm8); } -FIXTURE_DATA_TEST_CASE(RunOptimized, NEDepthwiseConvolutionLayerQuantizedFixture3x3, framework::DatasetMode::ALL, - combine(combine(combine(combine(datasets::OptimizedDepthwiseConvolutionLayerDataset3x3(), +FIXTURE_DATA_TEST_CASE(RunOptimizedSmall, NEDepthwiseConvolutionLayerQuantizedFixture3x3, framework::DatasetMode::PRECOMMIT, + combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(), + framework::dataset::make("DepthMultiplier", 1)), + framework::dataset::make("DataType", + DataType::QASYMM8)), + framework::dataset::make("QuantizationInfo", { QuantizationInfo(0.5f, 10) })), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) +{ + validate(Accessor(_target), _reference, tolerance_qasymm8); +} +FIXTURE_DATA_TEST_CASE(RunOptimizedLarge, NEDepthwiseConvolutionLayerQuantizedFixture3x3, framework::DatasetMode::NIGHTLY, + combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(), framework::dataset::make("DepthMultiplier", 1)), framework::dataset::make("DataType", DataType::QASYMM8)), @@ -346,12 +376,12 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture3x3< { validate(Accessor(_target), _reference, tolerance_qasymm8); } -TEST_SUITE_END() -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // W3x3 +TEST_SUITE_END() // QASYMM8 +TEST_SUITE_END() // Quantized -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // DepthwiseConvLayer +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/DequantizationLayer.cpp b/tests/validation/NEON/DequantizationLayer.cpp index 9bdba7204f..70433acdec 100644 --- a/tests/validation/NEON/DequantizationLayer.cpp +++ b/tests/validation/NEON/DequantizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -55,6 +55,38 @@ const auto DequantizationShapes = concat(concat(concat(datasets::Small3DShapes() TEST_SUITE(NEON) TEST_SUITE(DequantizationLayer) +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), // Wrong input data type + TensorInfo(TensorShape(16U, 5U, 16U), 1, DataType::U8), // Invalid shape + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::U8), // Wrong output data type + TensorInfo(TensorShape(16U, 16U, 2U, 5U), 1, DataType::U8), // Missmatching shapes + TensorInfo(TensorShape(17U, 16U, 16U, 5U), 1, DataType::U8), // Shrink window + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::U8), // Valid + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 5U, 16U), 1, DataType::U8), + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::U8), + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), + TensorInfo(TensorShape(17U, 16U, 16U, 5U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), + })), + framework::dataset::make("MinMax",{ TensorInfo(TensorShape(2U), 1, DataType::F32), + TensorInfo(TensorShape(2U), 1, DataType::U8), + TensorInfo(TensorShape(2U), 1, DataType::F32), + TensorInfo(TensorShape(2U), 1, DataType::F32), + TensorInfo(TensorShape(2U), 1, DataType::U8), + TensorInfo(TensorShape(2U), 1, DataType::U8), + })), + framework::dataset::make("Expected", { false, false, false, false, false, true})), + input_info, output_info, min_max, expected) +{ + ARM_COMPUTE_EXPECT(bool(NEDequantizationLayer::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), &min_max.clone()->set_is_resizable(false))) == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(DequantizationShapes, framework::dataset::make("DataType", DataType::U8)), shape, data_type) { TensorShape shape_min_max = shape; @@ -113,11 +145,11 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDequantizationLayerFixture, framewor // Validate output validate(Accessor(_target), _reference, tolerance_f32); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // U8 +TEST_SUITE_END() // Integer -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // DequantizationLayer +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/Derivative.cpp b/tests/validation/NEON/Derivative.cpp index 7cc6f82048..3012a6a235 100644 --- a/tests/validation/NEON/Derivative.cpp +++ b/tests/validation/NEON/Derivative.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -104,8 +104,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDerivativeFixture, framework::DatasetMode::NI validate(Accessor(_target.second), _reference.second, valid_region_y); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // Derivative +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/Dilate.cpp b/tests/validation/NEON/Dilate.cpp index af1af8e549..681749b119 100644 --- a/tests/validation/NEON/Dilate.cpp +++ b/tests/validation/NEON/Dilate.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -103,8 +103,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEDilateFixture, framework::DatasetMod validate(Accessor(_target), _reference, shape_to_valid_region(_reference.shape(), (_border_mode == BorderMode::UNDEFINED), border_size)); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // Dilate +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/DilatedConvolutionLayer.cpp b/tests/validation/NEON/DilatedConvolutionLayer.cpp index 56b2dc0ed8..7b1c534290 100644 --- a/tests/validation/NEON/DilatedConvolutionLayer.cpp +++ b/tests/validation/NEON/DilatedConvolutionLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -63,35 +63,37 @@ const auto CNNDataTypes = framework::dataset::make("DataType", } // namespace TEST_SUITE(NEON) - TEST_SUITE(DilatedConvolutionLayer) + +// *INDENT-OFF* +// clang-format off DATA_TEST_CASE(ValidateConvolutionMethod, framework::DatasetMode::ALL, zip(zip(zip(zip(zip( - framework::dataset::make("InputInfo", { TensorInfo(TensorShape(8U, 8U, 2U), 1, DataType::F32), - TensorInfo(TensorShape(23U, 27U, 5U, 4U), 1, DataType::F32), - TensorInfo(TensorShape(3U, 3U, 2U, 1U), 1, DataType::F32), - TensorInfo(TensorShape(33U, 27U, 7U, 4U), 1, DataType::F32) - }), - framework::dataset::make("WeightsInfo", { TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(5U, 5U, 7U, 16U), 1, DataType::F16) - })), - framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(6U, 6U, 1U), 1, DataType::F32), - TensorInfo(TensorShape(21U, 25U, 21U, 4U), 1, DataType::F32), - TensorInfo(TensorShape(11U, 25U, 21U), 1, DataType::F32), - TensorInfo(TensorShape(11U, 12U, 16U, 4U), 1, DataType::F32) - })), - framework::dataset::make("ConvInfo", { PadStrideInfo(1, 1, 0, 0), - PadStrideInfo(1, 1, 0, 0), - PadStrideInfo(2, 1, 0, 0), - PadStrideInfo(3, 2, 1, 0) - })), - framework::dataset::make("Dilation", { Size2D(1U, 2U), - Size2D(2U, 1U), - Size2D(2U, 2U), - Size2D(3U, 3U) - })), - framework::dataset::make("Expected", { ConvolutionMethod::GEMM, ConvolutionMethod::GEMM, ConvolutionMethod::GEMM, ConvolutionMethod::GEMM })), + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(8U, 8U, 2U), 1, DataType::F32), + TensorInfo(TensorShape(23U, 27U, 5U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(3U, 3U, 2U, 1U), 1, DataType::F32), + TensorInfo(TensorShape(33U, 27U, 7U, 4U), 1, DataType::F32) + }), + framework::dataset::make("WeightsInfo", { TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(3U, 3U, 5U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(5U, 5U, 7U, 16U), 1, DataType::F16) + })), + framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(6U, 6U, 1U), 1, DataType::F32), + TensorInfo(TensorShape(21U, 25U, 21U, 4U), 1, DataType::F32), + TensorInfo(TensorShape(11U, 25U, 21U), 1, DataType::F32), + TensorInfo(TensorShape(11U, 12U, 16U, 4U), 1, DataType::F32) + })), + framework::dataset::make("ConvInfo", { PadStrideInfo(1, 1, 0, 0), + PadStrideInfo(1, 1, 0, 0), + PadStrideInfo(2, 1, 0, 0), + PadStrideInfo(3, 2, 1, 0) + })), + framework::dataset::make("Dilation", { Size2D(1U, 2U), + Size2D(2U, 1U), + Size2D(2U, 2U), + Size2D(3U, 3U) + })), + framework::dataset::make("Expected", { ConvolutionMethod::GEMM, ConvolutionMethod::GEMM, ConvolutionMethod::GEMM, ConvolutionMethod::GEMM })), input_info, weights_info, output_info, conv_info, dilation, expected) { ConvolutionMethod is_valid = NEConvolutionLayer::get_convolution_method(&input_info.clone()->set_is_resizable(false), @@ -100,7 +102,9 @@ DATA_TEST_CASE(ValidateConvolutionMethod, framework::DatasetMode::ALL, zip(zip(z conv_info, WeightsInfo(), dilation); ARM_COMPUTE_EXPECT(is_valid == expected, framework::LogLevel::ERRORS); } -TEST_SUITE_END() +// clang-format on +// *INDENT-ON* +TEST_SUITE_END() // DilatedConvolutionLayer TEST_SUITE(GEMMDilatedConvolutionLayer) @@ -171,8 +175,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEGEMMDilatedConvolutionLayerFixture, fra // Validate output validate(Accessor(_target), _reference, rel_tolerance_f16, tolerance_num_f16, abs_tolerance_f16); } -TEST_SUITE_END() -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ +TEST_SUITE_END() // FP16 +#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ TEST_SUITE(FP32) FIXTURE_DATA_TEST_CASE(RunSmall, NEGEMMDilatedConvolutionLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDilatedConvolutionLayerDataset(), @@ -193,8 +197,8 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEGEMMDilatedConvolutionLayerFixture, fr // Validate output validate(Accessor(_target), _reference, tolerance_f32); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // FP32 +TEST_SUITE_END() // Float template using NEGEMMDilatedConvolutionLayerQuantizedFixture = ConvolutionValidationQuantizedFixture; @@ -223,11 +227,11 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEGEMMDilatedConvolutionLayerQuantizedFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(data_f16_precommit, framework::dataset::make("DataType", +FIXTURE_DATA_TEST_CASE(RunSmall, NEDirectConvolutionLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(data_precommit, framework::dataset::make("DataType", DataType::F16)), ActivationFunctionsDataset), framework::dataset::make("DataLayout", DataLayout::NCHW))) @@ -190,7 +197,7 @@ TEST_SUITE_END() // FP16 #endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ TEST_SUITE(FP32) -FIXTURE_DATA_TEST_CASE(RunSmall, NEDirectConvolutionLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(data_f32_precommit, framework::dataset::make("DataType", +FIXTURE_DATA_TEST_CASE(RunSmall, NEDirectConvolutionLayerFixture, framework::DatasetMode::PRECOMMIT, combine(combine(combine(data_precommit, framework::dataset::make("DataType", DataType::F32)), ActivationFunctionsDataset), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC }))) diff --git a/tests/validation/NEON/Flatten.cpp b/tests/validation/NEON/Flatten.cpp index 86f1a11262..d4742a757c 100644 --- a/tests/validation/NEON/Flatten.cpp +++ b/tests/validation/NEON/Flatten.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -43,6 +43,25 @@ namespace validation TEST_SUITE(NEON) TEST_SUITE(FlattenLayer) +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::U8), // Mismatching data_type + TensorInfo(TensorShape(4U, 5U, 4U), 1, DataType::F32), // Mismatching shapes + TensorInfo(TensorShape(4U, 4U, 4U), 1, DataType::F32), // Valid + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(64U), 1, DataType::F32), + TensorInfo(TensorShape(64U), 1, DataType::F32), + TensorInfo(TensorShape(64U), 1, DataType::F32), + })), + framework::dataset::make("Expected", { false, false, true})), + input_info, output_info, expected) +{ + ARM_COMPUTE_EXPECT(bool(NEFlattenLayer::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false))) == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + template using NEFlattenLayerFixture = FlattenLayerValidationFixture; @@ -60,7 +79,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEFlattenLayerFixture, framework::Datase // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // FP32 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(FP16) @@ -76,12 +95,12 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEFlattenLayerFixture, framework::Dataset // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() -#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ -TEST_SUITE_END() +TEST_SUITE_END() // FP16 +#endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ +TEST_SUITE_END() // Float -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // FlattenLayer +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/HarrisCorners.cpp b/tests/validation/NEON/HarrisCorners.cpp index e0bbd92a2e..23621cde4d 100644 --- a/tests/validation/NEON/HarrisCorners.cpp +++ b/tests/validation/NEON/HarrisCorners.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -56,7 +56,7 @@ const auto data = combine(framework::dataset::make("GradientSize", { 3, 5, 7 }), TEST_SUITE(NEON) TEST_SUITE(HarrisCorners) -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(concat(datasets::Small2DShapes(), datasets::Large2DShapes()), data), framework::dataset::make("Format", Format::U8)), shape, +DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(datasets::Small2DShapes(), data), framework::dataset::make("Format", Format::U8)), shape, gradient_size, block_size, border_mode, format) { std::mt19937 gen(library->seed()); diff --git a/tests/validation/NEON/Im2Col.cpp b/tests/validation/NEON/Im2Col.cpp index 5a2b46a550..0d00c0a167 100644 --- a/tests/validation/NEON/Im2Col.cpp +++ b/tests/validation/NEON/Im2Col.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -44,6 +44,12 @@ const auto conv_args = combine(combine(combine(combine(conv_filter_sizes framework::dataset::make("QuantizationInfo", QuantizationInfo(0.5f, 10))), framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })), framework::dataset::make("NumGroups", { 1 })); + +const auto conv_filter_sizes_small = framework::dataset::make("KernelDims", { Size2D(3U, 3U), Size2D(3U, 1U), Size2D(1U, 5U) }); +const auto conv_args_small = combine(combine(combine(combine(conv_filter_sizes_small, framework::dataset::make("PadStride", { PadStrideInfo(1U, 1U, 0U, 0U), PadStrideInfo(1U, 1U, 1U, 1U) })), + framework::dataset::make("QuantizationInfo", QuantizationInfo(0.5f, 10))), + framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })), + framework::dataset::make("NumGroups", { 1 })); } // namespace TEST_SUITE(NEON) TEST_SUITE(Im2Col) @@ -78,58 +84,61 @@ using NEIm2ColFixture = Im2ColValidationFixture, framework::DatasetMode::ALL, combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::F32)), - conv_args)) +FIXTURE_DATA_TEST_CASE(RunSmall, NEIm2ColFixture, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::F32)), + conv_args_small)) { // Validate output validate(Accessor(_target), _reference); } -FIXTURE_DATA_TEST_CASE(RunLarge, NEIm2ColFixture, framework::DatasetMode::NIGHTLY, combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::F32)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEIm2ColFixture, framework::DatasetMode::NIGHTLY, combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", + DataType::F32)), conv_args)) { // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // FP32 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(FP16) -FIXTURE_DATA_TEST_CASE(RunSmall, NEIm2ColFixture, framework::DatasetMode::ALL, combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::F16)), - conv_args)) +FIXTURE_DATA_TEST_CASE(RunSmall, NEIm2ColFixture, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::F16)), + conv_args_small)) { // Validate output validate(Accessor(_target), _reference); } -FIXTURE_DATA_TEST_CASE(RunLarge, NEIm2ColFixture, framework::DatasetMode::NIGHTLY, combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::F16)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEIm2ColFixture, framework::DatasetMode::NIGHTLY, combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), framework::dataset::make("DataType", + DataType::F16)), conv_args)) { // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // FP16 #endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ -TEST_SUITE_END() +TEST_SUITE_END() // Float TEST_SUITE(QASYMM8) -FIXTURE_DATA_TEST_CASE(RunSmall, NEIm2ColFixture, framework::DatasetMode::ALL, combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::QASYMM8)), - conv_args)) +FIXTURE_DATA_TEST_CASE(RunSmall, NEIm2ColFixture, framework::DatasetMode::PRECOMMIT, combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::QASYMM8)), + conv_args_small)) { // Validate output validate(Accessor(_target), _reference); } -FIXTURE_DATA_TEST_CASE(RunLarge, NEIm2ColFixture, framework::DatasetMode::NIGHTLY, combine(combine(datasets::LargeShapes(), framework::dataset::make("DataType", DataType::QASYMM8)), +FIXTURE_DATA_TEST_CASE(RunLarge, NEIm2ColFixture, framework::DatasetMode::NIGHTLY, combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), + framework::dataset::make("DataType", DataType::QASYMM8)), conv_args)) { // Validate output validate(Accessor(_target), _reference); } -TEST_SUITE_END() +TEST_SUITE_END() // QASYMM8 -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // Im2Col +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/PoolingLayer.cpp b/tests/validation/NEON/PoolingLayer.cpp index 901e9969d7..707f4bd5dd 100644 --- a/tests/validation/NEON/PoolingLayer.cpp +++ b/tests/validation/NEON/PoolingLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -49,8 +49,8 @@ namespace const auto PoolingLayerDatasetFP = combine(combine(combine(datasets::PoolingTypes(), framework::dataset::make("PoolingSize", { Size2D(2, 2), Size2D(3, 3), Size2D(7, 7), Size2D(9, 9), Size2D(4, 4), Size2D(3, 7), Size2D(7, 8) })), framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(2, 1, 0, 0), PadStrideInfo(1, 2, 1, 1), PadStrideInfo(2, 2, 1, 0) })), framework::dataset::make("ExcludePadding", { true, false })); -const auto PoolingLayerDatasetFPSmall = combine(combine(combine(datasets::PoolingTypes(), framework::dataset::make("PoolingSize", { Size2D(2, 2), Size2D(3, 3), Size2D(3, 7) })), - framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(2, 1, 0, 0), PadStrideInfo(1, 2, 1, 1) })), +const auto PoolingLayerDatasetFPSmall = combine(combine(combine(datasets::PoolingTypes(), framework::dataset::make("PoolingSize", { Size2D(2, 2), Size2D(3, 3) })), + framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(2, 1, 0, 0) })), framework::dataset::make("ExcludePadding", { true, false })); /** Input data sets for asymmetric data type */ @@ -59,7 +59,7 @@ const auto PoolingLayerDatasetQASYMM8 = combine(combine(combine(framework::datas framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(2, 1, 0, 0), PadStrideInfo(1, 2, 1, 1), PadStrideInfo(2, 2, 1, 0) })), framework::dataset::make("ExcludePadding", { true })); const auto PoolingLayerDatasetQASYMM8Small = combine(combine(combine(framework::dataset::make("PoolingType", { PoolingType::MAX, PoolingType::AVG }), framework::dataset::make("PoolingSize", { Size2D(2, 2), Size2D(3, 7) })), - framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(2, 1, 0, 0), PadStrideInfo(1, 2, 1, 1) })), + framework::dataset::make("PadStride", { PadStrideInfo(1, 1, 0, 0), PadStrideInfo(1, 2, 1, 1) })), framework::dataset::make("ExcludePadding", { true })); constexpr AbsoluteTolerance tolerance_f32(0.001f); /**< Tolerance value for comparing reference's output against implementation's output for float types */ diff --git a/tests/validation/NEON/QuantizationLayer.cpp b/tests/validation/NEON/QuantizationLayer.cpp index 26657c4062..30b4a57abf 100644 --- a/tests/validation/NEON/QuantizationLayer.cpp +++ b/tests/validation/NEON/QuantizationLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -54,6 +54,31 @@ const auto QuantizationShapes = concat(concat(concat(datasets::Small3DShapes(), TEST_SUITE(NEON) TEST_SUITE(QuantizationLayer) +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::U8), // Wrong input data type + TensorInfo(TensorShape(16U, 5U, 16U), 1, DataType::U8), // Invalid shape + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), // Wrong output data type + TensorInfo(TensorShape(16U, 16U, 2U, 5U), 1, DataType::U8), // Missmatching shapes + TensorInfo(TensorShape(17U, 16U, 16U, 5U), 1, DataType::U8), // Shrink window + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), // Valid + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 5U, 16U), 1, DataType::U8), + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::U16), + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::F32), + TensorInfo(TensorShape(17U, 16U, 16U, 5U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 16U, 5U), 1, DataType::U8), + })), + framework::dataset::make("Expected", { false, false, false, false, false, true})), + input_info, output_info, expected) +{ + ARM_COMPUTE_EXPECT(bool(NEQuantizationLayer::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false))) == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(QuantizationShapes, framework::dataset::make("DataType", DataType::F32)), shape, data_type) { // Create tensors @@ -95,11 +120,11 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEQuantizationLayerFixture, framework::D // Validate output validate(Accessor(_target), _reference, tolerance_u8); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // FP32 +TEST_SUITE_END() // Float -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // QuantizationLayer +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/Scale.cpp b/tests/validation/NEON/Scale.cpp index 0d9c8e1f8c..127a552367 100644 --- a/tests/validation/NEON/Scale.cpp +++ b/tests/validation/NEON/Scale.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -128,7 +128,7 @@ DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip(zip(zip( // clang-format on // *INDENT-ON* -DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(combine(combine(concat(datasets::SmallShapes(), datasets::LargeShapes()), ScaleDataTypes), ScaleDataLayouts), +DATA_TEST_CASE(Configuration, framework::DatasetMode::ALL, combine(combine(combine(combine(combine(datasets::SmallShapes(), ScaleDataTypes), ScaleDataLayouts), framework::dataset::make("InterpolationPolicy", { InterpolationPolicy::NEAREST_NEIGHBOR, InterpolationPolicy::BILINEAR })), datasets::BorderModes()), framework::dataset::make("SamplingPolicy", { SamplingPolicy::CENTER })), @@ -232,7 +232,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEScaleFixture, framework::DatasetMode:: // Validate output validate(Accessor(_target), _reference, valid_region, tolerance_f32, tolerance_num_f32); } -TEST_SUITE_END() +TEST_SUITE_END() // FP32 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC TEST_SUITE(FP16) FIXTURE_DATA_TEST_CASE(RunSmall, NEScaleFixture, framework::DatasetMode::ALL, combine(combine(combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", @@ -265,7 +265,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEScaleFixture, framework::DatasetMode::N } TEST_SUITE_END() // FP16 #endif /* __ARM_FEATURE_FP16_VECTOR_ARITHMETIC */ -TEST_SUITE_END() +TEST_SUITE_END() // Float TEST_SUITE(Integer) TEST_SUITE(U8) @@ -297,7 +297,7 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEScaleFixture, framework::DatasetMode // Validate output validate(Accessor(_target), _reference, valid_region, tolerance_u8); } -TEST_SUITE_END() +TEST_SUITE_END() // U8 TEST_SUITE(S16) FIXTURE_DATA_TEST_CASE(RunSmall, NEScaleFixture, framework::DatasetMode::ALL, combine(combine(combine(combine(combine(datasets::SmallShapes(), framework::dataset::make("DataType", DataType::S16)), @@ -327,11 +327,11 @@ FIXTURE_DATA_TEST_CASE(RunLarge, NEScaleFixture, framework::DatasetMode // Validate output validate(Accessor(_target), _reference, valid_region, tolerance_s16, tolerance_num_s16); } -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // S16 +TEST_SUITE_END() // Integer -TEST_SUITE_END() -TEST_SUITE_END() +TEST_SUITE_END() // Scale +TEST_SUITE_END() // NEON } // namespace validation } // namespace test } // namespace arm_compute diff --git a/tests/validation/NEON/YOLOLayer.cpp b/tests/validation/NEON/YOLOLayer.cpp index 6225dc170e..0edbc4e11f 100644 --- a/tests/validation/NEON/YOLOLayer.cpp +++ b/tests/validation/NEON/YOLOLayer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 ARM Limited. + * Copyright (c) 2018-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -60,6 +60,46 @@ const auto YOLODataset = combine(combine(combine(combine(framework::dataset::mak TEST_SUITE(NEON) TEST_SUITE(YOLOLayer) +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Validate, framework::DatasetMode::ALL, zip(zip(zip(zip( + framework::dataset::make("InputInfo", { TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::U8), // Wrong input data type + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), // Invalid activation info + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), // Wrong output data type + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), // wrong number of classes + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), // Mismatching shapes + TensorInfo(TensorShape(17U, 16U, 6U), 1, DataType::F32), // shrink window + TensorInfo(TensorShape(17U, 16U, 7U), 1, DataType::F32), // channels not multiple of (num_classes + 5) + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), // Valid + }), + framework::dataset::make("OutputInfo",{ TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::U16), + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 11U, 6U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 7U), 1, DataType::F32), + TensorInfo(TensorShape(16U, 16U, 6U), 1, DataType::F32), + })), + framework::dataset::make("ActivationInfo", { ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC), + })), + framework::dataset::make("Numclasses", { 1, 1, 1, 0, 1, 1, 1, 1 + })), + framework::dataset::make("Expected", { false, false, false, false, false, false, false, true})), + input_info, output_info, act_info, num_classes, expected) +{ + ARM_COMPUTE_EXPECT(bool(NEYOLOLayer::validate(&input_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), act_info, num_classes)) == expected, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + template using NEYOLOLayerFixture = YOLOValidationFixture; diff --git a/tests/validation/fixtures/ConvolutionFixture.h b/tests/validation/fixtures/ConvolutionFixture.h index 741ebe5eb9..8877bd145a 100644 --- a/tests/validation/fixtures/ConvolutionFixture.h +++ b/tests/validation/fixtures/ConvolutionFixture.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2018 ARM Limited. + * Copyright (c) 2017-2019 ARM Limited. * * SPDX-License-Identifier: MIT * @@ -52,9 +52,8 @@ protected: std::uniform_int_distribution distribution(0, 255); const uint8_t constant_border_value = distribution(gen); - // Generate random scale value between 1 and 255. - std::uniform_int_distribution distribution_scale(1, 255); - const uint32_t scale = distribution_scale(gen); + // Generate random scale value between 0 and 255. + const uint32_t scale = distribution(gen); ARM_COMPUTE_ERROR_ON(3 != width && 5 != width && 7 != width && 9 != width); ARM_COMPUTE_ERROR_ON(3 != height && 5 != height && 7 != height && 9 != height); -- cgit v1.2.1