ArmNN
 24.02
Serializer.hpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017,2019-2023 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #pragma once
6 
7 #include <armnn/IStrategy.hpp>
8 
10 
11 #include <common/include/ProfilingGuid.hpp>
12 
13 #include <unordered_map>
14 
15 #include "ArmnnSchema_generated.h"
16 
17 #include <armnn/Types.hpp>
18 
19 namespace armnnSerializer
20 {
21 
23 {
24 public:
25  void ExecuteStrategy(const armnn::IConnectableLayer* layer,
26  const armnn::BaseDescriptor& descriptor,
27  const std::vector<armnn::ConstTensor>& constants,
28  const char* name,
29  const armnn::LayerBindingId id) override;
30 
31  SerializerStrategy() : m_layerId(0) {}
33 
34  flatbuffers::FlatBufferBuilder& GetFlatBufferBuilder()
35  {
36  return m_flatBufferBuilder;
37  }
38 
39  std::vector<int>& GetInputIds()
40  {
41  return m_inputIds;
42  }
43 
44  std::vector<int>& GetOutputIds()
45  {
46  return m_outputIds;
47  }
48 
49  std::vector<flatbuffers::Offset<armnnSerializer::AnyLayer>>& GetSerializedLayers()
50  {
51  return m_serializedLayers;
52  }
53 
54  flatbuffers::Offset<armnnSerializer::FeatureCompatibilityVersions> GetVersionTable();
55 
56 private:
57  /// Creates the Input Slots and Output Slots and LayerBase for the layer.
58  flatbuffers::Offset<armnnSerializer::LayerBase> CreateLayerBase(
59  const armnn::IConnectableLayer* layer,
60  const armnnSerializer::LayerType layerType);
61 
62  /// Creates the serializer AnyLayer for the layer and adds it to m_serializedLayers.
63  void CreateAnyLayer(const flatbuffers::Offset<void>& layer, const armnnSerializer::Layer serializerLayer);
64 
65  /// Creates the serializer ConstTensor for the armnn ConstTensor.
66  flatbuffers::Offset<armnnSerializer::ConstTensor> CreateConstTensorInfo(
67  const armnn::ConstTensor& constTensor);
68 
69  /// Creates the serializer TensorInfo for the armnn TensorInfo.
70  flatbuffers::Offset<TensorInfo> CreateTensorInfo(const armnn::TensorInfo& tensorInfo);
71 
72  template <typename T>
73  flatbuffers::Offset<flatbuffers::Vector<T>> CreateDataVector(const void* memory, unsigned int size);
74 
75  ///Function which maps Guid to an index
76  uint32_t GetSerializedId(LayerGuid guid);
77 
78  /// Creates the serializer InputSlots for the layer.
79  std::vector<flatbuffers::Offset<armnnSerializer::InputSlot>> CreateInputSlots(
80  const armnn::IConnectableLayer* layer);
81 
82  /// Creates the serializer OutputSlots for the layer.
83  std::vector<flatbuffers::Offset<armnnSerializer::OutputSlot>> CreateOutputSlots(
84  const armnn::IConnectableLayer* layer);
85 
86  /// FlatBufferBuilder to create our layers' FlatBuffers.
87  flatbuffers::FlatBufferBuilder m_flatBufferBuilder;
88 
89  /// AnyLayers required by the SerializedGraph.
90  std::vector<flatbuffers::Offset<armnnSerializer::AnyLayer>> m_serializedLayers;
91 
92  /// Vector of the binding ids of all Input Layers required by the SerializedGraph.
93  std::vector<int> m_inputIds;
94 
95  /// Vector of the binding ids of all Output Layers required by the SerializedGraph.
96  std::vector<int> m_outputIds;
97 
98  /// Mapped Guids of all Layers to match our index.
99  std::unordered_map<LayerGuid, uint32_t > m_guidMap;
100 
101  /// layer within our FlatBuffer index.
102  uint32_t m_layerId;
103 
104 private:
105  void SerializeActivationLayer(const armnn::IConnectableLayer* layer,
106  const armnn::ActivationDescriptor& descriptor,
107  const char* name = nullptr);
108 
109  void SerializeAdditionLayer(const armnn::IConnectableLayer* layer,
110  const char* name = nullptr);
111 
112  void SerializeArgMinMaxLayer(const armnn::IConnectableLayer* layer,
113  const armnn::ArgMinMaxDescriptor& argMinMaxDescriptor,
114  const char* name = nullptr);
115 
116  void SerializeBatchMatMulLayer(const armnn::IConnectableLayer* layer,
117  const armnn::BatchMatMulDescriptor& descriptor,
118  const char* name = nullptr);
119 
120  void SerializeBatchToSpaceNdLayer(const armnn::IConnectableLayer* layer,
121  const armnn::BatchToSpaceNdDescriptor& descriptor,
122  const char* name = nullptr);
123 
124  void SerializeBatchNormalizationLayer(const armnn::IConnectableLayer* layer,
125  const armnn::BatchNormalizationDescriptor& BatchNormalizationDescriptor,
126  const std::vector<armnn::ConstTensor>& constants,
127  const char* name = nullptr);
128 
129  void SerializeCastLayer(const armnn::IConnectableLayer* layer,
130  const char* name = nullptr);
131 
132  void SerializeChannelShuffleLayer(const armnn::IConnectableLayer* layer,
133  const armnn::ChannelShuffleDescriptor& descriptor,
134  const char* name = nullptr);
135 
136  void SerializeComparisonLayer(const armnn::IConnectableLayer* layer,
137  const armnn::ComparisonDescriptor& descriptor,
138  const char* name = nullptr);
139 
140  void SerializeConcatLayer(const armnn::IConnectableLayer* layer,
141  const armnn::ConcatDescriptor& concatDescriptor,
142  const char* name = nullptr);
143 
144  void SerializeConstantLayer(const armnn::IConnectableLayer* layer,
145  const std::vector<armnn::ConstTensor>& constants,
146  const char* name = nullptr);
147 
148  void SerializeConvolution2dLayer(const armnn::IConnectableLayer* layer,
149  const armnn::Convolution2dDescriptor& descriptor,
150  const char* name = nullptr);
151 
152  void SerializeConvolution3dLayer(const armnn::IConnectableLayer* layer,
153  const armnn::Convolution3dDescriptor& descriptor,
154  const char* name = nullptr);
155 
156  void SerializeDepthToSpaceLayer(const armnn::IConnectableLayer* layer,
157  const armnn::DepthToSpaceDescriptor& descriptor,
158  const char* name = nullptr);
159 
160  void SerializeDepthwiseConvolution2dLayer(const armnn::IConnectableLayer* layer,
161  const armnn::DepthwiseConvolution2dDescriptor& descriptor,
162  const char* name = nullptr);
163 
164  void SerializeDequantizeLayer(const armnn::IConnectableLayer* layer,
165  const char* name = nullptr);
166 
167  void SerializeDetectionPostProcessLayer(const armnn::IConnectableLayer* layer,
168  const armnn::DetectionPostProcessDescriptor& descriptor,
169  const std::vector<armnn::ConstTensor>& constants,
170  const char* name = nullptr);
171 
172  void SerializeDivisionLayer(const armnn::IConnectableLayer* layer,
173  const char* name = nullptr);
174 
175  void SerializeElementwiseBinaryLayer(const armnn::IConnectableLayer* layer,
176  const armnn::ElementwiseBinaryDescriptor& descriptor,
177  const char* name = nullptr);
178 
179  void SerializeElementwiseUnaryLayer(const armnn::IConnectableLayer* layer,
180  const armnn::ElementwiseUnaryDescriptor& descriptor,
181  const char* name = nullptr);
182 
183  void SerializeFillLayer(const armnn::IConnectableLayer* layer,
184  const armnn::FillDescriptor& fillDescriptor,
185  const char* name = nullptr);
186 
187  void SerializeFloorLayer(const armnn::IConnectableLayer *layer,
188  const char *name = nullptr);
189 
190  void SerializeFullyConnectedLayer(const armnn::IConnectableLayer* layer,
191  const armnn::FullyConnectedDescriptor& fullyConnectedDescriptor,
192  const char* name = nullptr);
193 
194  void SerializeGatherLayer(const armnn::IConnectableLayer* layer,
195  const armnn::GatherDescriptor& gatherDescriptor,
196  const char* name = nullptr);
197 
198  void SerializeGatherNdLayer(const armnn::IConnectableLayer* layer,
199  const char* name = nullptr);
200 
201  void SerializeInputLayer(const armnn::IConnectableLayer* layer,
203  const char* name = nullptr);
204 
205  void SerializeInstanceNormalizationLayer(const armnn::IConnectableLayer* layer,
206  const armnn::InstanceNormalizationDescriptor& instanceNormalizationDescriptor,
207  const char* name = nullptr);
208 
209  void SerializeL2NormalizationLayer(const armnn::IConnectableLayer* layer,
210  const armnn::L2NormalizationDescriptor& l2NormalizationDescriptor,
211  const char* name = nullptr);
212 
213  void SerializeLogicalBinaryLayer(const armnn::IConnectableLayer* layer,
214  const armnn::LogicalBinaryDescriptor& descriptor,
215  const char* name = nullptr);
216 
217  void SerializeLogSoftmaxLayer(const armnn::IConnectableLayer* layer,
218  const armnn::LogSoftmaxDescriptor& logSoftmaxDescriptor,
219  const char* name = nullptr);
220 
221  void SerializeLstmLayer(const armnn::IConnectableLayer* layer,
222  const armnn::LstmDescriptor& descriptor,
223  const std::vector<armnn::ConstTensor>& constants,
224  const char* name = nullptr);
225 
226  void SerializeMeanLayer(const armnn::IConnectableLayer* layer,
227  const armnn::MeanDescriptor& descriptor,
228  const char* name);
229 
230  void SerializeMinimumLayer(const armnn::IConnectableLayer* layer,
231  const char* name = nullptr);
232 
233  void SerializeMaximumLayer(const armnn::IConnectableLayer* layer,
234  const char* name = nullptr);
235 
236  void SerializeMergeLayer(const armnn::IConnectableLayer* layer,
237  const char* name = nullptr);
238 
239  void SerializeMultiplicationLayer(const armnn::IConnectableLayer* layer,
240  const char* name = nullptr);
241 
242  void SerializeOutputLayer(const armnn::IConnectableLayer* layer,
244  const char* name = nullptr);
245 
246  void SerializePadLayer(const armnn::IConnectableLayer* layer,
247  const armnn::PadDescriptor& PadDescriptor,
248  const char* name = nullptr);
249 
250  void SerializePermuteLayer(const armnn::IConnectableLayer* layer,
251  const armnn::PermuteDescriptor& PermuteDescriptor,
252  const char* name = nullptr);
253 
254  void SerializePooling2dLayer(const armnn::IConnectableLayer* layer,
255  const armnn::Pooling2dDescriptor& pooling2dDescriptor,
256  const char* name = nullptr);
257 
258  void SerializePooling3dLayer(const armnn::IConnectableLayer* layer,
259  const armnn::Pooling3dDescriptor& pooling3dDescriptor,
260  const char* name = nullptr);
261 
262  void SerializePreluLayer(const armnn::IConnectableLayer* layer,
263  const char* name = nullptr);
264 
265  void SerializeQuantizeLayer(const armnn::IConnectableLayer* layer,
266  const char* name = nullptr);
267 
268  void SerializeQLstmLayer(const armnn::IConnectableLayer* layer,
269  const armnn::QLstmDescriptor& descriptor,
270  const std::vector<armnn::ConstTensor>& constants,
271  const char* name = nullptr);
272 
273  void SerializeQuantizedLstmLayer(const armnn::IConnectableLayer* layer,
274  const std::vector<armnn::ConstTensor>& constants,
275  const char* name = nullptr);
276 
277  void SerializeRankLayer(const armnn::IConnectableLayer* layer,
278  const char* name = nullptr);
279 
280  void SerializeReduceLayer(const armnn::IConnectableLayer* layer,
281  const armnn::ReduceDescriptor& reduceDescriptor,
282  const char* name = nullptr);
283 
284  void SerializeReshapeLayer(const armnn::IConnectableLayer* layer,
285  const armnn::ReshapeDescriptor& reshapeDescriptor,
286  const char* name = nullptr);
287 
288  void SerializeResizeLayer(const armnn::IConnectableLayer* layer,
289  const armnn::ResizeDescriptor& resizeDescriptor,
290  const char* name = nullptr);
291 
292  void SerializeReverseV2Layer(const armnn::IConnectableLayer* layer,
293  const char* name = nullptr);
294 
295  void SerializeSliceLayer(const armnn::IConnectableLayer* layer,
296  const armnn::SliceDescriptor& sliceDescriptor,
297  const char* name = nullptr);
298 
299  void SerializeSoftmaxLayer(const armnn::IConnectableLayer* layer,
300  const armnn::SoftmaxDescriptor& softmaxDescriptor,
301  const char* name = nullptr);
302 
303  void SerializeSpaceToBatchNdLayer(const armnn::IConnectableLayer* layer,
304  const armnn::SpaceToBatchNdDescriptor& spaceToBatchNdDescriptor,
305  const char* name = nullptr);
306 
307  void SerializeSpaceToDepthLayer(const armnn::IConnectableLayer* layer,
308  const armnn::SpaceToDepthDescriptor& spaceToDepthDescriptor,
309  const char* name = nullptr);
310 
311  void SerializeNormalizationLayer(const armnn::IConnectableLayer* layer,
312  const armnn::NormalizationDescriptor& normalizationDescriptor,
313  const char* name = nullptr);
314 
315  void SerializeShapeLayer(const armnn::IConnectableLayer* layer,
316  const char* name = nullptr);
317 
318  void SerializeSplitterLayer(const armnn::IConnectableLayer* layer,
319  const armnn::ViewsDescriptor& viewsDescriptor,
320  const char* name = nullptr);
321 
322  void SerializeStandInLayer(const armnn::IConnectableLayer* layer,
323  const armnn::StandInDescriptor& standInDescriptor,
324  const char* name = nullptr);
325 
326  void SerializeStackLayer(const armnn::IConnectableLayer* layer,
327  const armnn::StackDescriptor& stackDescriptor,
328  const char* name = nullptr);
329 
330  void SerializeStridedSliceLayer(const armnn::IConnectableLayer* layer,
331  const armnn::StridedSliceDescriptor& stridedSliceDescriptor,
332  const char* name = nullptr);
333 
334  void SerializeSubtractionLayer(const armnn::IConnectableLayer* layer,
335  const char* name = nullptr);
336 
337  void SerializeSwitchLayer(const armnn::IConnectableLayer* layer,
338  const char* name = nullptr);
339 
340  void SerializeTileLayer(const armnn::IConnectableLayer* layer,
341  const armnn::TileDescriptor& descriptor,
342  const char* name);
343 
344  void SerializeTransposeConvolution2dLayer(const armnn::IConnectableLayer* layer,
345  const armnn::TransposeConvolution2dDescriptor& descriptor,
346  const std::vector<armnn::ConstTensor>& constants,
347  const char* = nullptr);
348 
349  void SerializeTransposeLayer(const armnn::IConnectableLayer* layer,
350  const armnn::TransposeDescriptor& descriptor,
351  const char* name = nullptr);
352 
353  void SerializeUnidirectionalSequenceLstmLayer(const armnn::IConnectableLayer* layer,
355  const std::vector<armnn::ConstTensor>& constants,
356  const char* name = nullptr);
357 };
358 
359 
360 
362 {
363 public:
364  SerializerImpl() = default;
365  ~SerializerImpl() = default;
366 
367  /// Serializes the network to ArmNN SerializedGraph.
368  /// @param [in] inNetwork The network to be serialized.
369  void Serialize(const armnn::INetwork& inNetwork);
370 
371  /// Serializes the SerializedGraph to the stream.
372  /// @param [stream] the stream to save to
373  /// @return true if graph is Serialized to the Stream, false otherwise
374  bool SaveSerializedToStream(std::ostream& stream);
375 
376 private:
377 
378  /// Visitor to contruct serialized network
379  SerializerStrategy m_SerializerStrategy;
380 };
381 
382 } //namespace armnnSerializer
armnn::BatchNormalizationDescriptor
A BatchNormalizationDescriptor for the BatchNormalizationLayer.
Definition: Descriptors.hpp:828
armnn::ViewsDescriptor
A ViewsDescriptor for the SplitterLayer.
Definition: Descriptors.hpp:244
armnn::ActivationDescriptor
An ActivationDescriptor for the ActivationLayer.
Definition: Descriptors.hpp:36
armnn::FullyConnectedDescriptor
A FullyConnectedDescriptor for the FullyConnectedLayer.
Definition: Descriptors.hpp:507
armnn::QLstmDescriptor
A QLstmDescriptor for the QLstmLayer.
Definition: Descriptors.hpp:1380
armnn::Pooling3dDescriptor
A Pooling3dDescriptor for the Pooling3dLayer.
Definition: Descriptors.hpp:431
armnn::ResizeDescriptor
A ResizeDescriptor for the ResizeLayer.
Definition: Descriptors.hpp:985
armnn::ArgMinMaxDescriptor
An ArgMinMaxDescriptor for ArgMinMaxLayer.
Definition: Descriptors.hpp:67
armnn::InstanceNormalizationDescriptor
An InstanceNormalizationDescriptor for InstanceNormalizationLayer.
Definition: Descriptors.hpp:847
armnn::GatherDescriptor
A GatherDescriptor for the GatherLayer.
Definition: Descriptors.hpp:965
armnn::TensorInfo
Definition: Tensor.hpp:152
armnn::L2NormalizationDescriptor
A L2NormalizationDescriptor for the L2NormalizationLayer.
Definition: Descriptors.hpp:809
armnn::NormalizationDescriptor
A NormalizationDescriptor for the NormalizationLayer.
Definition: Descriptors.hpp:769
armnn::ChannelShuffleDescriptor
A ChannelShuffleDescriptor for the ChannelShuffle operator.
Definition: Descriptors.hpp:1562
armnnSerializer::SerializerStrategy::GetFlatBufferBuilder
flatbuffers::FlatBufferBuilder & GetFlatBufferBuilder()
Definition: Serializer.hpp:34
armnnSerializer
Definition: ISerializer.hpp:11
armnn::StackDescriptor
A StackDescriptor for the StackLayer.
Definition: Descriptors.hpp:1251
armnn::IStrategy
Definition: IStrategy.hpp:16
ISerializer.hpp
armnnSerializer::ISerializer::SerializerImpl
Definition: Serializer.hpp:361
armnn::ElementwiseBinaryDescriptor
A ElementwiseBinaryDescriptor for the ElementwiseBinaryLayer.
Definition: Descriptors.hpp:109
armnn::PadDescriptor
A PadDescriptor for the PadLayer.
Definition: Descriptors.hpp:1196
armnn::TransposeDescriptor
A TransposeDescriptor for the TransposeLayer.
Definition: Descriptors.hpp:1490
armnn::SliceDescriptor
A SliceDescriptor for the SliceLayer.
Definition: Descriptors.hpp:1228
armnn::ReshapeDescriptor
A ReshapeDescriptor for the ReshapeLayer.
Definition: Descriptors.hpp:1023
armnnSerializer::ISerializer::SerializerImpl::SerializerImpl
SerializerImpl()=default
armnnSerializer::SerializerStrategy
Definition: Serializer.hpp:22
armnn::LayerBindingId
int LayerBindingId
Type of identifiers for bindable layers (inputs, outputs).
Definition: Types.hpp:309
armnn::PermuteDescriptor
A PermuteDescriptor for the PermuteLayer.
Definition: Descriptors.hpp:149
armnn::BatchMatMulDescriptor
A BatchMatMulDescriptor for the BatchMatMul operator.
Definition: Descriptors.hpp:1584
armnnSerializer::SerializerStrategy::GetVersionTable
flatbuffers::Offset< armnnSerializer::FeatureCompatibilityVersions > GetVersionTable()
Definition: Serializer.cpp:1972
armnn::SpaceToBatchNdDescriptor
A SpaceToBatchNdDescriptor for the SpaceToBatchNdLayer.
Definition: Descriptors.hpp:1043
armnn::Convolution3dDescriptor
A Convolution3dDescriptor for the Convolution3dLayer.
Definition: Descriptors.hpp:588
armnn::BaseDescriptor
Base class for all descriptors.
Definition: Descriptors.hpp:22
armnnSerializer::ISerializer::SerializerImpl::SaveSerializedToStream
bool SaveSerializedToStream(std::ostream &stream)
Serializes the SerializedGraph to the stream.
Definition: Serializer.cpp:2510
LayerGuid
arm::pipe::ProfilingGuid LayerGuid
Define LayerGuid type.
Definition: Types.hpp:26
armnn::BatchToSpaceNdDescriptor
A BatchToSpaceNdDescriptor for the BatchToSpaceNdLayer.
Definition: Descriptors.hpp:875
armnn::Convolution2dDescriptor
A Convolution2dDescriptor for the Convolution2dLayer.
Definition: Descriptors.hpp:534
armnn::ComparisonDescriptor
A ComparisonDescriptor for the ComparisonLayer.
Definition: Descriptors.hpp:89
armnn::FillDescriptor
A FillDescriptor for the FillLayer.
Definition: Descriptors.hpp:925
armnnSerializer::SerializerStrategy::GetInputIds
std::vector< int > & GetInputIds()
Definition: Serializer.hpp:39
armnn::StandInDescriptor
A StandInDescriptor for the StandIn layer.
Definition: Descriptors.hpp:1281
IStrategy.hpp
armnnSerializer::SerializerStrategy::SerializerStrategy
SerializerStrategy()
Definition: Serializer.hpp:31
armnnSerializer::SerializerStrategy::~SerializerStrategy
~SerializerStrategy()
Definition: Serializer.hpp:32
armnn::LstmDescriptor
An LstmDescriptor for the LstmLayer.
Definition: Descriptors.hpp:1102
armnn::StridedSliceDescriptor
A StridedSliceDescriptor for the StridedSliceLayer.
Definition: Descriptors.hpp:1303
armnnSerializer::SerializerStrategy::GetOutputIds
std::vector< int > & GetOutputIds()
Definition: Serializer.hpp:44
armnn::LogicalBinaryDescriptor
A LogicalBinaryDescriptor for the LogicalBinaryLayer.
Definition: Descriptors.hpp:1518
armnnSerializer::ISerializer::SerializerImpl::~SerializerImpl
~SerializerImpl()=default
armnn::OriginsDescriptor
An OriginsDescriptor for the ConcatLayer.
Definition: Descriptors.hpp:201
armnn::ElementwiseUnaryDescriptor
A ElementwiseUnaryDescriptor for the ElementwiseUnaryLayer.
Definition: Descriptors.hpp:129
armnn::TransposeConvolution2dDescriptor
A TransposeConvolution2dDescriptor for the TransposeConvolution2dLayer.
Definition: Descriptors.hpp:1440
Types.hpp
armnn::ConstTensor
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
Definition: Tensor.hpp:329
armnn::IConnectableLayer
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
Definition: INetwork.hpp:80
armnn::DetectionPostProcessDescriptor
Definition: Descriptors.hpp:713
armnn::Pooling2dDescriptor
A Pooling2dDescriptor for the Pooling2dLayer.
Definition: Descriptors.hpp:371
armnn::DepthwiseConvolution2dDescriptor
A DepthwiseConvolution2dDescriptor for the DepthwiseConvolution2dLayer.
Definition: Descriptors.hpp:659
armnn::ReduceDescriptor
A ReduceDescriptor for the REDUCE operators.
Definition: Descriptors.hpp:1538
armnnSerializer::ISerializer::SerializerImpl::Serialize
void Serialize(const armnn::INetwork &inNetwork)
Serializes the network to ArmNN SerializedGraph.
Definition: Serializer.cpp:2491
armnnSerializer::SerializerStrategy::ExecuteStrategy
void ExecuteStrategy(const armnn::IConnectableLayer *layer, const armnn::BaseDescriptor &descriptor, const std::vector< armnn::ConstTensor > &constants, const char *name, const armnn::LayerBindingId id) override
Definition: Serializer.cpp:2029
armnn::LayerType
LayerType
When adding a new layer, adapt also the LastLayer enum value in the enum class LayerType below.
Definition: Types.hpp:491
armnn::MeanDescriptor
A MeanDescriptor for the MeanLayer.
Definition: Descriptors.hpp:1172
armnn::TileDescriptor
Definition: Descriptors.hpp:1640
armnn::SoftmaxDescriptor
A SoftmaxDescriptor for the SoftmaxLayer.
Definition: Descriptors.hpp:177
armnn::SpaceToDepthDescriptor
A SpaceToDepthDescriptor for the SpaceToDepthLayer.
Definition: Descriptors.hpp:1075
armnnSerializer::SerializerStrategy::GetSerializedLayers
std::vector< flatbuffers::Offset< armnnSerializer::AnyLayer > > & GetSerializedLayers()
Definition: Serializer.hpp:49
armnn::INetwork
Main network class which provides the interface for building up a neural network.
Definition: INetwork.hpp:347