aboutsummaryrefslogtreecommitdiff
path: root/src/armnn
diff options
context:
space:
mode:
authornarpra01 <narumol.prangnawarat@arm.com>2018-09-28 11:07:51 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-10 16:16:57 +0100
commit1e4c31dafb1c8984a126fa1d211ed8f9eedaf7cc (patch)
tree006e40b3bbfdc4a202cdada8fa9afec0dd8fffae /src/armnn
parent33cea4db0b2729c5dbd50f9c0985578c60baffdd (diff)
downloadarmnn-1e4c31dafb1c8984a126fa1d211ed8f9eedaf7cc.tar.gz
IVGCVSW-1812 Adding Ref implementation and tests of MeanWorkloads
Change-Id: I6fb15c407024e3b91d5abf4513f8090be5821760
Diffstat (limited to 'src/armnn')
-rw-r--r--src/armnn/layers/MeanLayer.cpp2
-rw-r--r--src/armnn/test/NetworkTests.cpp33
2 files changed, 34 insertions, 1 deletions
diff --git a/src/armnn/layers/MeanLayer.cpp b/src/armnn/layers/MeanLayer.cpp
index 6bbb0943b0..01f1133c5c 100644
--- a/src/armnn/layers/MeanLayer.cpp
+++ b/src/armnn/layers/MeanLayer.cpp
@@ -60,7 +60,7 @@ void MeanLayer::ValidateTensorShapesFromInputs()
{
outputRank = 1;
}
- else if (m_Param.m_Axis.size() <= input.GetNumDimensions())
+ else if (m_Param.m_Axis.size() >= input.GetNumDimensions())
{
throw LayerValidationException("MeanLayer: Dimensions to reduce can not be bigger than input dimensions");
}
diff --git a/src/armnn/test/NetworkTests.cpp b/src/armnn/test/NetworkTests.cpp
index 11c26da8b4..2f36f4da09 100644
--- a/src/armnn/test/NetworkTests.cpp
+++ b/src/armnn/test/NetworkTests.cpp
@@ -845,6 +845,39 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateWorkloadsCpuRefPermuteLayer)
}
}
+BOOST_AUTO_TEST_CASE(OptimizeValidateWorkloadsCpuRefMeanLayer)
+{
+ // Create runtime in which test will run
+ armnn::IRuntime::CreationOptions options;
+ armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options));
+
+ std::vector<armnn::Compute> backends = {armnn::Compute::CpuRef};
+
+ // build up the structure of the network
+ armnn::INetworkPtr net(armnn::INetwork::Create());
+
+ armnn::IConnectableLayer* input = net->AddInputLayer(0);
+
+ armnn::MeanDescriptor descriptor({ 0, 1 }, false);
+ armnn::IConnectableLayer* meanLayer = net->AddMeanLayer(descriptor);
+
+ armnn::IConnectableLayer* output = net->AddOutputLayer(0);
+
+ input->GetOutputSlot(0).Connect(meanLayer->GetInputSlot(0));
+ meanLayer->GetOutputSlot(0).Connect(output->GetInputSlot(0));
+
+ input->GetOutputSlot(0).SetTensorInfo(armnn::TensorInfo({ 4, 3, 2 }, armnn::DataType::Float32));
+ meanLayer->GetOutputSlot(0).SetTensorInfo(armnn::TensorInfo({ 2 }, armnn::DataType::Float32));
+
+ // optimize the network
+ armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(*net, backends, runtime->GetDeviceSpec());
+
+ for (auto&& layer : static_cast<armnn::OptimizedNetwork*>(optNet.get())->GetGraph())
+ {
+ BOOST_CHECK_EQUAL(armnn::Compute::CpuRef, layer->GetComputeDevice());
+ }
+}
+
BOOST_AUTO_TEST_CASE(FP16TurboModeTestOnCpuRef)
{
// Test to check when FP16 Turbo mode set