ArmNN
 25.11
Loading...
Searching...
No Matches
ConstantLayer.hpp
Go to the documentation of this file.
1//
2// Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#pragma once
6
7#include <Layer.hpp>
8
9namespace armnn
10{
11
13
14/// A layer that the constant data can be bound to.
15class ConstantLayer : public Layer
16{
17public:
18 /// Makes a workload for the Constant type.
19 /// @param [in] graph The graph where this layer can be found.
20 /// @param [in] factory The workload factory which will create the workload.
21 /// @return A pointer to the created workload, or nullptr if not created.
22 virtual std::unique_ptr<IWorkload> CreateWorkload(const IWorkloadFactory& factory) const override;
23
24 /// Creates a dynamically-allocated copy of this layer.
25 /// @param [in] graph The graph into which this layer is being cloned.
26 ConstantLayer* Clone(Graph& graph) const override;
27
28 /// Check if the input tensor shape(s)
29 /// will lead to a valid configuration of @ref ConstantLayer
30 /// @param [in] shapeInferenceMethod Indicates if output shape shall be overwritten or just validated.
31 void ValidateTensorShapesFromInputs() override;
32
33 /// By default returns inputShapes if the number of inputs are equal to number of outputs,
34 /// otherwise infers the output shapes from given input shapes and layer properties.
35 /// @param [in] inputShapes The input shapes layer has.
36 /// @return a vector to the inferred output shape.
37 std::vector<TensorShape> InferOutputShapes(const std::vector<TensorShape>& inputShapes) const override;
38
39 /// Free up the constant source data stored by the layer.
40 void ReleaseConstantData() override {}
41
42 void ExecuteStrategy(IStrategy& strategy) const override;
43
45
46 std::shared_ptr<ConstTensorHandle> m_LayerOutput;
47
48protected:
49 /// Constructor to create a ConstantLayer.
50 /// @param [in] name Optional name for the layer.
51 ConstantLayer(const char* name);
52
53 /// Default destructor
54 ~ConstantLayer() = default;
55
56 /// Retrieve the handles to the constant values stored by the layer.
57 // For API stability DO NOT ALTER order and add new members to the end of vector
59};
60
61} // namespace
ConstantLayer(const char *name)
Constructor to create a ConstantLayer.
~ConstantLayer()=default
Default destructor.
void SerializeLayerParameters(ParameterStringifyFunction &fn) const override
Helper to serialize the layer parameters to string.
void ExecuteStrategy(IStrategy &strategy) const override
Apply a visitor to this layer.
void ReleaseConstantData() override
Free up the constant source data stored by the layer.
ConstantLayer * Clone(Graph &graph) const override
Creates a dynamically-allocated copy of this layer.
std::vector< TensorShape > InferOutputShapes(const std::vector< TensorShape > &inputShapes) const override
By default returns inputShapes if the number of inputs are equal to number of outputs,...
ImmutableConstantTensors GetConstantTensorsByRef() const override
Retrieve the handles to the constant values stored by the layer.
void ValidateTensorShapesFromInputs() override
Check if the input tensor shape(s) will lead to a valid configuration of ConstantLayer.
std::shared_ptr< ConstTensorHandle > m_LayerOutput
virtual std::unique_ptr< IWorkload > CreateWorkload(const IWorkloadFactory &factory) const override
Makes a workload for the Constant type.
std::vector< std::reference_wrapper< const std::shared_ptr< ConstTensorHandle > > > ImmutableConstantTensors
Definition INetwork.hpp:141
Layer(unsigned int numInputSlots, unsigned int numOutputSlots, LayerType type, const char *name)
Definition Layer.cpp:260
friend class Graph
Definition Layer.hpp:382
Copyright (c) 2021 ARM Limited and Contributors.
std::function< void(const std::string &name, const std::string &value)> ParameterStringifyFunction