aboutsummaryrefslogtreecommitdiff
path: root/tests/datasets/system_tests/googlenet
diff options
context:
space:
mode:
authorMoritz Pflanzer <moritz.pflanzer@arm.com>2017-09-01 20:41:12 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:35:24 +0000
commita09de0c8b2ed0f1481502d3b023375609362d9e3 (patch)
treee34b56d9ca69b025d7d9b943cc4df59cd458f6cb /tests/datasets/system_tests/googlenet
parent5280071b336d53aff94ca3a6c70ebbe6bf03f4c3 (diff)
downloadComputeLibrary-a09de0c8b2ed0f1481502d3b023375609362d9e3.tar.gz
COMPMID-415: Rename and move tests
The boost validation is now "standalone" in validation_old and builds as arm_compute_validation_old. The new validation builds now as arm_compute_validation. Change-Id: Ib93ba848a25680ac60afb92b461d574a0757150d Reviewed-on: http://mpd-gerrit.cambridge.arm.com/86187 Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'tests/datasets/system_tests/googlenet')
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h123
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h237
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h51
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1GEMMDataset.h113
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h61
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h71
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h101
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h94
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h184
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h51
-rw-r--r--tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h65
11 files changed, 1151 insertions, 0 deletions
diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h
new file mode 100644
index 0000000000..dc4ffe4e4e
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ActivationLayerDataset.h
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_ACTIVATION_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_ACTIVATION_LAYER_DATASET
+
+#include "tests/framework/datasets/Datasets.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV1ActivationLayerDataset final : public
+ framework::dataset::CartesianProductDataset<framework::dataset::InitializerListDataset<TensorShape>, framework::dataset::SingletonDataset<ActivationLayerInfo>>
+{
+public:
+ GoogLeNetInceptionV1ActivationLayerDataset()
+ : CartesianProductDataset
+ {
+ framework::dataset::make("Shape", { // conv1/relu_7x7
+ TensorShape(112U, 112U, 64U),
+ // conv2/relu_3x3_reduce
+ TensorShape(56U, 56U, 64U),
+ // conv2/relu_3x3
+ TensorShape(56U, 56U, 192U),
+ // inception_3a/relu_1x1, inception_3b/relu_pool_proj
+ TensorShape(28U, 28U, 64U),
+ // inception_3a/relu_3x3_reduce, inception_3b/relu_5x5
+ TensorShape(28U, 28U, 96U),
+ // inception_3a/relu_3x3, inception_3b/relu_1x1, inception_3b/relu_3x3_reduce
+ TensorShape(28U, 28U, 128U),
+ // inception_3a/relu_5x5_reduce
+ TensorShape(28U, 28U, 16U),
+ // inception_3a/relu_5x5, inception_3a/relu_pool_proj, inception_3b/relu_5x5_reduce
+ TensorShape(28U, 28U, 32U),
+ // inception_3b/relu_3x3
+ TensorShape(28U, 28U, 192U),
+ // inception_4a/relu_1x1
+ TensorShape(14U, 14U, 192U),
+ // inception_4a/relu_3x3_reduce
+ TensorShape(14U, 14U, 96U),
+ // inception_4a/relu_3x3
+ TensorShape(14U, 14U, 208U),
+ // inception_4a/relu_5x5_reduce
+ TensorShape(14U, 14U, 16U),
+ // inception_4a/relu_5x5
+ TensorShape(14U, 14U, 48U),
+ // inception_4a/relu_pool_proj, inception_4b/relu_5x5, inception_4b/relu_pool_proj, inception_4c/relu_5x5, inception_4c/relu_pool_proj, inception_4d/relu_5x5, inception_4d/relu_pool_proj
+ TensorShape(14U, 14U, 64U),
+ // inception_4b/relu_1x1, inception_4e/relu_3x3_reduce
+ TensorShape(14U, 14U, 160U),
+ // inception_4b/relu_3x3_reduce, inception_4d/relu_1x1
+ TensorShape(14U, 14U, 112U),
+ // inception_4b/relu_3x3
+ TensorShape(14U, 14U, 224U),
+ // inception_4b/relu_5x5_reduce, inception_4c/relu_5x5_reduce
+ TensorShape(14U, 14U, 24U),
+ // inception_4c/relu_1x1, inception_4c/relu_3x3_reduce, inception_4e/relu_5x5, inception_4e/relu_pool_proj
+ TensorShape(14U, 14U, 128U),
+ // inception_4c/relu_3x3, inception_4e/relu_1x1
+ TensorShape(14U, 14U, 256U),
+ // inception_4d/relu_3x3_reduce
+ TensorShape(14U, 14U, 144U),
+ // inception_4d/relu_3x3
+ TensorShape(14U, 14U, 288U),
+ // inception_4d/relu_5x5_reduce, inception_4e/relu_5x5_reduce
+ TensorShape(14U, 14U, 32U),
+ // inception_4e/relu_3x3
+ TensorShape(14U, 14U, 320U),
+ // inception_5a/relu_1x1
+ TensorShape(7U, 7U, 256U),
+ // inception_5a/relu_3x3_reduce
+ TensorShape(7U, 7U, 160U),
+ // inception_5a/relu_3x3
+ TensorShape(7U, 7U, 320U),
+ // inception_5a/relu_5x5_reduce
+ TensorShape(7U, 7U, 32U),
+ // inception_5a/relu_5x5, inception_5a/relu_pool_proj, inception_5b/relu_5x5, inception_5b/relu_pool_proj
+ TensorShape(7U, 7U, 128U),
+ // inception_5b/relu_1x1, inception_5b/relu_3x3
+ TensorShape(7U, 7U, 384U),
+ // inception_5b/relu_3x3_reduce
+ TensorShape(7U, 7U, 192U),
+ // inception_5b/relu_5x5_reduce
+ TensorShape(7U, 7U, 48U) }),
+ framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
+ }
+ {
+ }
+ GoogLeNetInceptionV1ActivationLayerDataset(GoogLeNetInceptionV1ActivationLayerDataset &&) = default;
+ ~GoogLeNetInceptionV1ActivationLayerDataset() = default;
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_ACTIVATION_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h
new file mode 100644
index 0000000000..a4002d124d
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1ConvolutionLayerDataset.h
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_CONVOLUTION_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_CONVOLUTION_LAYER_DATASET
+
+#include "tests/datasets/ConvolutionLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV1ConvolutionLayerDataset final : public ConvolutionLayerDataset
+{
+public:
+ // GoogLeNetInceptionV1 inception v1 dataset
+ GoogLeNetInceptionV1ConvolutionLayerDataset()
+ {
+ // conv1/7x7_s2
+ add_config(TensorShape(224U, 224U, 3U), TensorShape(7U, 7U, 3U, 64U), TensorShape(64U), TensorShape(112U, 112U, 64U), PadStrideInfo(2, 2, 3, 3));
+ // conv2/3x3_reduce
+ add_config(TensorShape(56U, 56U, 64U), TensorShape(1U, 1U, 64U, 64U), TensorShape(64U), TensorShape(56U, 56U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // conv2/3x3
+ add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1));
+ // inception_3a/1x1
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3a/3x3_reduce
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3a/3x3
+ add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1));
+ // inception_3a/5x5_reduce
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 16U), TensorShape(16U), TensorShape(28U, 28U, 16U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3a/5x5
+ add_config(TensorShape(28U, 28U, 16U), TensorShape(5U, 5U, 16U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 2, 2));
+ // inception_3a/pool_proj
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3b/1x1, inception_3b/3x3_reduce
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3b/3x3
+ add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1));
+ // inception_3b/5x5_reduce
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3b/5x5
+ add_config(TensorShape(28U, 28U, 32U), TensorShape(5U, 5U, 32U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 2, 2));
+ // inception_3b/pool_proj
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/1x1
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 192U), TensorShape(192U), TensorShape(14U, 14U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/3x3_reduce
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 96U), TensorShape(96U), TensorShape(14U, 14U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/3x3
+ add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4a/5x5_reduce
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 16U), TensorShape(16U), TensorShape(14U, 14U, 16U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/5x5
+ add_config(TensorShape(14U, 14U, 16U), TensorShape(5U, 5U, 16U, 48U), TensorShape(48U), TensorShape(14U, 14U, 48U), PadStrideInfo(1, 1, 2, 2));
+ // inception_4a/pool_proj
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/1x1
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/3x3_reduce, inception_4d/1x1
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 112U), TensorShape(112U), TensorShape(14U, 14U, 112U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/3x3
+ add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4b/5x5_reduce, inception_4c/5x5_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 24U), TensorShape(24U), TensorShape(14U, 14U, 24U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/5x5, inception_4c/5x5
+ add_config(TensorShape(14U, 14U, 24U), TensorShape(5U, 5U, 24U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2));
+ // inception_4b/pool_proj, inception_4c/pool_proj, inception_4d/pool_proj
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4c/1x1, inception_4c/3x3_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4c/3x3
+ add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4d/3x3_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 144U), TensorShape(144U), TensorShape(14U, 14U, 144U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4d/3x3
+ add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4d/5x5_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4d/5x5
+ add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 2, 2));
+ // inception_4e/1x1
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/3x3_reduce
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/3x3
+ add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4e/5x5_reduce
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/5x5
+ add_config(TensorShape(14U, 14U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 2, 2));
+ // inception_4e/pool_proj
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/1x1
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 256U), TensorShape(256U), TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/3x3_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 160U), TensorShape(160U), TensorShape(7U, 7U, 160U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/3x3
+ add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1));
+ // inception_5a/5x5_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 32U), TensorShape(32U), TensorShape(7U, 7U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/5x5
+ add_config(TensorShape(7U, 7U, 32U), TensorShape(5U, 5U, 32U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2));
+ // inception_5a/pool_proj, inception_5b/pool_proj
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/1x1
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/3x3_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 192U), TensorShape(192U), TensorShape(7U, 7U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/3x3
+ add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1));
+ // inception_5b/5x5_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 48U), TensorShape(48U), TensorShape(7U, 7U, 48U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/5x5
+ add_config(TensorShape(7U, 7U, 48U), TensorShape(5U, 5U, 48U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 2, 2));
+ }
+};
+
+class GoogLeNetInceptionV1DirectConvolutionLayerDataset final : public ConvolutionLayerDataset
+{
+public:
+ // subset of GoogLeNetInceptionV1 inception v1 dataset
+ GoogLeNetInceptionV1DirectConvolutionLayerDataset()
+ {
+ // conv2/3x3_reduce
+ add_config(TensorShape(56U, 56U, 64U), TensorShape(1U, 1U, 64U, 64U), TensorShape(64U), TensorShape(56U, 56U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // conv2/3x3
+ add_config(TensorShape(56U, 56U, 64U), TensorShape(3U, 3U, 64U, 192U), TensorShape(192U), TensorShape(56U, 56U, 192U), PadStrideInfo(1, 1, 1, 1));
+ // inception_3a/1x1
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3a/3x3_reduce
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 96U), TensorShape(96U), TensorShape(28U, 28U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3a/3x3
+ add_config(TensorShape(28U, 28U, 96U), TensorShape(3U, 3U, 96U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 1, 1));
+ // inception_3a/5x5_reduce
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 16U), TensorShape(16U), TensorShape(28U, 28U, 16U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3a/pool_proj
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(1U, 1U, 192U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3b/1x1, inception_3b/3x3_reduce
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 128U), TensorShape(128U), TensorShape(28U, 28U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3b/3x3
+ add_config(TensorShape(28U, 28U, 128U), TensorShape(3U, 3U, 128U, 192U), TensorShape(192U), TensorShape(28U, 28U, 192U), PadStrideInfo(1, 1, 1, 1));
+ // inception_3b/5x5_reduce
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 32U), TensorShape(32U), TensorShape(28U, 28U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_3b/pool_proj
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(1U, 1U, 256U, 64U), TensorShape(64U), TensorShape(28U, 28U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/1x1
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 192U), TensorShape(192U), TensorShape(14U, 14U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/3x3_reduce
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 96U), TensorShape(96U), TensorShape(14U, 14U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4a/3x3
+ add_config(TensorShape(14U, 14U, 96U), TensorShape(3U, 3U, 96U, 208U), TensorShape(208U), TensorShape(14U, 14U, 208U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4a/pool_proj
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(1U, 1U, 480U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/1x1
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/3x3_reduce, inception_4d/1x1
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 112U), TensorShape(112U), TensorShape(14U, 14U, 112U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/3x3
+ add_config(TensorShape(14U, 14U, 112U), TensorShape(3U, 3U, 112U, 224U), TensorShape(224U), TensorShape(14U, 14U, 224U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4b/5x5_reduce, inception_4c/5x5_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 24U), TensorShape(24U), TensorShape(14U, 14U, 24U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4b/pool_proj, inception_4c/pool_proj, inception_4d/pool_proj
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 64U), TensorShape(64U), TensorShape(14U, 14U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4c/1x1, inception_4c/3x3_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4c/3x3
+ add_config(TensorShape(14U, 14U, 128U), TensorShape(3U, 3U, 128U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4d/3x3_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 144U), TensorShape(144U), TensorShape(14U, 14U, 144U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4d/3x3
+ add_config(TensorShape(14U, 14U, 144U), TensorShape(3U, 3U, 144U, 288U), TensorShape(288U), TensorShape(14U, 14U, 288U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4d/5x5_reduce
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(1U, 1U, 512U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/1x1
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 256U), TensorShape(256U), TensorShape(14U, 14U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/3x3_reduce
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 160U), TensorShape(160U), TensorShape(14U, 14U, 160U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/3x3
+ add_config(TensorShape(14U, 14U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(14U, 14U, 320U), PadStrideInfo(1, 1, 1, 1));
+ // inception_4e/5x5_reduce
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 32U), TensorShape(32U), TensorShape(14U, 14U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_4e/pool_proj
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(1U, 1U, 528U, 128U), TensorShape(128U), TensorShape(14U, 14U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/1x1
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 256U), TensorShape(256U), TensorShape(7U, 7U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/3x3_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 160U), TensorShape(160U), TensorShape(7U, 7U, 160U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/3x3
+ add_config(TensorShape(7U, 7U, 160U), TensorShape(3U, 3U, 160U, 320U), TensorShape(320U), TensorShape(7U, 7U, 320U), PadStrideInfo(1, 1, 1, 1));
+ // inception_5a/5x5_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 32U), TensorShape(32U), TensorShape(7U, 7U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5a/pool_proj, inception_5b/pool_proj
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 128U), TensorShape(128U), TensorShape(7U, 7U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/1x1
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/3x3_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 192U), TensorShape(192U), TensorShape(7U, 7U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // inception_5b/3x3
+ add_config(TensorShape(7U, 7U, 192U), TensorShape(3U, 3U, 192U, 384U), TensorShape(384U), TensorShape(7U, 7U, 384U), PadStrideInfo(1, 1, 1, 1));
+ // inception_5b/5x5_reduce
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(1U, 1U, 832U, 48U), TensorShape(48U), TensorShape(7U, 7U, 48U), PadStrideInfo(1, 1, 0, 0));
+ }
+};
+
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_CONVOLUTION_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h
new file mode 100644
index 0000000000..80a3473bc7
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1FullyConnectedLayerDataset.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_FULLYCONNECTED_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_FULLYCONNECTED_LAYER_DATASET
+
+#include "tests/datasets/FullyConnectedLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV1FullyConnectedLayerDataset final : public FullyConnectedLayerDataset
+{
+public:
+ GoogLeNetInceptionV1FullyConnectedLayerDataset()
+ {
+ add_config(TensorShape(1024U), TensorShape(1024U, 1000U), TensorShape(1000U), TensorShape(1000U));
+ }
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_FULLYCONNECTED_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1GEMMDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1GEMMDataset.h
new file mode 100644
index 0000000000..806ca9378a
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1GEMMDataset.h
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_GEMM_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_GEMM_DATASET
+
+#include "tests/datasets/GEMMDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV1GEMMDataset final : public GEMMDataset
+{
+public:
+ GoogLeNetInceptionV1GEMMDataset()
+ {
+ add_config(TensorShape(147U, 12544U), TensorShape(64U, 147U), TensorShape(64U, 12544U), TensorShape(64U, 12544U), 1.0f, 0.0f);
+ add_config(TensorShape(64U, 3136U), TensorShape(64U, 64U), TensorShape(64U, 3136U), TensorShape(64U, 3136U), 1.0f, 0.0f);
+ add_config(TensorShape(576U, 3136U), TensorShape(192U, 576U), TensorShape(192U, 3136U), TensorShape(192U, 3136U), 1.0f, 0.0f);
+ add_config(TensorShape(192U, 784U), TensorShape(64U, 192U), TensorShape(64U, 784U), TensorShape(64U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(192U, 784U), TensorShape(96U, 192U), TensorShape(96U, 784U), TensorShape(96U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(864U, 784U), TensorShape(128U, 864U), TensorShape(128U, 784U), TensorShape(128U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(192U, 784U), TensorShape(16U, 192U), TensorShape(16U, 784U), TensorShape(16U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(400U, 784U), TensorShape(32U, 400U), TensorShape(32U, 784U), TensorShape(32U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(192U, 784U), TensorShape(32U, 192U), TensorShape(32U, 784U), TensorShape(32U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(256U, 784U), TensorShape(128U, 256U), TensorShape(128U, 784U), TensorShape(128U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(256U, 784U), TensorShape(128U, 256U), TensorShape(128U, 784U), TensorShape(128U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(1152U, 784U), TensorShape(192U, 1152U), TensorShape(192U, 784U), TensorShape(192U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(256U, 784U), TensorShape(32U, 256U), TensorShape(32U, 784U), TensorShape(32U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(800U, 784U), TensorShape(96U, 800U), TensorShape(96U, 784U), TensorShape(96U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(256U, 784U), TensorShape(64U, 256U), TensorShape(64U, 784U), TensorShape(64U, 784U), 1.0f, 0.0f);
+ add_config(TensorShape(480U, 196U), TensorShape(192U, 480U), TensorShape(192U, 196U), TensorShape(192U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(480U, 196U), TensorShape(96U, 480U), TensorShape(96U, 196U), TensorShape(96U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(864U, 196U), TensorShape(204U, 864U), TensorShape(204U, 196U), TensorShape(204U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(480U, 196U), TensorShape(16U, 480U), TensorShape(16U, 196U), TensorShape(16U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(400U, 196U), TensorShape(48U, 400U), TensorShape(48U, 196U), TensorShape(48U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(480U, 196U), TensorShape(64U, 480U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(508U, 196U), TensorShape(160U, 508U), TensorShape(160U, 196U), TensorShape(160U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(508U, 196U), TensorShape(112U, 508U), TensorShape(112U, 196U), TensorShape(112U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(1008U, 196U), TensorShape(224U, 1008U), TensorShape(224U, 196U), TensorShape(224U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(508U, 196U), TensorShape(24U, 508U), TensorShape(24U, 196U), TensorShape(24U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(600U, 196U), TensorShape(64U, 600U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(508U, 196U), TensorShape(64U, 508U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(128U, 512U), TensorShape(128U, 196U), TensorShape(128U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(128U, 512U), TensorShape(128U, 196U), TensorShape(128U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(1152U, 196U), TensorShape(256U, 1152U), TensorShape(256U, 196U), TensorShape(256U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(24U, 512U), TensorShape(24U, 196U), TensorShape(24U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(600U, 196U), TensorShape(64U, 600U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(64U, 512U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(112U, 512U), TensorShape(112U, 196U), TensorShape(112U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(144U, 512U), TensorShape(144U, 196U), TensorShape(144U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(1296U, 196U), TensorShape(288U, 1296U), TensorShape(288U, 196U), TensorShape(288U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(32U, 512U), TensorShape(32U, 196U), TensorShape(32U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(800U, 196U), TensorShape(64U, 800U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(512U, 196U), TensorShape(64U, 512U), TensorShape(64U, 196U), TensorShape(64U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(528U, 196U), TensorShape(256U, 528U), TensorShape(256U, 196U), TensorShape(256U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(528U, 196U), TensorShape(160U, 528U), TensorShape(160U, 196U), TensorShape(160U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(1440U, 196U), TensorShape(320U, 1440U), TensorShape(320U, 196U), TensorShape(320U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(528U, 196U), TensorShape(32U, 528U), TensorShape(32U, 196U), TensorShape(32U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(800U, 196U), TensorShape(128U, 800U), TensorShape(128U, 196U), TensorShape(128U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(528U, 196U), TensorShape(128U, 528U), TensorShape(128U, 196U), TensorShape(128U, 196U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(256U, 832U), TensorShape(256U, 49U), TensorShape(256U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(160U, 832U), TensorShape(160U, 49U), TensorShape(160U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(1440U, 49U), TensorShape(320U, 1440U), TensorShape(320U, 49U), TensorShape(320U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(48U, 832U), TensorShape(48U, 49U), TensorShape(48U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(1200U, 49U), TensorShape(128U, 1200U), TensorShape(128U, 49U), TensorShape(128U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(128U, 832U), TensorShape(128U, 49U), TensorShape(128U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(384U, 832U), TensorShape(384U, 49U), TensorShape(384U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(192U, 832U), TensorShape(192U, 49U), TensorShape(192U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(1728U, 49U), TensorShape(384U, 1728U), TensorShape(384U, 49U), TensorShape(384U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(48U, 832U), TensorShape(48U, 49U), TensorShape(48U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(1200U, 49U), TensorShape(128U, 1200U), TensorShape(128U, 49U), TensorShape(128U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(832U, 49U), TensorShape(128U, 832U), TensorShape(128U, 49U), TensorShape(128U, 49U), 1.0f, 0.0f);
+ add_config(TensorShape(508U, 16U), TensorShape(128U, 508U), TensorShape(128U, 16U), TensorShape(128U, 16U), 1.0f, 0.0f);
+ add_config(TensorShape(2048U, 1U), TensorShape(1024U, 2048U), TensorShape(1024U, 1U), TensorShape(1024U, 1U), 1.0f, 0.0f);
+ add_config(TensorShape(1024U, 1U), TensorShape(1008U, 1024U), TensorShape(1008U, 1U), TensorShape(1008U, 1U), 1.0f, 0.0f);
+ add_config(TensorShape(528U, 16U), TensorShape(128U, 528U), TensorShape(128U, 16U), TensorShape(128U, 16U), 1.0f, 0.0f);
+ add_config(TensorShape(2048U, 1U), TensorShape(1024U, 2048U), TensorShape(1024U, 1U), TensorShape(1024U, 1U), 1.0f, 0.0f);
+ add_config(TensorShape(1024U, 1U), TensorShape(1008U, 1024U), TensorShape(1008U, 1U), TensorShape(1008U, 1U), 1.0f, 0.0f);
+ add_config(TensorShape(1024U, 1U), TensorShape(1008U, 1024U), TensorShape(1008U, 1U), TensorShape(1008U, 1U), 1.0f, 0.0f);
+ }
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_GEMM_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h
new file mode 100644
index 0000000000..d8fd061b66
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1NormalizationLayerDataset.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_NORMALIZATION_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_NORMALIZATION_LAYER_DATASET
+
+#include "tests/framework/datasets/Datasets.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV1NormalizationLayerDataset final : public
+ framework::dataset::CartesianProductDataset<framework::dataset::InitializerListDataset<TensorShape>, framework::dataset::SingletonDataset<NormalizationLayerInfo>>
+{
+public:
+ GoogLeNetInceptionV1NormalizationLayerDataset()
+ : CartesianProductDataset
+ {
+ framework::dataset::make("Shape", { // conv2/norm2
+ TensorShape(56U, 56U, 192U),
+ // pool1/norm1
+ TensorShape(56U, 56U, 64U) }),
+ framework::dataset::make("Info", NormalizationLayerInfo(NormType::CROSS_MAP, 5, 0.0001f, 0.75f))
+ }
+ {
+ }
+ GoogLeNetInceptionV1NormalizationLayerDataset(GoogLeNetInceptionV1NormalizationLayerDataset &&) = default;
+ ~GoogLeNetInceptionV1NormalizationLayerDataset() = default;
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_NORMALIZATION_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h
new file mode 100644
index 0000000000..6164bbacea
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv1/GoogLeNetInceptionV1PoolingLayerDataset.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_POOLING_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_POOLING_LAYER_DATASET
+
+#include "tests/datasets/PoolingLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV1PoolingLayerDataset final : public PoolingLayerDataset
+{
+public:
+ GoogLeNetInceptionV1PoolingLayerDataset()
+ {
+ // FIXME: Add support for 7x7 pooling layer pool5/7x7_s1
+ // pool1/3x3_s2
+ add_config(TensorShape(112U, 112U, 64U), TensorShape(56U, 56U, 64U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // pool2/3x3_s2
+ add_config(TensorShape(56U, 56U, 192U), TensorShape(28U, 28U, 192U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_3a/pool
+ add_config(TensorShape(28U, 28U, 192U), TensorShape(28U, 28U, 192U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // inception_3b/pool
+ add_config(TensorShape(28U, 28U, 256U), TensorShape(28U, 28U, 256U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // pool3/3x3_s2
+ add_config(TensorShape(28U, 28U, 480U), TensorShape(14U, 14U, 480U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_4a/pool
+ add_config(TensorShape(14U, 14U, 480U), TensorShape(14U, 14U, 480U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // inception_4b/pool, inception_4c/pool, inception_4d/pool
+ add_config(TensorShape(14U, 14U, 512U), TensorShape(14U, 14U, 512U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // inception_4e/pool
+ add_config(TensorShape(14U, 14U, 528U), TensorShape(14U, 14U, 528U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // pool4/3x3_s2
+ add_config(TensorShape(14U, 14U, 832U), TensorShape(7U, 7U, 832U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_5a/pool, inception_5b/pool
+ add_config(TensorShape(7U, 7U, 832U), TensorShape(7U, 7U, 832U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ }
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV1_POOLING_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h
new file mode 100644
index 0000000000..2d586390ec
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ActivationLayerDataset.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_ACTIVATION_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_ACTIVATION_LAYER_DATASET
+
+#include "tests/framework/datasets/Datasets.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV4ActivationLayerDataset final : public
+ framework::dataset::CartesianProductDataset<framework::dataset::InitializerListDataset<TensorShape>, framework::dataset::SingletonDataset<ActivationLayerInfo>>
+{
+public:
+ GoogLeNetInceptionV4ActivationLayerDataset()
+ : CartesianProductDataset
+ {
+ framework::dataset::make("Shape", { // conv1_3x3_s2_relu
+ TensorShape(149U, 149U, 32U),
+ // conv2_3x3_s1_relu
+ TensorShape(147U, 147U, 32U),
+ // conv3_3x3_s1_relu
+ TensorShape(147U, 147U, 64U),
+ // inception_stem1_3x3_s2_relu
+ TensorShape(73U, 73U, 96U),
+ // inception_stem2_3x3_reduce_relu, inception_stem2_1x7_reduce_relu, inception_stem2_1x7_relu, inception_stem2_7x1_relu
+ TensorShape(73U, 73U, 64U),
+ // inception_stem2_3x3_relu, inception_stem2_3x3_2_relu
+ TensorShape(71U, 71U, 96U),
+ // inception_stem3_3x3_s2_relu, reduction_a_3x3_2_reduce_relu
+ TensorShape(35U, 35U, 192U),
+ // inception_a1_1x1_2_relu, inception_a1_3x3_relu, inception_a1_3x3_2_relu, inception_a1_3x3_3_relu, inception_a1_1x1_relu, inception_a2_1x1_2_relu, inception_a2_3x3_relu, inception_a2_3x3_2_relu, inception_a2_3x3_3_relu, inception_a2_1x1_relu, inception_a3_1x1_2_relu, inception_a3_3x3_relu, inception_a3_3x3_2_relu, inception_a3_3x3_3_relu, inception_a3_1x1_relu, inception_a4_1x1_2_relu, inception_a4_3x3_relu, inception_a4_3x3_2_relu, inception_a4_3x3_3_relu, inception_a4_1x1_relu
+ TensorShape(35U, 35U, 96U),
+ // inception_a1_3x3_reduce_relu, inception_a1_3x3_2_reduce_relu, inception_a2_3x3_reduce_relu, inception_a2_3x3_2_reduce_relu, inception_a3_3x3_reduce_relu, inception_a3_3x3_2_reduce_relu, inception_a4_3x3_reduce_relu, inception_a4_3x3_2_reduce_relu
+ TensorShape(35U, 35U, 64U),
+ // reduction_a_3x3_relu, inception_b1_1x1_2_relu, inception_b2_1x1_2_relu, inception_b3_1x1_2_relu, inception_b4_1x1_2_relu, inception_b5_1x1_2_relu, inception_b6_1x1_2_relu, inception_b7_1x1_2_relu
+ TensorShape(17U, 17U, 384U),
+ // reduction_a_3x3_2_relu
+ TensorShape(35U, 35U, 224U),
+ // reduction_a_3x3_3_relu, inception_b1_7x1_relu, inception_b1_1x7_3_relu, inception_b2_7x1_relu, inception_b2_1x7_3_relu, inception_b3_7x1_relu, inception_b3_1x7_3_relu, inception_b4_7x1_relu, inception_b4_1x7_3_relu, inception_b5_7x1_relu, inception_b5_1x7_3_relu, inception_b6_7x1_relu, inception_b6_1x7_3_relu, inception_b7_7x1_relu, inception_b7_1x7_3_relu, reduction_b_1x7_reduce_relu, reduction_b_1x7_relu
+ TensorShape(17U, 17U, 256U),
+ // inception_b1_1x7_reduce_relu, inception_b1_7x1_2_reduce_relu, inception_b1_7x1_2_relu, inception_b2_1x7_reduce_relu, inception_b2_7x1_2_reduce_relu, inception_b2_7x1_2_relu, inception_b3_1x7_reduce_relu, inception_b3_7x1_2_reduce_relu, inception_b3_7x1_2_relu, inception_b4_1x7_reduce_relu, inception_b4_7x1_2_reduce_relu, inception_b4_7x1_2_relu, inception_b5_1x7_reduce_relu, inception_b5_7x1_2_reduce_relu, inception_b5_7x1_2_relu, inception_b6_1x7_reduce_relu, inception_b6_7x1_2_reduce_relu, inception_b6_7x1_2_relu, inception_b7_1x7_reduce_relu, inception_b7_7x1_2_reduce_relu, inception_b7_7x1_2_relu, reduction_b_3x3_reduce_relu
+ TensorShape(17U, 17U, 192U),
+ // inception_b1_1x7_relu, inception_b1_1x7_2_relu, inception_b1_7x1_3_relu, inception_b2_1x7_relu, inception_b2_1x7_2_relu, inception_b2_7x1_3_relu, inception_b3_1x7_relu, inception_b3_1x7_2_relu, inception_b3_7x1_3_relu, inception_b4_1x7_relu, inception_b4_1x7_2_relu, inception_b4_7x1_3_relu, inception_b5_1x7_relu, inception_b5_1x7_2_relu, inception_b5_7x1_3_relu, inception_b6_1x7_relu, inception_b6_1x7_2_relu, inception_b6_7x1_3_relu, inception_b7_1x7_relu, inception_b7_1x7_2_relu, inception_b7_7x1_3_relu
+ TensorShape(17U, 17U, 224U),
+ // inception_b1_1x1_relu, inception_b2_1x1_relu, inception_b3_1x1_relu, inception_b4_1x1_relu, inception_b5_1x1_relu, inception_b6_1x1_relu, inception_b7_1x1_relu
+ TensorShape(17U, 17U, 128U),
+ // reduction_b_3x3_relu
+ TensorShape(8U, 8U, 192U),
+ // reduction_b_7x1_relu
+ TensorShape(17U, 17U, 320U),
+ // reduction_b_3x3_2_relu
+ TensorShape(8U, 8U, 320U),
+ // inception_c1_1x1_2_relu, inception_c1_1x3_relu, inception_c1_3x1_relu, inception_c1_1x3_3_relu, inception_c1_3x1_3_relu, inception_c1_1x1_relu, inception_c2_1x1_2_relu, inception_c2_1x3_relu, inception_c2_3x1_relu, inception_c2_1x3_3_relu, inception_c2_3x1_3_relu, inception_c2_1x1_relu, inception_c3_1x1_2_relu, inception_c3_1x3_relu, inception_c3_3x1_relu, inception_c3_1x3_3_relu, inception_c3_3x1_3_relu, inception_c3_1x1_relu
+ TensorShape(8U, 8U, 256U),
+ // inception_c1_1x1_3_relu, inception_c1_1x1_4_relu, inception_c2_1x1_3_relu, inception_c2_1x1_4_relu, inception_c3_1x1_3_relu, inception_c3_1x1_4_relu
+ TensorShape(8U, 8U, 384U),
+ // inception_c1_3x1_2_relu, inception_c2_3x1_2_relu, inception_c3_3x1_2_relu
+ TensorShape(8U, 8U, 448U),
+ // inception_c1_1x3_2_relu, inception_c2_1x3_2_relu, inception_c3_1x3_2_relu
+ TensorShape(8U, 8U, 512U) }),
+ framework::dataset::make("Info", ActivationLayerInfo(ActivationLayerInfo::ActivationFunction::RELU))
+ }
+ {
+ }
+ GoogLeNetInceptionV4ActivationLayerDataset(GoogLeNetInceptionV4ActivationLayerDataset &&) = default;
+ ~GoogLeNetInceptionV4ActivationLayerDataset() = default;
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_ACTIVATION_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h
new file mode 100644
index 0000000000..d96410f9eb
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4BatchNormalizationLayerDataset.h
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_BATCHNORMALIZATION_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_BATCHNORMALIZATION_LAYER_DATASET
+
+#include "tests/datasets/BatchNormalizationLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV4BatchNormalizationLayerDataset final : public BatchNormalizationLayerDataset
+{
+public:
+ GoogLeNetInceptionV4BatchNormalizationLayerDataset()
+ {
+ // conv1_3x3_s2_bn
+ add_config(TensorShape(149U, 149U, 32U), TensorShape(32U), 0.000010f);
+ // conv2_3x3_s1_bn
+ add_config(TensorShape(147U, 147U, 32U), TensorShape(32U), 0.000010f);
+ // conv3_3x3_s1_bn
+ add_config(TensorShape(147U, 147U, 64U), TensorShape(64U), 0.000010f);
+ // inception_stem1_3x3_s2_bn
+ add_config(TensorShape(73U, 73U, 96U), TensorShape(96U), 0.000010f);
+ // inception_stem2_3x3_reduce_bn, inception_stem2_1x7_reduce_bn, inception_stem2_1x7_bn, inception_stem2_7x1_bn
+ add_config(TensorShape(73U, 73U, 64U), TensorShape(64U), 0.000010f);
+ // inception_stem2_3x3_bn, inception_stem2_3x3_2_bn
+ add_config(TensorShape(71U, 71U, 96U), TensorShape(96U), 0.000010f);
+ // inception_stem3_3x3_s2_bn, reduction_a_3x3_2_reduce_bn
+ add_config(TensorShape(35U, 35U, 192U), TensorShape(192U), 0.000010f);
+ // inception_a1_1x1_2_bn, inception_a1_3x3_bn, inception_a1_3x3_2_bn, inception_a1_3x3_3_bn, inception_a1_1x1_bn, inception_a2_1x1_2_bn, inception_a2_3x3_bn, inception_a2_3x3_2_bn, inception_a2_3x3_3_bn, inception_a2_1x1_bn, inception_a3_1x1_2_bn, inception_a3_3x3_bn, inception_a3_3x3_2_bn, inception_a3_3x3_3_bn, inception_a3_1x1_bn, inception_a4_1x1_2_bn, inception_a4_3x3_bn, inception_a4_3x3_2_bn, inception_a4_3x3_3_bn, inception_a4_1x1_bn
+ add_config(TensorShape(35U, 35U, 96U), TensorShape(96U), 0.000010f);
+ // inception_a1_3x3_reduce_bn, inception_a1_3x3_2_reduce_bn, inception_a2_3x3_reduce_bn, inception_a2_3x3_2_reduce_bn, inception_a3_3x3_reduce_bn, inception_a3_3x3_2_reduce_bn, inception_a4_3x3_reduce_bn, inception_a4_3x3_2_reduce_bn
+ add_config(TensorShape(35U, 35U, 64U), TensorShape(64U), 0.000010f);
+ // reduction_a_3x3_bn, inception_b1_1x1_2_bn, inception_b2_1x1_2_bn, inception_b3_1x1_2_bn, inception_b4_1x1_2_bn, inception_b5_1x1_2_bn, inception_b6_1x1_2_bn, inception_b7_1x1_2_bn
+ add_config(TensorShape(17U, 17U, 384U), TensorShape(384U), 0.000010f);
+ // reduction_a_3x3_2_bn
+ add_config(TensorShape(35U, 35U, 224U), TensorShape(224U), 0.000010f);
+ // reduction_a_3x3_3_bn, inception_b1_7x1_bn, inception_b1_1x7_3_bn, inception_b2_7x1_bn, inception_b2_1x7_3_bn, inception_b3_7x1_bn, inception_b3_1x7_3_bn, inception_b4_7x1_bn, inception_b4_1x7_3_bn, inception_b5_7x1_bn, inception_b5_1x7_3_bn, inception_b6_7x1_bn, inception_b6_1x7_3_bn, inception_b7_7x1_bn, inception_b7_1x7_3_bn, reduction_b_1x7_reduce_bn, reduction_b_1x7_bn
+ add_config(TensorShape(17U, 17U, 256U), TensorShape(256U), 0.000010f);
+ // inception_b1_1x7_reduce_bn, inception_b1_7x1_2_reduce_bn, inception_b1_7x1_2_bn, inception_b2_1x7_reduce_bn, inception_b2_7x1_2_reduce_bn, inception_b2_7x1_2_bn, inception_b3_1x7_reduce_bn, inception_b3_7x1_2_reduce_bn, inception_b3_7x1_2_bn, inception_b4_1x7_reduce_bn, inception_b4_7x1_2_reduce_bn, inception_b4_7x1_2_bn, inception_b5_1x7_reduce_bn, inception_b5_7x1_2_reduce_bn, inception_b5_7x1_2_bn, inception_b6_1x7_reduce_bn, inception_b6_7x1_2_reduce_bn, inception_b6_7x1_2_bn, inception_b7_1x7_reduce_bn, inception_b7_7x1_2_reduce_bn, inception_b7_7x1_2_bn, reduction_b_3x3_reduce_bn
+ add_config(TensorShape(17U, 17U, 192U), TensorShape(192U), 0.000010f);
+ // inception_b1_1x7_bn, inception_b1_1x7_2_bn, inception_b1_7x1_3_bn, inception_b2_1x7_bn, inception_b2_1x7_2_bn, inception_b2_7x1_3_bn, inception_b3_1x7_bn, inception_b3_1x7_2_bn, inception_b3_7x1_3_bn, inception_b4_1x7_bn, inception_b4_1x7_2_bn, inception_b4_7x1_3_bn, inception_b5_1x7_bn, inception_b5_1x7_2_bn, inception_b5_7x1_3_bn, inception_b6_1x7_bn, inception_b6_1x7_2_bn, inception_b6_7x1_3_bn, inception_b7_1x7_bn, inception_b7_1x7_2_bn, inception_b7_7x1_3_bn
+ add_config(TensorShape(17U, 17U, 224U), TensorShape(224U), 0.000010f);
+ // inception_b1_1x1_bn, inception_b2_1x1_bn, inception_b3_1x1_bn, inception_b4_1x1_bn, inception_b5_1x1_bn, inception_b6_1x1_bn, inception_b7_1x1_bn
+ add_config(TensorShape(17U, 17U, 128U), TensorShape(128U), 0.000010f);
+ // reduction_b_3x3_bn
+ add_config(TensorShape(8U, 8U, 192U), TensorShape(192U), 0.000010f);
+ // reduction_b_7x1_bn
+ add_config(TensorShape(17U, 17U, 320U), TensorShape(320U), 0.000010f);
+ // reduction_b_3x3_2_bn
+ add_config(TensorShape(8U, 8U, 320U), TensorShape(320U), 0.000010f);
+ // inception_c1_1x1_2_bn, inception_c1_1x3_bn, inception_c1_3x1_bn, inception_c1_1x3_3_bn, inception_c1_3x1_3_bn, inception_c1_1x1_bn, inception_c2_1x1_2_bn, inception_c2_1x3_bn, inception_c2_3x1_bn, inception_c2_1x3_3_bn, inception_c2_3x1_3_bn, inception_c2_1x1_bn, inception_c3_1x1_2_bn, inception_c3_1x3_bn, inception_c3_3x1_bn, inception_c3_1x3_3_bn, inception_c3_3x1_3_bn, inception_c3_1x1_bn
+ add_config(TensorShape(8U, 8U, 256U), TensorShape(256U), 0.000010f);
+ // inception_c1_1x1_3_bn, inception_c1_1x1_4_bn, inception_c2_1x1_3_bn, inception_c2_1x1_4_bn, inception_c3_1x1_3_bn, inception_c3_1x1_4_bn
+ add_config(TensorShape(8U, 8U, 384U), TensorShape(384U), 0.000010f);
+ // inception_c1_3x1_2_bn, inception_c2_3x1_2_bn, inception_c3_3x1_2_bn
+ add_config(TensorShape(8U, 8U, 448U), TensorShape(448U), 0.000010f);
+ // inception_c1_1x3_2_bn, inception_c2_1x3_2_bn, inception_c3_1x3_2_bn
+ add_config(TensorShape(8U, 8U, 512U), TensorShape(512U), 0.000010f);
+ }
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_BATCHNORMALIZATION_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h
new file mode 100644
index 0000000000..a050d3da74
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4ConvolutionLayerDataset.h
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_CONVOLUTION_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_CONVOLUTION_LAYER_DATASET
+
+#include "tests/datasets/ConvolutionLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV4ConvolutionLayerDataset final : public ConvolutionLayerDataset
+{
+public:
+ // GoogLeNetInceptionV4 inception v1 dataset
+ GoogLeNetInceptionV4ConvolutionLayerDataset()
+ {
+ // conv1_3x3_s2
+ add_config(TensorShape(299U, 299U, 3U), TensorShape(3U, 3U, 3U, 32U), TensorShape(32U), TensorShape(149U, 149U, 32U), PadStrideInfo(2, 2, 0, 0));
+ // conv2_3x3_s1
+ add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // conv3_3x3_s1
+ add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1));
+ // inception_stem1_3x3_s2
+ add_config(TensorShape(147U, 147U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(73U, 73U, 96U), PadStrideInfo(2, 2, 0, 0));
+ // inception_stem2_3x3_reduce, inception_stem2_1x7_reduce
+ add_config(TensorShape(73U, 73U, 160U), TensorShape(1U, 1U, 160U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_stem2_3x3, inception_stem2_3x3_2
+ add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_stem2_1x7
+ add_config(TensorShape(73U, 73U, 64U), TensorShape(7U, 1U, 64U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 3, 0));
+ // inception_stem2_7x1
+ add_config(TensorShape(73U, 73U, 64U), TensorShape(1U, 7U, 64U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 3));
+ // inception_stem3_3x3_s2
+ add_config(TensorShape(71U, 71U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(2, 2, 0, 0));
+ // inception_a1_1x1_2, inception_a1_1x1, inception_a2_1x1_2, inception_a2_1x1, inception_a3_1x1_2, inception_a3_1x1, inception_a4_1x1_2, inception_a4_1x1
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_a1_3x3_reduce, inception_a1_3x3_2_reduce, inception_a2_3x3_reduce, inception_a2_3x3_2_reduce, inception_a3_3x3_reduce, inception_a3_3x3_2_reduce, inception_a4_3x3_reduce, inception_a4_3x3_2_reduce
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), TensorShape(35U, 35U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_a1_3x3, inception_a1_3x3_2, inception_a2_3x3, inception_a2_3x3_2, inception_a3_3x3, inception_a3_3x3_2, inception_a4_3x3, inception_a4_3x3_2
+ add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1));
+ // inception_a1_3x3_3, inception_a2_3x3_3, inception_a3_3x3_3, inception_a4_3x3_3
+ add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1));
+ // reduction_a_3x3
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(2, 2, 0, 0));
+ // reduction_a_3x3_2_reduce
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // reduction_a_3x3_2
+ add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1));
+ // reduction_a_3x3_3
+ add_config(TensorShape(35U, 35U, 224U), TensorShape(3U, 3U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(2, 2, 0, 0));
+ // inception_b1_1x1_2, inception_b2_1x1_2, inception_b3_1x1_2, inception_b4_1x1_2, inception_b5_1x1_2, inception_b6_1x1_2, inception_b7_1x1_2
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(1, 1, 0, 0));
+ // inception_b1_1x7_reduce, inception_b1_7x1_2_reduce, inception_b2_1x7_reduce, inception_b2_7x1_2_reduce, inception_b3_1x7_reduce, inception_b3_7x1_2_reduce, inception_b4_1x7_reduce, inception_b4_7x1_2_reduce, inception_b5_1x7_reduce, inception_b5_7x1_2_reduce, inception_b6_1x7_reduce, inception_b6_7x1_2_reduce, inception_b7_1x7_reduce, inception_b7_7x1_2_reduce, reduction_b_3x3_reduce
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 192U), TensorShape(192U), TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // inception_b1_1x7, inception_b1_1x7_2, inception_b2_1x7, inception_b2_1x7_2, inception_b3_1x7, inception_b3_1x7_2, inception_b4_1x7, inception_b4_1x7_2, inception_b5_1x7, inception_b5_1x7_2, inception_b6_1x7, inception_b6_1x7_2, inception_b7_1x7, inception_b7_1x7_2
+ add_config(TensorShape(17U, 17U, 192U), TensorShape(7U, 1U, 192U, 224U), TensorShape(224U), TensorShape(17U, 17U, 224U), PadStrideInfo(1, 1, 3, 0));
+ // inception_b1_7x1, inception_b2_7x1, inception_b3_7x1, inception_b4_7x1, inception_b5_7x1, inception_b6_7x1, inception_b7_7x1
+ add_config(TensorShape(17U, 17U, 224U), TensorShape(1U, 7U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 3));
+ // inception_b1_7x1_2, inception_b2_7x1_2, inception_b3_7x1_2, inception_b4_7x1_2, inception_b5_7x1_2, inception_b6_7x1_2, inception_b7_7x1_2
+ add_config(TensorShape(17U, 17U, 192U), TensorShape(1U, 7U, 192U, 192U), TensorShape(192U), TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 3));
+ // inception_b1_7x1_3, inception_b2_7x1_3, inception_b3_7x1_3, inception_b4_7x1_3, inception_b5_7x1_3, inception_b6_7x1_3, inception_b7_7x1_3
+ add_config(TensorShape(17U, 17U, 224U), TensorShape(1U, 7U, 224U, 224U), TensorShape(224U), TensorShape(17U, 17U, 224U), PadStrideInfo(1, 1, 0, 3));
+ // inception_b1_1x7_3, inception_b2_1x7_3, inception_b3_1x7_3, inception_b4_1x7_3, inception_b5_1x7_3, inception_b6_1x7_3, inception_b7_1x7_3
+ add_config(TensorShape(17U, 17U, 224U), TensorShape(7U, 1U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 3, 0));
+ // inception_b1_1x1, inception_b2_1x1, inception_b3_1x1, inception_b4_1x1, inception_b5_1x1, inception_b6_1x1, inception_b7_1x1
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 128U), TensorShape(128U), TensorShape(17U, 17U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // reduction_b_3x3
+ add_config(TensorShape(17U, 17U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(8U, 8U, 192U), PadStrideInfo(2, 2, 0, 0));
+ // reduction_b_1x7_reduce
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // reduction_b_1x7
+ add_config(TensorShape(17U, 17U, 256U), TensorShape(7U, 1U, 256U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 3, 0));
+ // reduction_b_7x1
+ add_config(TensorShape(17U, 17U, 256U), TensorShape(1U, 7U, 256U, 320U), TensorShape(320U), TensorShape(17U, 17U, 320U), PadStrideInfo(1, 1, 0, 3));
+ // reduction_b_3x3_2
+ add_config(TensorShape(17U, 17U, 320U), TensorShape(3U, 3U, 320U, 320U), TensorShape(320U), TensorShape(8U, 8U, 320U), PadStrideInfo(2, 2, 0, 0));
+ // inception_c1_1x1_2, inception_c1_1x1, inception_c2_1x1_2, inception_c2_1x1, inception_c3_1x1_2, inception_c3_1x1
+ add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // inception_c1_1x1_3, inception_c1_1x1_4, inception_c2_1x1_3, inception_c2_1x1_4, inception_c3_1x1_3, inception_c3_1x1_4
+ add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 384U), TensorShape(384U), TensorShape(8U, 8U, 384U), PadStrideInfo(1, 1, 0, 0));
+ // inception_c1_1x3, inception_c2_1x3, inception_c3_1x3
+ add_config(TensorShape(8U, 8U, 384U), TensorShape(3U, 1U, 384U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 1, 0));
+ // inception_c1_3x1, inception_c2_3x1, inception_c3_3x1
+ add_config(TensorShape(8U, 8U, 384U), TensorShape(1U, 3U, 384U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 1));
+ // inception_c1_3x1_2, inception_c2_3x1_2, inception_c3_3x1_2
+ add_config(TensorShape(8U, 8U, 384U), TensorShape(1U, 3U, 384U, 448U), TensorShape(448U), TensorShape(8U, 8U, 448U), PadStrideInfo(1, 1, 0, 1));
+ // inception_c1_1x3_2, inception_c2_1x3_2, inception_c3_1x3_2
+ add_config(TensorShape(8U, 8U, 448U), TensorShape(3U, 1U, 448U, 512U), TensorShape(512U), TensorShape(8U, 8U, 512U), PadStrideInfo(1, 1, 1, 0));
+ // inception_c1_1x3_3, inception_c2_1x3_3, inception_c3_1x3_3
+ add_config(TensorShape(8U, 8U, 512U), TensorShape(3U, 1U, 512U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 1, 0));
+ // inception_c1_3x1_3, inception_c2_3x1_3, inception_c3_3x1_3
+ add_config(TensorShape(8U, 8U, 512U), TensorShape(1U, 3U, 512U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 1));
+ }
+};
+
+/** A subset of GoogLeNetInceptionV4 convolution layers with filter dimensions supported by DirectConvolution kernel */
+class GoogLeNetInceptionV4DirectConvolutionLayerDataset final : public ConvolutionLayerDataset
+{
+public:
+ // subset of GoogLeNetInceptionV4 inception v1 dataset
+ GoogLeNetInceptionV4DirectConvolutionLayerDataset()
+ {
+ // conv1_3x3_s2
+ add_config(TensorShape(299U, 299U, 3U), TensorShape(3U, 3U, 3U, 32U), TensorShape(32U), TensorShape(149U, 149U, 32U), PadStrideInfo(2, 2, 0, 0));
+ // conv2_3x3_s1
+ add_config(TensorShape(149U, 149U, 32U), TensorShape(3U, 3U, 32U, 32U), TensorShape(32U), TensorShape(147U, 147U, 32U), PadStrideInfo(1, 1, 0, 0));
+ // conv3_3x3_s1
+ add_config(TensorShape(147U, 147U, 32U), TensorShape(3U, 3U, 32U, 64U), TensorShape(64U), TensorShape(147U, 147U, 64U), PadStrideInfo(1, 1, 1, 1));
+ // inception_stem1_3x3_s2
+ add_config(TensorShape(147U, 147U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(73U, 73U, 96U), PadStrideInfo(2, 2, 0, 0));
+ // inception_stem2_3x3_reduce, inception_stem2_1x7_reduce
+ add_config(TensorShape(73U, 73U, 160U), TensorShape(1U, 1U, 160U, 64U), TensorShape(64U), TensorShape(73U, 73U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_stem2_3x3, inception_stem2_3x3_2
+ add_config(TensorShape(73U, 73U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(71U, 71U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_stem3_3x3_s2
+ add_config(TensorShape(71U, 71U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(2, 2, 0, 0));
+ // inception_a1_1x1_2, inception_a1_1x1, inception_a2_1x1_2, inception_a2_1x1, inception_a3_1x1_2, inception_a3_1x1, inception_a4_1x1_2, inception_a4_1x1
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 0, 0));
+ // inception_a1_3x3_reduce, inception_a1_3x3_2_reduce, inception_a2_3x3_reduce, inception_a2_3x3_2_reduce, inception_a3_3x3_reduce, inception_a3_3x3_2_reduce, inception_a4_3x3_reduce, inception_a4_3x3_2_reduce
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 64U), TensorShape(64U), TensorShape(35U, 35U, 64U), PadStrideInfo(1, 1, 0, 0));
+ // inception_a1_3x3, inception_a1_3x3_2, inception_a2_3x3, inception_a2_3x3_2, inception_a3_3x3, inception_a3_3x3_2, inception_a4_3x3, inception_a4_3x3_2
+ add_config(TensorShape(35U, 35U, 64U), TensorShape(3U, 3U, 64U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1));
+ // inception_a1_3x3_3, inception_a2_3x3_3, inception_a3_3x3_3, inception_a4_3x3_3
+ add_config(TensorShape(35U, 35U, 96U), TensorShape(3U, 3U, 96U, 96U), TensorShape(96U), TensorShape(35U, 35U, 96U), PadStrideInfo(1, 1, 1, 1));
+ // reduction_a_3x3
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(3U, 3U, 384U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(2, 2, 0, 0));
+ // reduction_a_3x3_2_reduce
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(1U, 1U, 384U, 192U), TensorShape(192U), TensorShape(35U, 35U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // reduction_a_3x3_2
+ add_config(TensorShape(35U, 35U, 192U), TensorShape(3U, 3U, 192U, 224U), TensorShape(224U), TensorShape(35U, 35U, 224U), PadStrideInfo(1, 1, 1, 1));
+ // reduction_a_3x3_3
+ add_config(TensorShape(35U, 35U, 224U), TensorShape(3U, 3U, 224U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(2, 2, 0, 0));
+ // inception_b1_1x1_2, inception_b2_1x1_2, inception_b3_1x1_2, inception_b4_1x1_2, inception_b5_1x1_2, inception_b6_1x1_2, inception_b7_1x1_2
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 384U), TensorShape(384U), TensorShape(17U, 17U, 384U), PadStrideInfo(1, 1, 0, 0));
+ // inception_b1_1x7_reduce, inception_b1_7x1_2_reduce, inception_b2_1x7_reduce, inception_b2_7x1_2_reduce, inception_b3_1x7_reduce, inception_b3_7x1_2_reduce, inception_b4_1x7_reduce, inception_b4_7x1_2_reduce, inception_b5_1x7_reduce, inception_b5_7x1_2_reduce, inception_b6_1x7_reduce, inception_b6_7x1_2_reduce, inception_b7_1x7_reduce, inception_b7_7x1_2_reduce, reduction_b_3x3_reduce
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 192U), TensorShape(192U), TensorShape(17U, 17U, 192U), PadStrideInfo(1, 1, 0, 0));
+ // inception_b1_1x1, inception_b2_1x1, inception_b3_1x1, inception_b4_1x1, inception_b5_1x1, inception_b6_1x1, inception_b7_1x1
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 128U), TensorShape(128U), TensorShape(17U, 17U, 128U), PadStrideInfo(1, 1, 0, 0));
+ // reduction_b_3x3
+ add_config(TensorShape(17U, 17U, 192U), TensorShape(3U, 3U, 192U, 192U), TensorShape(192U), TensorShape(8U, 8U, 192U), PadStrideInfo(2, 2, 0, 0));
+ // reduction_b_1x7_reduce
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(1U, 1U, 1024U, 256U), TensorShape(256U), TensorShape(17U, 17U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // reduction_b_3x3_2
+ add_config(TensorShape(17U, 17U, 320U), TensorShape(3U, 3U, 320U, 320U), TensorShape(320U), TensorShape(8U, 8U, 320U), PadStrideInfo(2, 2, 0, 0));
+ // inception_c1_1x1_2, inception_c1_1x1, inception_c2_1x1_2, inception_c2_1x1, inception_c3_1x1_2, inception_c3_1x1
+ add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 256U), TensorShape(256U), TensorShape(8U, 8U, 256U), PadStrideInfo(1, 1, 0, 0));
+ // inception_c1_1x1_3, inception_c1_1x1_4, inception_c2_1x1_3, inception_c2_1x1_4, inception_c3_1x1_3, inception_c3_1x1_4
+ add_config(TensorShape(8U, 8U, 1536U), TensorShape(1U, 1U, 1536U, 384U), TensorShape(384U), TensorShape(8U, 8U, 384U), PadStrideInfo(1, 1, 0, 0));
+ }
+};
+
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_CONVOLUTION_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h
new file mode 100644
index 0000000000..8cf59e8207
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4FullyConnectedLayerDataset.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_FULLYCONNECTED_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_FULLYCONNECTED_LAYER_DATASET
+
+#include "tests/datasets/FullyConnectedLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV4FullyConnectedLayerDataset final : public FullyConnectedLayerDataset
+{
+public:
+ GoogLeNetInceptionV4FullyConnectedLayerDataset()
+ {
+ add_config(TensorShape(1536U), TensorShape(1536U, 1000U), TensorShape(1000U), TensorShape(1000U));
+ }
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_FULLYCONNECTED_LAYER_DATASET */
diff --git a/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h
new file mode 100644
index 0000000000..3b1ee8dcb4
--- /dev/null
+++ b/tests/datasets/system_tests/googlenet/inceptionv4/GoogLeNetInceptionV4PoolingLayerDataset.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2017 ARM Limited.
+ *
+ * SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * 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 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.
+ */
+#ifndef ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_POOLING_LAYER_DATASET
+#define ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_POOLING_LAYER_DATASET
+
+#include "tests/datasets/PoolingLayerDataset.h"
+
+#include "tests/TypePrinter.h"
+
+#include "arm_compute/core/TensorShape.h"
+#include "arm_compute/core/Types.h"
+
+namespace arm_compute
+{
+namespace test
+{
+namespace datasets
+{
+class GoogLeNetInceptionV4PoolingLayerDataset final : public PoolingLayerDataset
+{
+public:
+ GoogLeNetInceptionV4PoolingLayerDataset()
+ {
+ // FIXME: Add support for global pooling layer pool_8x8_s1
+ // inception_stem1_pool
+ add_config(TensorShape(147U, 147U, 64U), TensorShape(73U, 73U, 64U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_stem3_pool
+ add_config(TensorShape(71U, 71U, 192U), TensorShape(35U, 35U, 192U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_a1_pool_ave, inception_a2_pool_ave, inception_a3_pool_ave, inception_a4_pool_ave
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(35U, 35U, 384U), PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // reduction_a_pool
+ add_config(TensorShape(35U, 35U, 384U), TensorShape(17U, 17U, 384U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_b1_pool_ave, inception_b2_pool_ave, inception_b3_pool_ave, inception_b4_pool_ave, inception_b5_pool_ave, inception_b6_pool_ave, inception_b7_pool_ave
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(17U, 17U, 1024U), PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ // reduction_b_pool
+ add_config(TensorShape(17U, 17U, 1024U), TensorShape(8U, 8U, 1024U), PoolingLayerInfo(PoolingType::MAX, 3, PadStrideInfo(2, 2, 0, 0, DimensionRoundingType::CEIL)));
+ // inception_c1_pool_ave, inception_c2_pool_ave, inception_c3_pool_ave
+ add_config(TensorShape(8U, 8U, 1536U), TensorShape(8U, 8U, 1536U), PoolingLayerInfo(PoolingType::AVG, 3, PadStrideInfo(1, 1, 1, 1, DimensionRoundingType::CEIL)));
+ }
+};
+} // namespace datasets
+} // namespace test
+} // namespace arm_compute
+#endif /* ARM_COMPUTE_TEST_GOOGLENETINCEPTIONV4_POOLING_LAYER_DATASET */