ArmNN
 21.08
ConstTensorLayerVisitor.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include "TestLayerVisitor.hpp"
8 #include <armnn/Descriptors.hpp>
9 #include <armnn/LstmParams.hpp>
11 
12 namespace armnn
13 {
14 
16 {
17 public:
18  explicit TestConvolution2dLayerVisitor(const Convolution2dDescriptor& convolution2dDescriptor,
19  const ConstTensor& weights,
20  const Optional<ConstTensor>& biases,
21  const char* name = nullptr)
22  : TestLayerVisitor(name)
23  , m_Descriptor(convolution2dDescriptor)
24  , m_Weights(weights)
25  , m_Biases(biases)
26  {}
27 
29 
31  const Convolution2dDescriptor& convolution2dDescriptor,
32  const ConstTensor& weights,
33  const Optional<ConstTensor>& biases,
34  const char* name = nullptr) override
35  {
36  CheckLayerPointer(layer);
37  CheckLayerName(name);
38  CheckDescriptor(convolution2dDescriptor);
39  CheckConstTensors(m_Weights, weights);
40  CheckOptionalConstTensors(m_Biases, biases);
41  }
42 
43 protected:
44  void CheckDescriptor(const Convolution2dDescriptor& convolution2dDescriptor);
45 
46 private:
47  Convolution2dDescriptor m_Descriptor;
48  ConstTensor m_Weights;
49  Optional<ConstTensor> m_Biases;
50 };
51 
53 {
54 public:
56  const ConstTensor& weights,
57  const Optional<ConstTensor>& biases,
58  const char* name = nullptr)
59  : TestLayerVisitor(name)
60  , m_Descriptor(descriptor)
61  , m_Weights(weights)
62  , m_Biases(biases)
63  {}
64 
66 
68  const DepthwiseConvolution2dDescriptor& convolution2dDescriptor,
69  const ConstTensor& weights,
70  const Optional<ConstTensor>& biases,
71  const char* name = nullptr) override
72  {
73  CheckLayerPointer(layer);
74  CheckLayerName(name);
75  CheckDescriptor(convolution2dDescriptor);
76  CheckConstTensors(m_Weights, weights);
77  CheckOptionalConstTensors(m_Biases, biases);
78  }
79 
80 protected:
81  void CheckDescriptor(const DepthwiseConvolution2dDescriptor& convolution2dDescriptor);
82 
83 private:
85  ConstTensor m_Weights;
86  Optional<ConstTensor> m_Biases;
87 };
88 
90 {
91 public:
93  const char* name = nullptr)
94  : TestLayerVisitor(name)
95  , m_Descriptor(descriptor)
96  {}
97 
99 
101  const FullyConnectedDescriptor& fullyConnectedDescriptor,
102  const char* name = nullptr) override
103  {
104  CheckLayerPointer(layer);
105  CheckLayerName(name);
106  CheckDescriptor(fullyConnectedDescriptor);
107  }
108 
109 protected:
110  void CheckDescriptor(const FullyConnectedDescriptor& descriptor);
111 private:
112  FullyConnectedDescriptor m_Descriptor;
113 };
114 
116 {
117 public:
119  const ConstTensor& mean,
120  const ConstTensor& variance,
121  const ConstTensor& beta,
122  const ConstTensor& gamma,
123  const char* name = nullptr)
124  : TestLayerVisitor(name)
125  , m_Descriptor(descriptor)
126  , m_Mean(mean)
127  , m_Variance(variance)
128  , m_Beta(beta)
129  , m_Gamma(gamma)
130  {}
131 
133  const BatchNormalizationDescriptor& descriptor,
134  const ConstTensor& mean,
135  const ConstTensor& variance,
136  const ConstTensor& beta,
137  const ConstTensor& gamma,
138  const char* name = nullptr) override
139  {
140  CheckLayerPointer(layer);
141  CheckLayerName(name);
142  CheckDescriptor(descriptor);
143  CheckConstTensors(m_Mean, mean);
144  CheckConstTensors(m_Variance, variance);
145  CheckConstTensors(m_Beta, beta);
146  CheckConstTensors(m_Gamma, gamma);
147  }
148 
149 protected:
150  void CheckDescriptor(const BatchNormalizationDescriptor& descriptor);
151 
152 private:
153  BatchNormalizationDescriptor m_Descriptor;
154  ConstTensor m_Mean;
155  ConstTensor m_Variance;
156  ConstTensor m_Beta;
157  ConstTensor m_Gamma;
158 };
159 
161 {
162 public:
163  explicit TestConstantLayerVisitor(const ConstTensor& input,
164  const char* name = nullptr)
165  : TestLayerVisitor(name)
166  , m_Input(input)
167  {}
168 
170  const ConstTensor& input,
171  const char* name = nullptr)
172  {
173  CheckLayerPointer(layer);
174  CheckLayerName(name);
175  CheckConstTensors(m_Input, input);
176  }
177 
178 private:
179  ConstTensor m_Input;
180 };
181 
183 {
184 public:
185  explicit TestLstmLayerVisitor(const LstmDescriptor& descriptor,
186  const LstmInputParams& params,
187  const char* name = nullptr)
188  : TestLayerVisitor(name)
189  , m_Descriptor(descriptor)
190  , m_InputParams(params)
191  {}
192 
194  const LstmDescriptor& descriptor,
195  const LstmInputParams& params,
196  const char* name = nullptr)
197  {
198  CheckLayerPointer(layer);
199  CheckLayerName(name);
200  CheckDescriptor(descriptor);
201  CheckInputParameters(params);
202  }
203 
204 protected:
205  void CheckDescriptor(const LstmDescriptor& descriptor);
206  void CheckInputParameters(const LstmInputParams& inputParams);
207  void CheckConstTensorPtrs(const std::string& name, const ConstTensor* expected, const ConstTensor* actual);
208 
209 private:
210  LstmDescriptor m_Descriptor;
211  LstmInputParams m_InputParams;
212 };
213 
215 {
216 public:
217  explicit TestQLstmLayerVisitor(const QLstmDescriptor& descriptor,
218  const LstmInputParams& params,
219  const char* name = nullptr)
220  : TestLayerVisitor(name)
221  , m_Descriptor(descriptor)
222  , m_InputParams(params)
223  {}
224 
226  const QLstmDescriptor& descriptor,
227  const LstmInputParams& params,
228  const char* name = nullptr)
229  {
230  CheckLayerPointer(layer);
231  CheckLayerName(name);
232  CheckDescriptor(descriptor);
233  CheckInputParameters(params);
234  }
235 
236 protected:
237  void CheckDescriptor(const QLstmDescriptor& descriptor);
238  void CheckInputParameters(const LstmInputParams& inputParams);
239  void CheckConstTensorPtrs(const std::string& name, const ConstTensor* expected, const ConstTensor* actual);
240 
241 private:
242  QLstmDescriptor m_Descriptor;
243  LstmInputParams m_InputParams;
244 };
245 
246 
248 {
249 public:
251  const char* name = nullptr)
252  : TestLayerVisitor(name)
253  , m_InputParams(params)
254  {}
255 
257  const QuantizedLstmInputParams& params,
258  const char* name = nullptr)
259  {
260  CheckLayerPointer(layer);
261  CheckLayerName(name);
262  CheckInputParameters(params);
263  }
264 
265 protected:
266  void CheckInputParameters(const QuantizedLstmInputParams& inputParams);
267  void CheckConstTensorPtrs(const std::string& name, const ConstTensor* expected, const ConstTensor* actual);
268 
269 private:
270  QuantizedLstmInputParams m_InputParams;
271 };
272 
273 
274 } // namespace armnn
void CheckLayerName(const char *name)
void VisitQLstmLayer(const IConnectableLayer *layer, const QLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
Function a QLstm layer should call back to when its Accept(ILayerVisitor&) function is invoked...
void VisitQuantizedLstmLayer(const IConnectableLayer *layer, const QuantizedLstmInputParams &params, const char *name=nullptr)
Function a QuantizedLstm layer should call back to when its Accept(ILayerVisitor&) function is invoke...
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:61
A Convolution2dDescriptor for the Convolution2dLayer.
void CheckLayerPointer(const IConnectableLayer *layer)
Copyright (c) 2021 ARM Limited and Contributors.
TestDepthwiseConvolution2dLayerVisitor(const DepthwiseConvolution2dDescriptor &descriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
void CheckConstTensors(const ConstTensor &expected, const ConstTensor &actual)
TestBatchNormalizationLayerVisitor(const BatchNormalizationDescriptor &descriptor, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
An LstmDescriptor for the LstmLayer.
TestFullyConnectedLayerVistor(const FullyConnectedDescriptor &descriptor, const char *name=nullptr)
A FullyConnectedDescriptor for the FullyConnectedLayer.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition: Tensor.hpp:327
TestConvolution2dLayerVisitor(const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
void VisitFullyConnectedLayer(const IConnectableLayer *layer, const FullyConnectedDescriptor &fullyConnectedDescriptor, const char *name=nullptr) override
Function that a fully connected layer should call back to when its Accept(ILayerVisitor&) function is...
TestConstantLayerVisitor(const ConstTensor &input, const char *name=nullptr)
void VisitBatchNormalizationLayer(const IConnectableLayer *layer, const BatchNormalizationDescriptor &descriptor, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr) override
Function that a batch normalization layer should call back to when its Accept(ILayerVisitor&) functio...
void CheckDescriptor(const Convolution2dDescriptor &convolution2dDescriptor)
A QLstmDescriptor for the QLstmLayer.
void VisitDepthwiseConvolution2dLayer(const IConnectableLayer *layer, const DepthwiseConvolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Function that a 2D depthwise convolution layer with biases should call back to when its Accept(ILayer...
void VisitLstmLayer(const IConnectableLayer *layer, const LstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
Function an Lstm layer should call back to when its Accept(ILayerVisitor&) function is invoked...
TestLstmLayerVisitor(const LstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
void VisitConvolution2dLayer(const IConnectableLayer *layer, const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Function that a 2D convolution layer should call back to when its Accept(ILayerVisitor&) function is ...
void CheckOptionalConstTensors(const Optional< ConstTensor > &expected, const Optional< ConstTensor > &actual)
TestQLstmLayerVisitor(const QLstmDescriptor &descriptor, const LstmInputParams &params, const char *name=nullptr)
TestQuantizedLstmLayerVisitor(const QuantizedLstmInputParams &params, const char *name=nullptr)
void VisitConstantLayer(const IConnectableLayer *layer, const ConstTensor &input, const char *name=nullptr)
Function a layer with no inputs and a single output, which always corresponds to the passed in consta...
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.