diff options
Diffstat (limited to 'src/armnn/layers/LayerWithParameters.hpp')
-rw-r--r-- | src/armnn/layers/LayerWithParameters.hpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/armnn/layers/LayerWithParameters.hpp b/src/armnn/layers/LayerWithParameters.hpp new file mode 100644 index 0000000000..e3eb40a273 --- /dev/null +++ b/src/armnn/layers/LayerWithParameters.hpp @@ -0,0 +1,52 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// See LICENSE file in the project root for full license information. +// +#pragma once + +#include <Layer.hpp> + +namespace armnn +{ + +template <typename Parameters> +class LayerWithParameters : public Layer +{ +public: + using DescriptorType = Parameters; + + const Parameters& GetParameters() const { return m_Param; } + + /// Helper to serialize the layer parameters to string + /// (currently used in DotSerializer and company) + void SerializeLayerParameters(ParameterStringifyFunction & fn) const + { + StringifyLayerParameters<Parameters>::Serialize(fn, m_Param); + } + +protected: + LayerWithParameters(unsigned int numInputSlots, + unsigned int numOutputSlots, + LayerType type, + const Parameters& param, + const char* name) + : Layer(numInputSlots, numOutputSlots, type, name) + , m_Param(param) + { + } + + ~LayerWithParameters() = default; + + /// Helper function to reduce duplication in *Layer::CreateWorkload + template <typename QueueDescriptor> + WorkloadInfo PrepInfoAndDesc(QueueDescriptor& descriptor, const Graph& graph) const + { + descriptor.m_Parameters = m_Param; + return Layer::PrepInfoAndDesc(descriptor, graph); + } + + /// The parameters for the layer (not including tensor-valued weights etc.) + Parameters m_Param; +}; + +} // namespace |