aboutsummaryrefslogtreecommitdiff
path: root/src/armnn/test/GraphUtils.cpp
diff options
context:
space:
mode:
authornarpra01 <narumol.prangnawarat@arm.com>2018-12-21 18:30:00 +0000
committerLes Bell <les.bell@arm.com>2019-01-02 09:25:42 +0000
commit6f37f83a27160948fee366b9f195c52f78cb88f0 (patch)
treed09a8d5769c3ac2c8f45660d305e9a6124716310 /src/armnn/test/GraphUtils.cpp
parentc48ac8c8cea1748ebfef15144f070799d4a129c3 (diff)
downloadarmnn-6f37f83a27160948fee366b9f195c52f78cb88f0.tar.gz
IVGCVSW-2353 Ignore control inputs in TensorFlow parser
* Allow control inputs from TensorFlow graph but ignore them in ArmNN graph. * Add utility function to test ArmNN graph structure. * Add ArmNN graph structure tests in TensorFlow paresr to ensure that control inputs are ignored in ArmNN graph as well as their inputs that are not used anywhere else. Change-Id: Ib0ea0d2df85e3fc79b748fa4c9d20e0649352bc1
Diffstat (limited to 'src/armnn/test/GraphUtils.cpp')
-rw-r--r--src/armnn/test/GraphUtils.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/armnn/test/GraphUtils.cpp b/src/armnn/test/GraphUtils.cpp
new file mode 100644
index 0000000000..1f9bb44d3d
--- /dev/null
+++ b/src/armnn/test/GraphUtils.cpp
@@ -0,0 +1,63 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#include "GraphUtils.hpp"
+
+bool GraphHasNamedLayer(const armnn::Graph& graph, const std::string& name)
+{
+ for (auto&& layer : graph)
+ {
+ if (layer->GetName() == name)
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
+armnn::Layer* GetFirstLayerWithName(armnn::Graph& graph, const std::string& name)
+{
+ for (auto&& layer : graph)
+ {
+ if (layer->GetNameStr() == name)
+ {
+ return layer;
+ }
+ }
+ return nullptr;
+}
+
+bool CheckNumberOfInputSlot(armnn::Layer* layer, unsigned int num)
+{
+ return layer->GetNumInputSlots() == num;
+}
+
+bool CheckNumberOfOutputSlot(armnn::Layer* layer, unsigned int num)
+{
+ return layer->GetNumOutputSlots() == num;
+}
+
+bool IsConnected(armnn::Layer* srcLayer, armnn::Layer* destLayer,
+ unsigned int srcSlot, unsigned int destSlot,
+ const armnn::TensorInfo& expectedTensorInfo)
+{
+ const armnn::IOutputSlot& outputSlot = srcLayer->GetOutputSlot(srcSlot);
+ const armnn::TensorInfo& tensorInfo = outputSlot.GetTensorInfo();
+ if (expectedTensorInfo != tensorInfo)
+ {
+ return false;
+ }
+ const unsigned int numConnections = outputSlot.GetNumConnections();
+ for (unsigned int c = 0; c < numConnections; ++c)
+ {
+ auto inputSlot = boost::polymorphic_downcast<const armnn::InputSlot*>(outputSlot.GetConnection(c));
+ if (inputSlot->GetOwningLayer().GetNameStr() == destLayer->GetNameStr() &&
+ inputSlot->GetSlotIndex() == destSlot)
+ {
+ return true;
+ }
+ }
+ return false;
+}