aboutsummaryrefslogtreecommitdiff
path: root/src/armnn
diff options
context:
space:
mode:
authorMike Kelly <mike.kelly@arm.com>2019-02-11 17:01:27 +0000
committerMike Kelly <mike.kelly@arm.com>2019-02-11 17:01:27 +0000
commit8c1701a2d9c1da0e1decb2afdc2093aa88810242 (patch)
tree870ee9af506bb468c513214ab539f41aeb1e34dc /src/armnn
parenta40521a70e73d20a060fa2df0e83b02c4f1c6139 (diff)
downloadarmnn-8c1701a2d9c1da0e1decb2afdc2093aa88810242.tar.gz
IVGCVSW-2531 Serialize a simple ArmNN Network
Change-Id: I68cf5072aca6e3a8b3b8c57e19b6d417cd5813fc Signed-off-by: Mike Kelly <mike.kelly@arm.com>
Diffstat (limited to 'src/armnn')
-rw-r--r--src/armnn/Layer.cpp6
-rw-r--r--src/armnn/Layer.hpp4
-rw-r--r--src/armnn/LayerVisitorBase.hpp175
-rw-r--r--src/armnn/Network.cpp8
-rw-r--r--src/armnn/Network.hpp2
-rw-r--r--src/armnn/OverrideInputRangeVisitor.hpp2
-rw-r--r--src/armnn/QuantizerVisitor.hpp2
-rw-r--r--src/armnn/StaticRangeVisitor.hpp2
-rw-r--r--src/armnn/test/QuantizerTest.cpp2
9 files changed, 22 insertions, 181 deletions
diff --git a/src/armnn/Layer.cpp b/src/armnn/Layer.cpp
index c49dd61786..0a6328ba3d 100644
--- a/src/armnn/Layer.cpp
+++ b/src/armnn/Layer.cpp
@@ -143,6 +143,11 @@ void OutputSlot::ValidateConnectionIndex(unsigned int index) const
}
}
+LayerGuid OutputSlot::GetOwningLayerGuid() const
+{
+ return GetOwningLayer().GetGuid();
+}
+
namespace {
LayerGuid GenerateLayerGuid()
{
@@ -335,5 +340,4 @@ std::vector<TensorShape> Layer::InferOutputShapes(const std::vector<TensorShape>
}
return inputShapes;
}
-
} // namespace armnn
diff --git a/src/armnn/Layer.hpp b/src/armnn/Layer.hpp
index c08c6b0631..507b37bf95 100644
--- a/src/armnn/Layer.hpp
+++ b/src/armnn/Layer.hpp
@@ -105,6 +105,8 @@ public:
Layer& GetOwningLayer() const { return m_OwningLayer; }
+ LayerGuid GetOwningLayerGuid() const override;
+
const OutputHandler& GetOutputHandler() const { return m_OutputHandler; }
OutputHandler& GetOutputHandler() { return m_OutputHandler; }
@@ -141,7 +143,7 @@ public:
return Disconnect(*boost::polymorphic_downcast<InputSlot*>(&slot));
}
- unsigned int CalculateIndexOnOwner() const;
+ unsigned int CalculateIndexOnOwner() const override;
bool operator==(const OutputSlot& other) const;
diff --git a/src/armnn/LayerVisitorBase.hpp b/src/armnn/LayerVisitorBase.hpp
deleted file mode 100644
index 2c37a21786..0000000000
--- a/src/armnn/LayerVisitorBase.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// Copyright © 2017 Arm Ltd. All rights reserved.
-// SPDX-License-Identifier: MIT
-//
-
-#pragma once
-
-#include <armnn/ILayerVisitor.hpp>
-
-namespace armnn
-{
-
-struct VisitorThrowingPolicy
-{
- static void Apply() { throw UnimplementedException(); }
-};
-
-struct VisitorNoThrowPolicy
-{
- static void Apply() {}
-};
-
-// Visitor base class with empty implementations.
-template<typename DefaultPolicy>
-class LayerVisitorBase : public ILayerVisitor
-{
-protected:
- LayerVisitorBase() {}
- virtual ~LayerVisitorBase() {}
-
-public:
- void VisitInputLayer(const IConnectableLayer*,
- LayerBindingId,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitConvolution2dLayer(const IConnectableLayer*,
- const Convolution2dDescriptor&,
- const ConstTensor&,
- const Optional<ConstTensor>&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitDepthwiseConvolution2dLayer(const IConnectableLayer*,
- const DepthwiseConvolution2dDescriptor&,
- const ConstTensor&,
- const Optional<ConstTensor>&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitDetectionPostProcessLayer(const IConnectableLayer*,
- const DetectionPostProcessDescriptor&,
- const ConstTensor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitFullyConnectedLayer(const IConnectableLayer*,
- const FullyConnectedDescriptor&,
- const ConstTensor&,
- const Optional<ConstTensor>&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitPermuteLayer(const IConnectableLayer*,
- const PermuteDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitBatchToSpaceNdLayer(const IConnectableLayer*,
- const BatchToSpaceNdDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitPooling2dLayer(const IConnectableLayer*,
- const Pooling2dDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitActivationLayer(const IConnectableLayer*,
- const ActivationDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitNormalizationLayer(const IConnectableLayer*,
- const NormalizationDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitSoftmaxLayer(const IConnectableLayer*,
- const SoftmaxDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitSplitterLayer(const IConnectableLayer*,
- const ViewsDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitMergerLayer(const IConnectableLayer*,
- const OriginsDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitAdditionLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitMultiplicationLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitBatchNormalizationLayer(const IConnectableLayer*,
- const BatchNormalizationDescriptor&,
- const ConstTensor&,
- const ConstTensor&,
- const ConstTensor&,
- const ConstTensor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitResizeBilinearLayer(const IConnectableLayer*,
- const ResizeBilinearDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitL2NormalizationLayer(const IConnectableLayer*,
- const L2NormalizationDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitConstantLayer(const IConnectableLayer*,
- const ConstTensor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitReshapeLayer(const IConnectableLayer*,
- const ReshapeDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitSpaceToBatchNdLayer(const IConnectableLayer*,
- const SpaceToBatchNdDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitFloorLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitOutputLayer(const IConnectableLayer*,
- LayerBindingId id,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitLstmLayer(const IConnectableLayer*,
- const LstmDescriptor&,
- const LstmInputParams&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitDivisionLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitSubtractionLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitMaximumLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitMeanLayer(const IConnectableLayer*,
- const MeanDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitPadLayer(const IConnectableLayer*,
- const PadDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitStridedSliceLayer(const IConnectableLayer*,
- const StridedSliceDescriptor&,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitMinimumLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitGreaterLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitEqualLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitRsqrtLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-
- void VisitGatherLayer(const IConnectableLayer*,
- const char*) override { DefaultPolicy::Apply(); }
-};
-
-} //namespace armnn
-
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index 5c70003785..cad1690cbd 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -917,6 +917,14 @@ IConnectableLayer* Network::AddGatherLayer(const char* name)
return m_Graph->AddLayer<GatherLayer>(name);
}
+void Network::Accept(ILayerVisitor& visitor) const
+{
+ for (auto layer : GetGraph())
+ {
+ layer->Accept(visitor);
+ };
+}
+
OptimizedNetwork::OptimizedNetwork(std::unique_ptr<Graph> graph)
: m_Graph(std::move(graph))
{
diff --git a/src/armnn/Network.hpp b/src/armnn/Network.hpp
index 66fb240979..3754c2e6d1 100644
--- a/src/armnn/Network.hpp
+++ b/src/armnn/Network.hpp
@@ -148,6 +148,8 @@ public:
IConnectableLayer* AddRsqrtLayer(const char* name = nullptr) override;
+ void Accept(ILayerVisitor& visitor) const override;
+
private:
IConnectableLayer* AddFullyConnectedLayerImpl(const FullyConnectedDescriptor& fullyConnectedDescriptor,
const ConstTensor& weights,
diff --git a/src/armnn/OverrideInputRangeVisitor.hpp b/src/armnn/OverrideInputRangeVisitor.hpp
index 0b1999f1f8..72396b4652 100644
--- a/src/armnn/OverrideInputRangeVisitor.hpp
+++ b/src/armnn/OverrideInputRangeVisitor.hpp
@@ -6,7 +6,7 @@
#pragma once
#include "NetworkQuantizer.hpp"
-#include "LayerVisitorBase.hpp"
+#include "armnn/LayerVisitorBase.hpp"
#include <unordered_map>
diff --git a/src/armnn/QuantizerVisitor.hpp b/src/armnn/QuantizerVisitor.hpp
index 44ebc052b6..cf151baf3c 100644
--- a/src/armnn/QuantizerVisitor.hpp
+++ b/src/armnn/QuantizerVisitor.hpp
@@ -5,7 +5,7 @@
#pragma once
-#include "LayerVisitorBase.hpp"
+#include "armnn/LayerVisitorBase.hpp"
#include "StaticRangeVisitor.hpp"
#include <armnn/INetwork.hpp>
diff --git a/src/armnn/StaticRangeVisitor.hpp b/src/armnn/StaticRangeVisitor.hpp
index 9c3a4f32c1..d834d0449d 100644
--- a/src/armnn/StaticRangeVisitor.hpp
+++ b/src/armnn/StaticRangeVisitor.hpp
@@ -5,7 +5,7 @@
#pragma once
-#include "LayerVisitorBase.hpp"
+#include "armnn/LayerVisitorBase.hpp"
#include <armnn/INetwork.hpp>
#include <armnn/INetworkQuantizer.hpp>
diff --git a/src/armnn/test/QuantizerTest.cpp b/src/armnn/test/QuantizerTest.cpp
index c83d179961..24c130c372 100644
--- a/src/armnn/test/QuantizerTest.cpp
+++ b/src/armnn/test/QuantizerTest.cpp
@@ -8,7 +8,7 @@
#include <armnn/INetworkQuantizer.hpp>
#include <armnn/Types.hpp>
-#include "../LayerVisitorBase.hpp"
+#include "armnn/LayerVisitorBase.hpp"
#include "../Network.hpp"
#include "../Graph.hpp"
#include "../NetworkQuantizerUtils.hpp"