31 #include "tests/datasets/DepthwiseConvolutionLayerDataset.h"
32 #include "tests/datasets/DilatedDepthwiseConvolutionLayerDataset.h"
37 #include "tests/validation/fixtures/DepthwiseConvolutionLayerFixture.h"
51 constexpr AbsoluteTolerance<uint8_t> tolerance_qasymm8(1);
52 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
55 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
63 ActivationLayerInfo(),
64 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU)
67 const auto ActivationFunctionsDatasetNightly =
make(
"ActivationInfo",
69 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 0.5f),
70 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 0.5f, -0.5f),
71 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LEAKY_RELU, 0.1f),
72 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::SOFT_RELU),
73 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::ELU),
74 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::ABS),
75 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LOGISTIC),
76 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::TANH),
77 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::SQUARE),
78 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::SWISH),
79 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::HARD_SWISH),
80 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LINEAR, 2.f, 1.f),
82 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::GELU),
88 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::BOUNDED_RELU, 0.5f),
89 ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::LU_BOUNDED_RELU, 0.5f, -0.5f),
92 const auto input_qinfo_dataset =
make(
"InputQInfo",
94 QuantizationInfo(0.3f, 10),
95 QuantizationInfo(2.2f, 10),
153 make(
"ConvInfo", { PadStrideInfo(1, 1, 0, 0),
154 PadStrideInfo(1, 1, 0, 0),
155 PadStrideInfo(1, 1, 0, 0),
156 PadStrideInfo(1, 1, 0, 0),
157 PadStrideInfo(4, 1, 0, 0),
158 PadStrideInfo(1, 1, 0, 0),
159 PadStrideInfo(1, 1, 0, 0),
160 PadStrideInfo(1, 1, 0, 0),
161 PadStrideInfo(1, 1, 0, 0),
162 PadStrideInfo(1, 1, 0, 0),
163 PadStrideInfo(1, 1, 0, 0),
165 make(
"DepthMultiplier", { 1,
177 make(
"Dilation", { Size2D(1U, 1U),
189 make(
"Expected", {
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true })),
234 make(
"ConvInfo", { PadStrideInfo(1, 1, 0, 0),
235 PadStrideInfo(1, 1, 0, 0),
236 PadStrideInfo(1, 1, 0, 0),
237 PadStrideInfo(1, 1, 0, 0),
238 PadStrideInfo(1, 1, 0, 0),
239 PadStrideInfo(1, 1, 0, 0),
240 PadStrideInfo(1, 1, 0, 0),
241 PadStrideInfo(1, 1, 0, 0),
243 make(
"DepthMultiplier", { 1,
252 make(
"Dilation", { Size2D(1U, 1U),
261 make(
"Expected", {
false,
false,
false,
false,
false,
false,
false,
false})),
269 template <
typename T>
271 template <
typename T>
273 template <
typename T>
285 make("DepthMultiplier", { 5 }),
288 ActivationFunctionsDatasetNightly))
303 make(
"DepthMultiplier", { 2 })),
390 make("DepthMultiplier", 1)),
400 make(
"DepthMultiplier", 1)),
410 make(
"DepthMultiplier", 1)),
419 make(
"DepthMultiplier", 1)),
429 make(
"DepthMultiplier", 1)),
439 make(
"DepthMultiplier", 1)),
449 make(
"DepthMultiplier", 1)),
460 #ifdef __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
465 make(
"In", TensorShape(33U, 27U, 11U, 3U)),
466 make(
"Weights", Size2D(3U, 4U)),
467 make(
"Info", PadStrideInfo(1, 2, 0, 1)),
468 make(
"Dilation", Size2D(2U, 2U)),
469 make(
"DepthMultiplier", { 5 }),
472 ActivationFunctionsDatasetNightly))
492 make(
"ActivationInfo", { ActivationLayerInfo() })))
512 make(
"ActivationInfo", { ActivationLayerInfo() })))
519 template <typename T>
537 make(
"ActivationInfo", { ActivationLayerInfo() })))
560 make(
"ActivationInfo", { ActivationLayerInfo() })))
571 make("DepthMultiplier", 1)),
581 make(
"DepthMultiplier", 1)),
591 make(
"DepthMultiplier", 1)),
595 make(
"ActivationInfo", { ActivationLayerInfo() })))
601 #endif // __ARM_FEATURE_FP16_VECTOR_ARITHMETIC
605 template <typename T>
606 using NEDepthwiseConvolutionLayerQuantizedFixture = DepthwiseConvolutionLayerValidationQuantizedFixture<Tensor, Accessor, NEDepthwiseConvolutionLayer, T>;
607 template <typename T>
620 make("DepthMultiplier", { 5 }),
627 validate(Accessor(_target), _reference, tolerance_qasymm8);
635 input_qinfo_dataset),
640 validate(Accessor(_target), _reference, tolerance_qasymm8);
644 make(
"DepthMultiplier", { 2 })),
646 input_qinfo_dataset),
649 make(
"ActivationInfo", ActivationLayerInfo())))
651 validate(Accessor(_target), _reference, tolerance_qasymm8);
658 input_qinfo_dataset),
663 validate(Accessor(_target), _reference, tolerance_qasymm8);
669 input_qinfo_dataset),
674 validate(Accessor(_target), _reference, tolerance_qasymm8);
682 input_qinfo_dataset),
687 validate(Accessor(_target), _reference, tolerance_qasymm8);
693 input_qinfo_dataset),
698 validate(Accessor(_target), _reference, tolerance_qasymm8);
706 input_qinfo_dataset),
711 validate(Accessor(_target), _reference, tolerance_qasymm8);
717 input_qinfo_dataset),
722 validate(Accessor(_target), _reference, tolerance_qasymm8);
730 make("DepthMultiplier", 1)),
732 input_qinfo_dataset),
737 validate(Accessor(_target), _reference, tolerance_qasymm8);
741 make(
"DepthMultiplier", 1)),
743 input_qinfo_dataset),
748 validate(Accessor(_target), _reference, tolerance_qasymm8);
752 make(
"DepthMultiplier", 1)),
755 input_qinfo_dataset),
760 validate(Accessor(_target), _reference, tolerance_qasymm8);
764 make(
"DepthMultiplier", 1)),
767 input_qinfo_dataset),
772 validate(Accessor(_target), _reference, tolerance_qasymm8);
785 make("DepthMultiplier", { 5 }),
792 validate(Accessor(_target), _reference, tolerance_qasymm8);
800 input_qinfo_dataset),
805 validate(Accessor(_target), _reference, tolerance_qasymm8);
813 input_qinfo_dataset),
818 validate(Accessor(_target), _reference, tolerance_qasymm8);
824 input_qinfo_dataset),
829 validate(Accessor(_target), _reference, tolerance_qasymm8);
838 input_qinfo_dataset),
843 validate(Accessor(_target), _reference, tolerance_qasymm8);
849 input_qinfo_dataset),
854 validate(Accessor(_target), _reference, tolerance_qasymm8);
861 input_qinfo_dataset),
866 validate(Accessor(_target), _reference, tolerance_qasymm8);
872 input_qinfo_dataset),
877 validate(Accessor(_target), _reference, tolerance_qasymm8);
885 make("DepthMultiplier", 1)),
888 input_qinfo_dataset),
893 validate(Accessor(_target), _reference, tolerance_qasymm8);
897 make(
"DepthMultiplier", 1)),
900 input_qinfo_dataset),
905 validate(Accessor(_target), _reference, tolerance_qasymm8);
909 make(
"DepthMultiplier", 1)),
912 input_qinfo_dataset),
917 validate(Accessor(_target), _reference, tolerance_qasymm8);
930 make("DepthMultiplier", { 5 }),
938 validate(Accessor(_target), _reference, tolerance_qasymm8);
947 input_qinfo_dataset),
952 validate(Accessor(_target), _reference, tolerance_qasymm8);
961 input_qinfo_dataset),
966 validate(Accessor(_target), _reference, tolerance_qasymm8);
973 input_qinfo_dataset),
978 validate(Accessor(_target), _reference, tolerance_qasymm8);
986 make("DepthMultiplier", 1)),
989 input_qinfo_dataset),
994 validate(Accessor(_target), _reference, tolerance_qasymm8);
998 make(
"DepthMultiplier", 1)),
1001 input_qinfo_dataset),
1006 validate(Accessor(_target), _reference, tolerance_qasymm8);