ArmNN
 21.02
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 ConstTensor& weights,
94  const Optional<ConstTensor> biases,
95  const char* name = nullptr)
96  : TestLayerVisitor(name)
97  , m_Descriptor(descriptor)
98  , m_Weights(weights)
99  , m_Biases(biases)
100  {}
101 
103 
105  const FullyConnectedDescriptor& fullyConnectedDescriptor,
106  const ConstTensor& weights,
107  const Optional<ConstTensor>& biases,
108  const char* name = nullptr) override
109  {
110  CheckLayerPointer(layer);
111  CheckLayerName(name);
112  CheckDescriptor(fullyConnectedDescriptor);
113  CheckConstTensors(m_Weights, weights);
114  CheckOptionalConstTensors(m_Biases, biases);
115  }
116 
117 protected:
118  void CheckDescriptor(const FullyConnectedDescriptor& descriptor);
119 private:
120  FullyConnectedDescriptor m_Descriptor;
121  ConstTensor m_Weights;
122  Optional<ConstTensor> m_Biases;
123 };
124 
126 {
127 public:
129  const ConstTensor& mean,
130  const ConstTensor& variance,
131  const ConstTensor& beta,
132  const ConstTensor& gamma,
133  const char* name = nullptr)
134  : TestLayerVisitor(name)
135  , m_Descriptor(descriptor)
136  , m_Mean(mean)
137  , m_Variance(variance)
138  , m_Beta(beta)
139  , m_Gamma(gamma)
140  {}
141 
143  const BatchNormalizationDescriptor& descriptor,
144  const ConstTensor& mean,
145  const ConstTensor& variance,
146  const ConstTensor& beta,
147  const ConstTensor& gamma,
148  const char* name = nullptr) override
149  {
150  CheckLayerPointer(layer);
151  CheckLayerName(name);
152  CheckDescriptor(descriptor);
153  CheckConstTensors(m_Mean, mean);
154  CheckConstTensors(m_Variance, variance);
155  CheckConstTensors(m_Beta, beta);
156  CheckConstTensors(m_Gamma, gamma);
157  }
158 
159 protected:
160  void CheckDescriptor(const BatchNormalizationDescriptor& descriptor);
161 
162 private:
163  BatchNormalizationDescriptor m_Descriptor;
164  ConstTensor m_Mean;
165  ConstTensor m_Variance;
166  ConstTensor m_Beta;
167  ConstTensor m_Gamma;
168 };
169 
171 {
172 public:
173  explicit TestConstantLayerVisitor(const ConstTensor& input,
174  const char* name = nullptr)
175  : TestLayerVisitor(name)
176  , m_Input(input)
177  {}
178 
180  const ConstTensor& input,
181  const char* name = nullptr)
182  {
183  CheckLayerPointer(layer);
184  CheckLayerName(name);
185  CheckConstTensors(m_Input, input);
186  }
187 
188 private:
189  ConstTensor m_Input;
190 };
191 
193 {
194 public:
195  explicit TestLstmLayerVisitor(const LstmDescriptor& descriptor,
196  const LstmInputParams& params,
197  const char* name = nullptr)
198  : TestLayerVisitor(name)
199  , m_Descriptor(descriptor)
200  , m_InputParams(params)
201  {}
202 
204  const LstmDescriptor& descriptor,
205  const LstmInputParams& params,
206  const char* name = nullptr)
207  {
208  CheckLayerPointer(layer);
209  CheckLayerName(name);
210  CheckDescriptor(descriptor);
211  CheckInputParameters(params);
212  }
213 
214 protected:
215  void CheckDescriptor(const LstmDescriptor& descriptor);
216  void CheckInputParameters(const LstmInputParams& inputParams);
217  void CheckConstTensorPtrs(const std::string& name, const ConstTensor* expected, const ConstTensor* actual);
218 
219 private:
220  LstmDescriptor m_Descriptor;
221  LstmInputParams m_InputParams;
222 };
223 
225 {
226 public:
227  explicit TestQLstmLayerVisitor(const QLstmDescriptor& descriptor,
228  const LstmInputParams& params,
229  const char* name = nullptr)
230  : TestLayerVisitor(name)
231  , m_Descriptor(descriptor)
232  , m_InputParams(params)
233  {}
234 
236  const QLstmDescriptor& descriptor,
237  const LstmInputParams& params,
238  const char* name = nullptr)
239  {
240  CheckLayerPointer(layer);
241  CheckLayerName(name);
242  CheckDescriptor(descriptor);
243  CheckInputParameters(params);
244  }
245 
246 protected:
247  void CheckDescriptor(const QLstmDescriptor& descriptor);
248  void CheckInputParameters(const LstmInputParams& inputParams);
249  void CheckConstTensorPtrs(const std::string& name, const ConstTensor* expected, const ConstTensor* actual);
250 
251 private:
252  QLstmDescriptor m_Descriptor;
253  LstmInputParams m_InputParams;
254 };
255 
256 
258 {
259 public:
261  const char* name = nullptr)
262  : TestLayerVisitor(name)
263  , m_InputParams(params)
264  {}
265 
267  const QuantizedLstmInputParams& params,
268  const char* name = nullptr)
269  {
270  CheckLayerPointer(layer);
271  CheckLayerName(name);
272  CheckInputParameters(params);
273  }
274 
275 protected:
276  void CheckInputParameters(const QuantizedLstmInputParams& inputParams);
277  void CheckConstTensorPtrs(const std::string& name, const ConstTensor* expected, const ConstTensor* actual);
278 
279 private:
280  QuantizedLstmInputParams m_InputParams;
281 };
282 
283 
284 } // 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:62
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)
TestFullyConnectedLayerVistor(const FullyConnectedDescriptor &descriptor, const ConstTensor &weights, const Optional< ConstTensor > biases, const char *name=nullptr)
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.
A FullyConnectedDescriptor for the FullyConnectedLayer.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition: Tensor.hpp:314
TestConvolution2dLayerVisitor(const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
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...
void VisitFullyConnectedLayer(const IConnectableLayer *layer, const FullyConnectedDescriptor &fullyConnectedDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Function that a fully connected layer should call back to when its Accept(ILayerVisitor&) function is...
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.