diff options
author | Mike Kelly <mike.kelly@arm.com> | 2019-02-11 17:01:27 +0000 |
---|---|---|
committer | Mike Kelly <mike.kelly@arm.com> | 2019-02-11 17:01:27 +0000 |
commit | 8c1701a2d9c1da0e1decb2afdc2093aa88810242 (patch) | |
tree | 870ee9af506bb468c513214ab539f41aeb1e34dc /src/armnn | |
parent | a40521a70e73d20a060fa2df0e83b02c4f1c6139 (diff) | |
download | armnn-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.cpp | 6 | ||||
-rw-r--r-- | src/armnn/Layer.hpp | 4 | ||||
-rw-r--r-- | src/armnn/LayerVisitorBase.hpp | 175 | ||||
-rw-r--r-- | src/armnn/Network.cpp | 8 | ||||
-rw-r--r-- | src/armnn/Network.hpp | 2 | ||||
-rw-r--r-- | src/armnn/OverrideInputRangeVisitor.hpp | 2 | ||||
-rw-r--r-- | src/armnn/QuantizerVisitor.hpp | 2 | ||||
-rw-r--r-- | src/armnn/StaticRangeVisitor.hpp | 2 | ||||
-rw-r--r-- | src/armnn/test/QuantizerTest.cpp | 2 |
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" |