/// Copyright (c) 2021-2023 ARM Limited and Contributors. All rights reserved.
///
/// SPDX-License-Identifier: MIT
///

namespace armnn
{
/**

@page deserializer Deserializer

The `armnnDeserializer` is a library for loading neural networks defined by Arm NN FlatBuffers files
into the Arm NN runtime.

@section deserializersupport Supported Layers

The Arm NN SDK Deserialize parser currently supports the following layers:

- Abs

- Activation

- Addition

- ArgMinMax

- BatchMatMul

- BatchToSpaceNd

- BatchNormalization

- Cast

- ChannelShuffle

- Concat

- Comparison

- Constant

- Convolution2d

- DepthToSpace

- DepthwiseConvolution2d

- Dequantize

- DetectionPostProcess

- Division

- ElementwiseUnary

- Fill

- Floor

- FullyConnected

- Gather

- GatherNd

- Input

- InstanceNormalization

- L2Normalization

- Logical

- LogSoftmax

- Lstm

- Maximum

- Mean

- Merge

- Minimum

- Multiplication

- Normalization

- Output

- Pad

- Permute

- Pooling2d

- Pooling3d

- Prelu

- Quantize

- QLstm

- QuantizedLstm

- Rank

- Reduce

- Reshape

- Resize

- ResizeBilinear

- ReverseV2

- ScatterNd

- Slice

- Softmax

- SpaceToBatchNd

- SpaceToDepth

- Splitter

- Stack

- StandIn

- StridedSlice

- Subtraction

- Switch

- Transpose

- TransposeConvolution2d

- UnidirectionalSequenceLstm

More machine learning layers will be supported in future releases.

@section deserializersupportdeprecated Deprecated layers

Some layers have been deprecated and replaced by others layers. In order to maintain backward compatibility, serializations of these deprecated layers will deserialize to the layers that have replaced them, as follows:

- Equal will deserialize as Comparison
- Merger will deserialize as Concat
- Greater will deserialize as Comparison
- ResizeBilinear will deserialize as Resize

**/
}
