blob: ab49ee1962348570365a9dee27acd992054721b4 [file] [log] [blame]
Michalis Spyrou7362f0d2017-10-18 17:58:22 +01001/*
Milos Puzovica7077e92022-10-28 16:49:15 +01002 * Copyright (c) 2017-2022 Arm Limited.
Michalis Spyrou7362f0d2017-10-18 17:58:22 +01003 *
4 * SPDX-License-Identifier: MIT
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a copy
7 * of this software and associated documentation files (the "Software"), to
8 * deal in the Software without restriction, including without limitation the
9 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 * sell copies of the Software, and to permit persons to whom the Software is
11 * furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in all
14 * copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +000021 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010022 * SOFTWARE.
23 */
24#include "arm_compute/core/Types.h"
Giorgio Arena76572242018-04-04 17:44:26 +010025#include "arm_compute/core/utils/misc/ShapeCalculator.h"
Giorgio Arena04a8f8c2017-11-23 11:45:24 +000026#include "arm_compute/runtime/NEON/functions/NEDepthwiseConvolutionLayer.h"
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010027#include "arm_compute/runtime/Tensor.h"
28#include "arm_compute/runtime/TensorAllocator.h"
29#include "tests/NEON/Accessor.h"
30#include "tests/PaddingCalculator.h"
Giorgio Arena04a8f8c2017-11-23 11:45:24 +000031#include "tests/datasets/DepthwiseConvolutionLayerDataset.h"
Usama Arif881f2de2019-04-12 10:29:17 +010032#include "tests/datasets/DilatedDepthwiseConvolutionLayerDataset.h"
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010033#include "tests/framework/Asserts.h"
34#include "tests/framework/Macros.h"
35#include "tests/framework/datasets/Datasets.h"
36#include "tests/validation/Validation.h"
Giorgio Arena04a8f8c2017-11-23 11:45:24 +000037#include "tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h"
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010038
39namespace arm_compute
40{
41namespace test
42{
43namespace validation
44{
Giorgio Arena76572242018-04-04 17:44:26 +010045using namespace arm_compute::misc::shape_calculator;
46
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010047namespace
48{
Georgios Pinitas8cffcd62018-11-16 17:11:50 +000049constexpr RelativeTolerance<float> tolerance_f32(0.01f); /**< Tolerance value for comparing reference's output against implementation's output for DataType::F32 */
50constexpr AbsoluteTolerance<uint8_t> tolerance_qasymm8(1); /**< Tolerance value for comparing reference's output against implementation's output for DataType::QASYMM8 */
51#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
Manuel Bottinie5df1d52021-04-29 12:06:33 +010052RelativeTolerance<half_float::half> tolerance_f16(half_float::half(0.02)); /**< Tolerance value for comparing reference's output against implementation's output for DataType::F16 */
Georgios Pinitas8cffcd62018-11-16 17:11:50 +000053constexpr float tolerance_num = 0.05f; /**< Tolerance number */
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +000054#endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
Giorgio Arena76572242018-04-04 17:44:26 +010055
Giorgio Arena3737c792020-11-23 17:47:23 +000056const auto depth_multipliers = framework::dataset::make("DepthMultiplier", { 1, 2, 8 });
57const auto large_depth_multipliers = framework::dataset::make("DepthMultiplier", { 1, 2, 5, 32 });
Manuel Bottinia788c2f2019-04-08 13:18:00 +010058
59//Activation Functions
60const auto ActivationFunctionsDataset = framework::dataset::make("ActivationInfo",
61{
62 ActivationLayerInfo(),
63 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)
64});
Michele Di Giorgiof29d1b72019-10-29 10:58:13 +000065
66const auto input_qinfo_dataset = framework::dataset::make("InputQInfo",
67{
68 QuantizationInfo(0.3f, 10),
69 QuantizationInfo(2.2f, 10),
70});
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010071} // namespace
72
73TEST_SUITE(NEON)
Manuel Bottinia788c2f2019-04-08 13:18:00 +010074TEST_SUITE(DepthwiseConvolutionLayer)
Michalis Spyrou7362f0d2017-10-18 17:58:22 +010075
Abe Mbise7784c832018-05-31 16:48:41 +010076// *INDENT-OFF*
77// clang-format off
Usama Arif881f2de2019-04-12 10:29:17 +010078DATA_TEST_CASE(Validate3x3, framework::DatasetMode::ALL, zip(zip(zip(zip(zip(zip(zip(
Abe Mbise7784c832018-05-31 16:48:41 +010079 framework::dataset::make("InputInfo", { TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32), // Mismatching data type input/weights
80 TensorInfo(TensorShape(32U, 18U, 3U), 1, DataType::F32), // Mismatching input feature maps
81 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32), // Unsupported weights dimensions
82 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32), // Mismatching depth multiplier
Giorgio Arena66cbafb2018-08-23 14:51:00 +010083 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::QASYMM8), // Invalid stride
Abe Mbise7784c832018-05-31 16:48:41 +010084 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32), // Invalid biases size
85 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32), // Invalid biases dimensions
86 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32), // Invalid output size
Usama Arif881f2de2019-04-12 10:29:17 +010087 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // patch size bigger than input width
88 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // dilation < 1
Giorgio Arena66cbafb2018-08-23 14:51:00 +010089 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +010090 }),
Giorgio Arena66cbafb2018-08-23 14:51:00 +010091 framework::dataset::make("WeightsInfo", { TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F16),
92 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
93 TensorInfo(TensorShape(5U, 5U, 2U, 2U), 1, DataType::F32),
94 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
95 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::QASYMM8),
96 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
97 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
98 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
99 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
Usama Arif881f2de2019-04-12 10:29:17 +0100100 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
101 TensorInfo(TensorShape(3U, 3U, 2U, 2U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +0100102 })),
103 framework::dataset::make("BiasesInfo", { TensorInfo(TensorShape(2U), 1, DataType::F32),
104 TensorInfo(TensorShape(2U), 1, DataType::F32),
105 TensorInfo(TensorShape(2U), 1, DataType::F32),
106 TensorInfo(TensorShape(2U), 1, DataType::F32),
Giorgio Arena66cbafb2018-08-23 14:51:00 +0100107 TensorInfo(TensorShape(2U), 1, DataType::S32),
Abe Mbise7784c832018-05-31 16:48:41 +0100108 TensorInfo(TensorShape(4U), 1, DataType::F32),
109 TensorInfo(TensorShape(2U, 2U), 1, DataType::F32),
110 TensorInfo(TensorShape(2U), 1, DataType::F32),
111 TensorInfo(TensorShape(2U), 1, DataType::F32),
Usama Arif881f2de2019-04-12 10:29:17 +0100112 TensorInfo(TensorShape(2U), 1, DataType::F32),
113 TensorInfo(TensorShape(2U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +0100114 })),
115 framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::F32),
116 TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::F32),
117 TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::F32),
118 TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::F32),
Giorgio Arena66cbafb2018-08-23 14:51:00 +0100119 TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::QASYMM8),
Abe Mbise7784c832018-05-31 16:48:41 +0100120 TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::F32),
121 TensorInfo(TensorShape(30U, 16U, 2U), 1, DataType::F32),
122 TensorInfo(TensorShape(32U, 18U, 2U), 1, DataType::F32),
123 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
Usama Arif881f2de2019-04-12 10:29:17 +0100124 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
125 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +0100126 })),
127 framework::dataset::make("ConvInfo", { PadStrideInfo(1, 1, 0, 0),
128 PadStrideInfo(1, 1, 0, 0),
129 PadStrideInfo(1, 1, 0, 0),
130 PadStrideInfo(1, 1, 0, 0),
131 PadStrideInfo(4, 1, 0, 0),
132 PadStrideInfo(1, 1, 0, 0),
133 PadStrideInfo(1, 1, 0, 0),
134 PadStrideInfo(1, 1, 0, 0),
135 PadStrideInfo(1, 1, 0, 0),
Usama Arif881f2de2019-04-12 10:29:17 +0100136 PadStrideInfo(1, 1, 0, 0),
137 PadStrideInfo(1, 1, 0, 0),
Abe Mbise7784c832018-05-31 16:48:41 +0100138 })),
139 framework::dataset::make("DepthMultiplier", { 1,
140 1,
141 1,
142 3,
143 1,
144 1,
145 1,
146 1,
147 1,
Usama Arif881f2de2019-04-12 10:29:17 +0100148 1,
149 1,
Abe Mbise7784c832018-05-31 16:48:41 +0100150 })),
Usama Arif881f2de2019-04-12 10:29:17 +0100151 framework::dataset::make("Dilation", { Size2D(1U, 1U),
152 Size2D(1U, 1U),
153 Size2D(1U, 1U),
154 Size2D(1U, 1U),
155 Size2D(1U, 1U),
156 Size2D(1U, 1U),
157 Size2D(1U, 1U),
158 Size2D(1U, 1U),
159 Size2D(25U, 1U),
160 Size2D(0U, 1U),
161 Size2D(1U, 1U),
162 })),
163 framework::dataset::make("Expected", { false, false, false, false, false, false, false, false, false, false, true })),
164 input_info, weights_info, biases_info, output_info, conv_info, depth_multiplier,dilation, expected)
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100165{
Manuel Bottini05069f02019-09-26 17:18:26 +0100166 bool is_valid = bool(NEDepthwiseConvolutionLayer::validate(&input_info.clone()->set_is_resizable(false),
Usama Arif881f2de2019-04-12 10:29:17 +0100167 &weights_info.clone()->set_is_resizable(false), &biases_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), conv_info, depth_multiplier, ActivationLayerInfo(), dilation));
Abe Mbise7784c832018-05-31 16:48:41 +0100168 ARM_COMPUTE_EXPECT(is_valid == expected, framework::LogLevel::ERRORS);
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100169}
170
Usama Arif881f2de2019-04-12 10:29:17 +0100171DATA_TEST_CASE(ValidateGeneric, framework::DatasetMode::ALL, zip(zip(zip(zip(zip(zip(zip(
Giorgio Arenad93e2632019-10-15 11:09:33 +0100172 framework::dataset::make("InputInfo", { TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Mismatching data type input/weights
173 TensorInfo(TensorShape(27U, 13U, 3U), 1, DataType::F32), // Mismatching input feature maps
174 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Mismatching depth multiplier
175 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Invalid biases size
176 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Invalid biases dimensions
177 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32), // Invalid output size
178 TensorInfo(TensorShape(27U, 13U, 8U), 1, DataType::F32), // Patch size bigger than input width
179 TensorInfo(TensorShape(27U, 13U, 8U), 1, DataType::F32), // Dilation < 1
Abe Mbise7784c832018-05-31 16:48:41 +0100180 }),
181 framework::dataset::make("WeightsInfo", { TensorInfo(TensorShape(3U, 3U, 2U), 1, DataType::F16),
182 TensorInfo(TensorShape(3U, 3U, 2U), 1, DataType::F32),
183 TensorInfo(TensorShape(3U, 3U, 2U), 1, DataType::F32),
184 TensorInfo(TensorShape(3U, 3U, 2U), 1, DataType::F32),
185 TensorInfo(TensorShape(3U, 3U, 2U), 1, DataType::F32),
186 TensorInfo(TensorShape(3U, 3U, 2U), 1, DataType::F32),
187 TensorInfo(TensorShape(3U, 3U, 16U), 1, DataType::F32),
Usama Arif881f2de2019-04-12 10:29:17 +0100188 TensorInfo(TensorShape(3U, 3U, 16U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +0100189 })),
190 framework::dataset::make("BiasesInfo", { TensorInfo(TensorShape(2U), 1, DataType::F32),
191 TensorInfo(TensorShape(2U), 1, DataType::F32),
192 TensorInfo(TensorShape(2U), 1, DataType::F32),
193 TensorInfo(TensorShape(4U), 1, DataType::F32),
194 TensorInfo(TensorShape(2U, 2U), 1, DataType::F32),
195 TensorInfo(TensorShape(2U), 1, DataType::F32),
196 TensorInfo(TensorShape(16U), 1, DataType::F32),
Usama Arif881f2de2019-04-12 10:29:17 +0100197 TensorInfo(TensorShape(16U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +0100198 })),
199 framework::dataset::make("OutputInfo", { TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
200 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
201 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
202 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
203 TensorInfo(TensorShape(25U, 11U, 2U), 1, DataType::F32),
204 TensorInfo(TensorShape(27U, 13U, 2U), 1, DataType::F32),
205 TensorInfo(TensorShape(25U, 11U, 16U), 1, DataType::F32),
Usama Arif881f2de2019-04-12 10:29:17 +0100206 TensorInfo(TensorShape(25U, 11U, 16U), 1, DataType::F32),
Abe Mbise7784c832018-05-31 16:48:41 +0100207 })),
208 framework::dataset::make("ConvInfo", { PadStrideInfo(1, 1, 0, 0),
209 PadStrideInfo(1, 1, 0, 0),
210 PadStrideInfo(1, 1, 0, 0),
211 PadStrideInfo(1, 1, 0, 0),
212 PadStrideInfo(1, 1, 0, 0),
213 PadStrideInfo(1, 1, 0, 0),
214 PadStrideInfo(1, 1, 0, 0),
Usama Arif881f2de2019-04-12 10:29:17 +0100215 PadStrideInfo(1, 1, 0, 0),
Abe Mbise7784c832018-05-31 16:48:41 +0100216 })),
217 framework::dataset::make("DepthMultiplier", { 1,
218 1,
219 3,
220 1,
221 1,
222 1,
223 2,
Usama Arif881f2de2019-04-12 10:29:17 +0100224 2,
Abe Mbise7784c832018-05-31 16:48:41 +0100225 })),
Usama Arif881f2de2019-04-12 10:29:17 +0100226 framework::dataset::make("Dilation", { Size2D(1U, 1U),
227 Size2D(1U, 1U),
228 Size2D(1U, 1U),
229 Size2D(1U, 1U),
230 Size2D(1U, 1U),
231 Size2D(1U, 1U),
232 Size2D(25U, 1U),
233 Size2D(0U, 1U),
Usama Arif881f2de2019-04-12 10:29:17 +0100234 })),
Sang-Hoon Parke4558b52020-10-01 10:13:07 +0100235 framework::dataset::make("Expected", { false, false, false, false, false, false, false, false})),
Usama Arif881f2de2019-04-12 10:29:17 +0100236 input_info, weights_info, biases_info, output_info, conv_info, depth_multiplier,dilation, expected)
Abe Mbise7784c832018-05-31 16:48:41 +0100237{
Usama Arif881f2de2019-04-12 10:29:17 +0100238 bool is_valid = bool(NEDepthwiseConvolutionLayer::validate(&input_info.clone()->set_is_resizable(false), &weights_info.clone()->set_is_resizable(false), &biases_info.clone()->set_is_resizable(false), &output_info.clone()->set_is_resizable(false), conv_info, depth_multiplier, ActivationLayerInfo(), dilation));
Abe Mbise7784c832018-05-31 16:48:41 +0100239 ARM_COMPUTE_EXPECT(is_valid == expected, framework::LogLevel::ERRORS);
240}
241// clang-format on
242// *INDENT-ON*
Manuel Bottini05069f02019-09-26 17:18:26 +0100243template <typename T>
244using NEDepthwiseConvolutionLayerFixture = DepthwiseConvolutionLayerValidationFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T>;
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000245template <typename T>
246using NEDepthwiseConvolutionLayerMixedDataLayoutFixture = DepthwiseConvolutionLayerValidationFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T, true>;
Milos Puzovica7077e92022-10-28 16:49:15 +0100247template <typename T>
248using NEDepthwiseConvolutionLayerVariableWeightsFixture = DepthwiseConvolutionLayerValidationFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T, false, false, true>;
Abe Mbise7784c832018-05-31 16:48:41 +0100249
Dmitry Savenkod7295b72017-11-20 22:00:08 +0700250TEST_SUITE(Float)
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100251TEST_SUITE(F32)
Michalis Spyroub7b31532017-11-23 12:10:21 +0000252TEST_SUITE(Generic)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000253FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
254 depth_multipliers),
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000255 framework::dataset::make("DataType", DataType::F32)),
Giorgio Arena68e29da2021-02-08 16:31:10 +0000256 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
257 ActivationFunctionsDataset))
Michalis Spyroub7b31532017-11-23 12:10:21 +0000258{
259 validate(Accessor(_target), _reference, tolerance_f32);
260}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000261FIXTURE_DATA_TEST_CASE_NEW(RunMixedDataLayout, NEDepthwiseConvolutionLayerMixedDataLayoutFixture<float>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
262 framework::dataset::make("DepthMultiplier", { 2 })),
263 framework::dataset::make("DataType", DataType::F32)),
264 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
265 framework::dataset::make("ActivationInfo", ActivationLayerInfo())))
266{
267 validate(Accessor(_target), _reference, tolerance_f32);
268}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000269FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(datasets::LargeDepthwiseConvolutionLayerDataset(),
270 large_depth_multipliers),
271 framework::dataset::make("DataType",
272 DataType::F32)),
273 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
274 ActivationFunctionsDataset))
Michalis Spyroub7b31532017-11-23 12:10:21 +0000275{
276 validate(Accessor(_target), _reference, tolerance_f32);
277}
Usama Arif881f2de2019-04-12 10:29:17 +0100278
279TEST_SUITE(Dilation)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000280FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::PRECOMMIT,
281 combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset(),
282 depth_multipliers),
283 framework::dataset::make("DataType",
284 DataType::F32)),
285 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
286 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100287{
288 validate(Accessor(_target), _reference, tolerance_f32);
289}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000290FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::NIGHTLY,
291 combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset(),
292 large_depth_multipliers),
293 framework::dataset::make("DataType",
294 DataType::F32)),
295 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
296 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100297{
298 validate(Accessor(_target), _reference, tolerance_f32);
299}
300TEST_SUITE_END() // Dilation
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100301TEST_SUITE_END() // Generic
Michalis Spyroub7b31532017-11-23 12:10:21 +0000302
Georgios Pinitas4c758512019-07-10 19:49:11 +0100303TEST_SUITE(W3x3)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000304FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset3x3(),
305 depth_multipliers),
306 framework::dataset::make("DataType",
307 DataType::F32)),
308 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
309 ActivationFunctionsDataset))
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100310{
311 validate(Accessor(_target), _reference, tolerance_f32);
312}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000313FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::NIGHTLY,
314 combine(combine(combine(combine(datasets::LargeDepthwiseConvolutionLayerDataset3x3(),
315 large_depth_multipliers),
316 framework::dataset::make("DataType",
317 DataType::F32)),
318 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
319 ActivationFunctionsDataset))
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100320{
321 validate(Accessor(_target), _reference, tolerance_f32);
322}
Usama Arif881f2de2019-04-12 10:29:17 +0100323TEST_SUITE(Dilation)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000324FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::PRECOMMIT,
325 combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset3x3(),
326 depth_multipliers),
327 framework::dataset::make("DataType",
328 DataType::F32)),
329 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
330 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100331{
332 validate(Accessor(_target), _reference, tolerance_f32);
333}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000334FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::NIGHTLY,
335 combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset3x3(),
336 large_depth_multipliers),
337 framework::dataset::make("DataType",
338 DataType::F32)),
339 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
340 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100341{
342 validate(Accessor(_target), _reference, tolerance_f32);
343}
344
345TEST_SUITE_END() // Dilation
Georgios Pinitas4c758512019-07-10 19:49:11 +0100346TEST_SUITE_END() // W3x3
Usama Arif881f2de2019-04-12 10:29:17 +0100347
Georgios Pinitas4c758512019-07-10 19:49:11 +0100348TEST_SUITE(Optimized)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000349FIXTURE_DATA_TEST_CASE_NEW(RunSmall3x3, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::PRECOMMIT,
350 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
351 framework::dataset::make("DepthMultiplier", 1)),
352 framework::dataset::make("DataType",
353 DataType::F32)),
354 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
355 ActivationFunctionsDataset))
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000356{
357 validate(Accessor(_target), _reference, tolerance_f32);
358}
Milos Puzovica7077e92022-10-28 16:49:15 +0100359FIXTURE_DATA_TEST_CASE_NEW(RunVariableWeightsSmall3x3, NEDepthwiseConvolutionLayerVariableWeightsFixture<float>, framework::DatasetMode::PRECOMMIT,
360 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
361 framework::dataset::make("DepthMultiplier", 1)),
362 framework::dataset::make("DataType",
363 DataType::F32)),
364 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
365 ActivationFunctionsDataset))
366{
367 validate(Accessor(_target), _reference, tolerance_f32);
368}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000369FIXTURE_DATA_TEST_CASE_NEW(RunMixedDataLayout3x3, NEDepthwiseConvolutionLayerMixedDataLayoutFixture<float>, framework::DatasetMode::PRECOMMIT,
370 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
371 framework::dataset::make("DepthMultiplier", 1)),
372 framework::dataset::make("DataType", DataType::F32)),
373 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
374 framework::dataset::make("ActivationInfo", ActivationLayerInfo())))
375{
376 validate(Accessor(_target), _reference, tolerance_f32);
377}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000378FIXTURE_DATA_TEST_CASE_NEW(RunSmall5x5, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::PRECOMMIT,
379 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset5x5(),
380 framework::dataset::make("DepthMultiplier", 1)),
381 framework::dataset::make("DataType",
382 DataType::F32)),
383 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
384 ActivationFunctionsDataset))
Georgios Pinitas4c758512019-07-10 19:49:11 +0100385{
386 validate(Accessor(_target), _reference, tolerance_f32);
387}
Milos Puzovica7077e92022-10-28 16:49:15 +0100388FIXTURE_DATA_TEST_CASE_NEW(RunVariableWeightsSmall5x5, NEDepthwiseConvolutionLayerVariableWeightsFixture<float>, framework::DatasetMode::PRECOMMIT,
389 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset5x5(),
390 framework::dataset::make("DepthMultiplier", 1)),
391 framework::dataset::make("DataType",
392 DataType::F32)),
393 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
394 ActivationFunctionsDataset))
395{
396 validate(Accessor(_target), _reference, tolerance_f32);
397}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000398FIXTURE_DATA_TEST_CASE_NEW(RunLarge3x3, NEDepthwiseConvolutionLayerFixture<float>, framework::DatasetMode::NIGHTLY,
399 combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(),
400 framework::dataset::make("DepthMultiplier", 1)),
401 framework::dataset::make("DataType",
402 DataType::F32)),
403 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
404 ActivationFunctionsDataset))
Georgios Pinitas4074c992018-01-30 18:13:46 +0000405{
406 validate(Accessor(_target), _reference, tolerance_f32);
407}
Milos Puzovica7077e92022-10-28 16:49:15 +0100408FIXTURE_DATA_TEST_CASE_NEW(RunVariableWeightsLarge3x3, NEDepthwiseConvolutionLayerVariableWeightsFixture<float>, framework::DatasetMode::NIGHTLY,
409 combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(),
410 framework::dataset::make("DepthMultiplier", 1)),
411 framework::dataset::make("DataType",
412 DataType::F32)),
413 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
414 ActivationFunctionsDataset))
415{
416 validate(Accessor(_target), _reference, tolerance_f32);
417}
Georgios Pinitas4c758512019-07-10 19:49:11 +0100418TEST_SUITE_END() // Optimized
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100419TEST_SUITE_END() // F32
Pablo Tello941cd702017-12-12 14:35:00 +0000420
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100421#ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
422TEST_SUITE(F16)
Georgios Pinitas8cffcd62018-11-16 17:11:50 +0000423TEST_SUITE(Generic)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000424FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
425 depth_multipliers),
426 framework::dataset::make("DataType",
427 DataType::F16)),
428 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
429 ActivationFunctionsDataset))
Georgios Pinitas8cffcd62018-11-16 17:11:50 +0000430{
431 validate(Accessor(_target), _reference, tolerance_f16, tolerance_num);
432}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000433FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::NIGHTLY, combine(combine(combine(combine(datasets::LargeDepthwiseConvolutionLayerDataset(),
434 large_depth_multipliers),
435 framework::dataset::make("DataType",
436 DataType::F16)),
437 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
438 ActivationFunctionsDataset))
Georgios Pinitas8cffcd62018-11-16 17:11:50 +0000439{
440 validate(Accessor(_target), _reference, tolerance_f16, tolerance_num);
441}
Usama Arif881f2de2019-04-12 10:29:17 +0100442
443TEST_SUITE(Dilation)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000444FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::PRECOMMIT,
445 combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset(),
446 depth_multipliers),
447 framework::dataset::make("DataType",
448 DataType::F16)),
449 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
450 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100451{
452 validate(Accessor(_target), _reference, tolerance_f16, tolerance_num);
453}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000454FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::NIGHTLY,
455 combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset(),
456 large_depth_multipliers),
457 framework::dataset::make("DataType",
458 DataType::F16)),
459 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
460 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100461{
462 validate(Accessor(_target), _reference, tolerance_f16, tolerance_num);
463}
464TEST_SUITE_END() // Dilation
465
Georgios Pinitas8cffcd62018-11-16 17:11:50 +0000466TEST_SUITE_END() // Generic
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100467template <typename T>
Manuel Bottini05069f02019-09-26 17:18:26 +0100468using NEDepthwiseConvolutionLayerFixture = DepthwiseConvolutionLayerValidationFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T>;
Georgios Pinitas4c758512019-07-10 19:49:11 +0100469TEST_SUITE(W3x3)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000470FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::PRECOMMIT, combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset3x3(),
471 depth_multipliers),
472 framework::dataset::make("DataType",
473 DataType::F16)),
474 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
475 ActivationFunctionsDataset))
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100476{
477 validate(Accessor(_target), _reference, tolerance_f16);
478}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000479FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::NIGHTLY,
480 combine(combine(combine(combine(datasets::LargeDepthwiseConvolutionLayerDataset3x3(),
481 large_depth_multipliers),
482 framework::dataset::make("DataType",
483 DataType::F16)),
484 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
485 ActivationFunctionsDataset))
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100486{
487 validate(Accessor(_target), _reference, tolerance_f16);
488}
Usama Arif881f2de2019-04-12 10:29:17 +0100489
490TEST_SUITE(Dilation)
491
Giorgio Arena68e29da2021-02-08 16:31:10 +0000492FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::PRECOMMIT,
493 combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset3x3(),
494 depth_multipliers),
495 framework::dataset::make("DataType",
496 DataType::F16)),
497 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
498 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100499{
500 validate(Accessor(_target), _reference, tolerance_f16);
501}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000502FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::NIGHTLY,
503 combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset3x3(),
504 large_depth_multipliers),
505 framework::dataset::make("DataType",
506 DataType::F16)),
507 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
508 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100509{
510 validate(Accessor(_target), _reference, tolerance_f16);
511}
512
513TEST_SUITE_END() // Dilation
Georgios Pinitas4c758512019-07-10 19:49:11 +0100514TEST_SUITE_END() // W3x3
Usama Arif881f2de2019-04-12 10:29:17 +0100515
Georgios Pinitas4c758512019-07-10 19:49:11 +0100516TEST_SUITE(Optimized)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000517FIXTURE_DATA_TEST_CASE_NEW(RunSmallW3x3, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::PRECOMMIT,
518 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
519 framework::dataset::make("DepthMultiplier", 1)),
520 framework::dataset::make("DataType",
521 DataType::F16)),
522 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
523 ActivationFunctionsDataset))
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000524{
525 validate(Accessor(_target), _reference, tolerance_f16);
526}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000527FIXTURE_DATA_TEST_CASE_NEW(RunSmallW5x5, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::PRECOMMIT,
528 combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset5x5(),
529 framework::dataset::make("DepthMultiplier", 1)),
530 framework::dataset::make("DataType",
531 DataType::F16)),
532 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
533 ActivationFunctionsDataset))
Georgios Pinitas4c758512019-07-10 19:49:11 +0100534{
535 validate(Accessor(_target), _reference, tolerance_f16);
536}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000537FIXTURE_DATA_TEST_CASE_NEW(RunLargeW3x3, NEDepthwiseConvolutionLayerFixture<half>, framework::DatasetMode::NIGHTLY,
538 combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(),
539 framework::dataset::make("DepthMultiplier", 1)),
540 framework::dataset::make("DataType",
541 DataType::F16)),
542 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
543 ActivationFunctionsDataset))
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100544{
545 validate(Accessor(_target), _reference, tolerance_f16);
546}
Georgios Pinitas4c758512019-07-10 19:49:11 +0100547TEST_SUITE_END() // Optimized
Georgios Pinitas20c246a2018-09-12 16:45:53 +0100548TEST_SUITE_END() // FP16
549#endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
550
551TEST_SUITE_END() // Float
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100552
Georgios Pinitasf72f9362018-01-12 16:29:45 +0000553template <typename T>
Giorgio Arenad93e2632019-10-15 11:09:33 +0100554using NEDepthwiseConvolutionLayerQuantizedFixture = DepthwiseConvolutionLayerValidationQuantizedFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T>;
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000555template <typename T>
556using NEDepthwiseConvolutionLayerQuantizedMixedDataLayoutFixture = DepthwiseConvolutionLayerValidationQuantizedFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T, true>;
Giorgio Arenad93e2632019-10-15 11:09:33 +0100557using NEDepthwiseConvolutionLayerQuantizedSymmetricPerChannelFixture = DepthwiseConvolutionLayerValidationQuantizedPerChannelFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, uint8_t, int8_t>;
Georgios Pinitasf72f9362018-01-12 16:29:45 +0000558
559TEST_SUITE(Quantized)
560TEST_SUITE(QASYMM8)
Georgios Pinitasd05dce42018-01-22 16:29:17 +0000561TEST_SUITE(Generic)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000562FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
563 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
564 depth_multipliers),
565 framework::dataset::make("DataType", DataType::QASYMM8)),
566 input_qinfo_dataset),
567 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
568 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
569 ActivationFunctionsDataset))
Georgios Pinitasf72f9362018-01-12 16:29:45 +0000570{
571 validate(Accessor(_target), _reference, tolerance_qasymm8);
572}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000573FIXTURE_DATA_TEST_CASE_NEW(RunMixedDataLayout, NEDepthwiseConvolutionLayerQuantizedMixedDataLayoutFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
574 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
575 framework::dataset::make("DepthMultiplier", { 2 })),
576 framework::dataset::make("DataType", DataType::QASYMM8)),
577 input_qinfo_dataset),
578 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
579 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
580 framework::dataset::make("ActivationInfo", ActivationLayerInfo())))
581{
582 validate(Accessor(_target), _reference, tolerance_qasymm8);
583}
Usama Arif881f2de2019-04-12 10:29:17 +0100584TEST_SUITE(Dilation)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000585FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
586 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset(),
587 depth_multipliers),
588 framework::dataset::make("DataType", DataType::QASYMM8)),
589 input_qinfo_dataset),
590 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.8f, 1) })),
591 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
592 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100593{
594 validate(Accessor(_target), _reference, tolerance_qasymm8);
595}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000596FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::NIGHTLY,
597 combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset(),
598 large_depth_multipliers),
599 framework::dataset::make("DataType", DataType::QASYMM8)),
600 input_qinfo_dataset),
601 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.9f, 11) })),
602 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
603 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100604{
605 validate(Accessor(_target), _reference, tolerance_qasymm8);
606}
Georgios Pinitas4c758512019-07-10 19:49:11 +0100607TEST_SUITE_END() // Dilation
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000608TEST_SUITE_END() // Generic
Giorgio Arena76572242018-04-04 17:44:26 +0100609TEST_SUITE(W3x3)
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000610FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000611 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset3x3(), depth_multipliers),
612 framework::dataset::make("DataType", DataType::QASYMM8)),
613 input_qinfo_dataset),
614 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
615 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
616 ActivationFunctionsDataset))
Giorgio Arena76572242018-04-04 17:44:26 +0100617{
618 validate(Accessor(_target), _reference, tolerance_qasymm8);
619}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000620FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::NIGHTLY,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000621 combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseConvolutionLayerDataset3x3(),
622 large_depth_multipliers),
623 framework::dataset::make("DataType", DataType::QASYMM8)),
624 input_qinfo_dataset),
625 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
626 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
627 ActivationFunctionsDataset))
Georgios Pinitasf72f9362018-01-12 16:29:45 +0000628{
629 validate(Accessor(_target), _reference, tolerance_qasymm8);
630}
Usama Arif881f2de2019-04-12 10:29:17 +0100631
632TEST_SUITE(Dilation)
633
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000634FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000635 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset3x3(), depth_multipliers),
636 framework::dataset::make("DataType", DataType::QASYMM8)),
637 input_qinfo_dataset),
638 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.7f, 10) })),
639 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
640 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100641{
642 validate(Accessor(_target), _reference, tolerance_qasymm8);
643}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000644FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::NIGHTLY,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000645 combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset3x3(),
646 large_depth_multipliers),
647 framework::dataset::make("DataType", DataType::QASYMM8)),
648 input_qinfo_dataset),
649 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
650 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
651 ActivationFunctionsDataset))
Usama Arif881f2de2019-04-12 10:29:17 +0100652{
653 validate(Accessor(_target), _reference, tolerance_qasymm8);
654}
655TEST_SUITE_END() // Dilation
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000656TEST_SUITE_END() // W3x3
Georgios Pinitas4c758512019-07-10 19:49:11 +0100657
658TEST_SUITE(Optimized)
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000659FIXTURE_DATA_TEST_CASE_NEW(RunSmall3x3, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000660 combine(combine(combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
661 framework::dataset::make("DepthMultiplier", 1)),
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000662 framework::dataset::make("DataType", DataType::QASYMM8)),
Giorgio Arena68e29da2021-02-08 16:31:10 +0000663 input_qinfo_dataset),
664 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
665 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
666 ActivationFunctionsDataset))
Georgios Pinitas4c758512019-07-10 19:49:11 +0100667{
668 validate(Accessor(_target), _reference, tolerance_qasymm8);
669}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000670FIXTURE_DATA_TEST_CASE_NEW(RunMixedDataLayout3x3, NEDepthwiseConvolutionLayerQuantizedMixedDataLayoutFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
671 combine(combine(combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
672 framework::dataset::make("DepthMultiplier", 1)),
673 framework::dataset::make("DataType", DataType::QASYMM8)),
674 input_qinfo_dataset),
675 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
676 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
677 framework::dataset::make("ActivationInfo", ActivationLayerInfo())))
678{
679 validate(Accessor(_target), _reference, tolerance_qasymm8);
680}
681FIXTURE_DATA_TEST_CASE_NEW(RunSmall5x5, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000682 combine(combine(combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset5x5(),
683 framework::dataset::make("DepthMultiplier", 1)),
684 framework::dataset::make("DataType",
685 DataType::QASYMM8)),
686 input_qinfo_dataset),
687 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
688 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
689 ActivationFunctionsDataset))
Georgios Pinitas4c758512019-07-10 19:49:11 +0100690{
691 validate(Accessor(_target), _reference, tolerance_qasymm8);
692}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000693FIXTURE_DATA_TEST_CASE_NEW(RunLarge3x3, NEDepthwiseConvolutionLayerQuantizedFixture<uint8_t>, framework::DatasetMode::NIGHTLY,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000694 combine(combine(combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(),
695 framework::dataset::make("DepthMultiplier", 1)),
696 framework::dataset::make("DataType",
697 DataType::QASYMM8)),
698 input_qinfo_dataset),
699 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
700 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
701 ActivationFunctionsDataset))
Georgios Pinitas4c758512019-07-10 19:49:11 +0100702{
703 validate(Accessor(_target), _reference, tolerance_qasymm8);
704}
705TEST_SUITE_END() // Optimized
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000706TEST_SUITE_END() // QASYMM8
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000707
708TEST_SUITE(QASYMM8_SIGNED)
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000709TEST_SUITE(Generic)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000710FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::PRECOMMIT,
711 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
712 depth_multipliers),
713 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
714 input_qinfo_dataset),
715 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
716 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
717 ActivationFunctionsDataset))
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000718{
719 validate(Accessor(_target), _reference, tolerance_qasymm8);
720}
721
722TEST_SUITE(Dilation)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000723FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::PRECOMMIT,
724 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset(),
725 depth_multipliers),
726 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
727 input_qinfo_dataset),
728 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.8f, 1) })),
729 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
730 ActivationFunctionsDataset))
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000731{
732 validate(Accessor(_target), _reference, tolerance_qasymm8);
733}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000734FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::NIGHTLY,
735 combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset(),
736 large_depth_multipliers),
737 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
738 input_qinfo_dataset),
739 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.9f, 11) })),
740 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
741 ActivationFunctionsDataset))
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000742{
743 validate(Accessor(_target), _reference, tolerance_qasymm8);
744}
745TEST_SUITE_END() // Dilation
746TEST_SUITE_END() // Generic
747
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000748TEST_SUITE(W3x3)
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000749FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000750 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset3x3(), depth_multipliers),
751 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
752 input_qinfo_dataset),
753 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
754 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
755 ActivationFunctionsDataset))
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000756{
757 validate(Accessor(_target), _reference, tolerance_qasymm8);
758}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000759FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::NIGHTLY,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000760 combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseConvolutionLayerDataset3x3(),
761 large_depth_multipliers),
762 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
763 input_qinfo_dataset),
764 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
765 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
766 ActivationFunctionsDataset))
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000767{
768 validate(Accessor(_target), _reference, tolerance_qasymm8);
769}
770
771TEST_SUITE(Dilation)
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000772FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000773 combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset3x3(), depth_multipliers),
774 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
775 input_qinfo_dataset),
776 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.7f, 10) })),
777 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
778 ActivationFunctionsDataset))
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000779{
780 validate(Accessor(_target), _reference, tolerance_qasymm8);
781}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000782FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::NIGHTLY,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000783 combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset3x3(),
784 large_depth_multipliers),
785 framework::dataset::make("DataType", DataType::QASYMM8_SIGNED)),
786 input_qinfo_dataset),
787 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
788 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
789 ActivationFunctionsDataset))
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000790{
791 validate(Accessor(_target), _reference, tolerance_qasymm8);
792}
793TEST_SUITE_END() // Dilation
794TEST_SUITE_END() // W3x3
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000795
796TEST_SUITE(Optimized)
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000797FIXTURE_DATA_TEST_CASE_NEW(RunSmall3x3, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000798 combine(combine(combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
799 framework::dataset::make("DepthMultiplier", 1)),
800 framework::dataset::make("DataType",
801 DataType::QASYMM8_SIGNED)),
802 input_qinfo_dataset),
803 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
804 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
805 ActivationFunctionsDataset))
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000806{
807 validate(Accessor(_target), _reference, tolerance_qasymm8);
808}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000809FIXTURE_DATA_TEST_CASE_NEW(RunSmall5x5, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::PRECOMMIT,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000810 combine(combine(combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset5x5(),
811 framework::dataset::make("DepthMultiplier", 1)),
812 framework::dataset::make("DataType",
813 DataType::QASYMM8_SIGNED)),
814 input_qinfo_dataset),
815 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
816 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
817 ActivationFunctionsDataset))
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000818{
819 validate(Accessor(_target), _reference, tolerance_qasymm8);
820}
Manuel Bottinica62c6f2021-03-23 11:50:34 +0000821FIXTURE_DATA_TEST_CASE_NEW(RunLarge3x3, NEDepthwiseConvolutionLayerQuantizedFixture<int8_t>, framework::DatasetMode::NIGHTLY,
Giorgio Arena68e29da2021-02-08 16:31:10 +0000822 combine(combine(combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(),
823 framework::dataset::make("DepthMultiplier", 1)),
824 framework::dataset::make("DataType",
825 DataType::QASYMM8_SIGNED)),
826 input_qinfo_dataset),
827 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 10) })),
828 framework::dataset::make("DataLayout", { DataLayout::NCHW })),
829 ActivationFunctionsDataset))
Michele Di Giorgio8c837ca2020-01-07 15:06:41 +0000830{
831 validate(Accessor(_target), _reference, tolerance_qasymm8);
832}
833TEST_SUITE_END() // Optimized
Michele Di Giorgio13ec5f02020-01-02 12:11:13 +0000834TEST_SUITE_END() // QASYMM8_SIGNED
835
Giorgio Arenad93e2632019-10-15 11:09:33 +0100836TEST_SUITE(QSYMM8_PER_CHANNEL)
837TEST_SUITE(Generic)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000838FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedSymmetricPerChannelFixture, framework::DatasetMode::PRECOMMIT,
839 combine(combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseConvolutionLayerDataset(),
840 depth_multipliers),
841 framework::dataset::make("InputDataType", DataType::QASYMM8)),
842 framework::dataset::make("WeightsDataType", DataType::QSYMM8_PER_CHANNEL)),
843 input_qinfo_dataset),
844 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
845 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
846 ActivationFunctionsDataset))
Giorgio Arenad93e2632019-10-15 11:09:33 +0100847{
848 validate(Accessor(_target), _reference, tolerance_qasymm8);
849}
850
851TEST_SUITE(Dilation)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000852FIXTURE_DATA_TEST_CASE_NEW(RunSmall, NEDepthwiseConvolutionLayerQuantizedSymmetricPerChannelFixture, framework::DatasetMode::PRECOMMIT,
853 combine(combine(combine(combine(combine(combine(combine(datasets::SmallDepthwiseDilatedConvolutionLayerDataset(),
854 depth_multipliers),
855 framework::dataset::make("InputDataType", DataType::QASYMM8)),
856 framework::dataset::make("WeightsDataType", DataType::QSYMM8_PER_CHANNEL)),
857 input_qinfo_dataset),
858 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
859 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
860 ActivationFunctionsDataset))
Giorgio Arenad93e2632019-10-15 11:09:33 +0100861{
862 validate(Accessor(_target), _reference, tolerance_qasymm8);
863}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000864FIXTURE_DATA_TEST_CASE_NEW(RunLarge, NEDepthwiseConvolutionLayerQuantizedSymmetricPerChannelFixture, framework::DatasetMode::NIGHTLY,
865 combine(combine(combine(combine(combine(combine(combine(datasets::LargeDepthwiseDilatedConvolutionLayerDataset(),
866 depth_multipliers),
867 framework::dataset::make("InputDataType", DataType::QASYMM8)),
868 framework::dataset::make("WeightsDataType", DataType::QSYMM8_PER_CHANNEL)),
869 input_qinfo_dataset),
870 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
871 framework::dataset::make("DataLayout", { DataLayout::NCHW, DataLayout::NHWC })),
872 ActivationFunctionsDataset))
Giorgio Arenad93e2632019-10-15 11:09:33 +0100873{
874 validate(Accessor(_target), _reference, tolerance_qasymm8);
875}
876TEST_SUITE_END() // Dilation
877TEST_SUITE_END() // Generic
Giuseppe Rossinif01201a2019-11-06 14:57:49 +0000878
879TEST_SUITE(Optimized)
Giorgio Arena68e29da2021-02-08 16:31:10 +0000880FIXTURE_DATA_TEST_CASE_NEW(RunSmall3x3, NEDepthwiseConvolutionLayerQuantizedSymmetricPerChannelFixture, framework::DatasetMode::PRECOMMIT,
881 combine(combine(combine(combine(combine(combine(combine(datasets::SmallOptimizedDepthwiseConvolutionLayerDataset3x3(),
882 framework::dataset::make("DepthMultiplier", 1)),
883 framework::dataset::make("InputDataType", DataType::QASYMM8)),
884 framework::dataset::make("WeightsDataType", DataType::QSYMM8_PER_CHANNEL)),
885 input_qinfo_dataset),
886 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
887 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
888 ActivationFunctionsDataset))
Giuseppe Rossinif01201a2019-11-06 14:57:49 +0000889{
890 validate(Accessor(_target), _reference, tolerance_qasymm8);
891}
Giorgio Arena68e29da2021-02-08 16:31:10 +0000892FIXTURE_DATA_TEST_CASE_NEW(RunLarge3x3, NEDepthwiseConvolutionLayerQuantizedSymmetricPerChannelFixture, framework::DatasetMode::NIGHTLY,
893 combine(combine(combine(combine(combine(combine(combine(datasets::LargeOptimizedDepthwiseConvolutionLayerDataset3x3(),
894 framework::dataset::make("DepthMultiplier", 1)),
895 framework::dataset::make("InputDataType", DataType::QASYMM8)),
896 framework::dataset::make("WeightsDataType", DataType::QSYMM8_PER_CHANNEL)),
897 input_qinfo_dataset),
898 framework::dataset::make("DstQuantizationInfo", { QuantizationInfo(0.5f, 4) })),
899 framework::dataset::make("DataLayout", { DataLayout::NHWC })),
900 ActivationFunctionsDataset))
Giuseppe Rossinif01201a2019-11-06 14:57:49 +0000901{
902 validate(Accessor(_target), _reference, tolerance_qasymm8);
903}
904TEST_SUITE_END() // Optimized
Giorgio Arenad93e2632019-10-15 11:09:33 +0100905TEST_SUITE_END() // QSYMM8_PER_CHANNEL
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000906TEST_SUITE_END() // Quantized
Georgios Pinitasf72f9362018-01-12 16:29:45 +0000907
Michalis Spyrouaeebe4a2019-01-09 14:21:03 +0000908TEST_SUITE_END() // DepthwiseConvLayer
Sheri Zhangac6499a2021-02-10 15:32:38 +0000909TEST_SUITE_END() // Neon
Michalis Spyrou7362f0d2017-10-18 17:58:22 +0100910} // namespace validation
911} // namespace test
912} // namespace arm_compute