ArmNN
 20.02
LayersFwd.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 "InternalTypes.hpp"
8 
10 #include "layers/AdditionLayer.hpp"
15 #include "layers/ConcatLayer.hpp"
16 #include "layers/ConstantLayer.hpp"
20 #include "layers/DebugLayer.hpp"
25 #include "layers/DivisionLayer.hpp"
28 #include "layers/FloorLayer.hpp"
30 #include "layers/GatherLayer.hpp"
31 #include "layers/InputLayer.hpp"
35 #include "layers/LstmLayer.hpp"
36 #include "layers/MaximumLayer.hpp"
37 #include "layers/MeanLayer.hpp"
38 #include "layers/MemCopyLayer.hpp"
40 #include "layers/MergeLayer.hpp"
41 #include "layers/MinimumLayer.hpp"
44 #include "layers/OutputLayer.hpp"
45 #include "layers/PadLayer.hpp"
46 #include "layers/PermuteLayer.hpp"
49 #include "layers/PreluLayer.hpp"
50 #include "layers/QuantizeLayer.hpp"
52 #include "layers/ReshapeLayer.hpp"
53 #include "layers/ResizeLayer.hpp"
54 #include "layers/SliceLayer.hpp"
55 #include "layers/SoftmaxLayer.hpp"
58 #include "layers/SplitterLayer.hpp"
59 #include "layers/StackLayer.hpp"
60 #include "layers/StandInLayer.hpp"
63 #include "layers/SwitchLayer.hpp"
66 
67 namespace armnn
68 {
69 
70 template <LayerType Type>
72 
73 template <LayerType Type>
75 
76 template <typename T>
77 constexpr LayerType LayerEnumOf(const T* = nullptr);
78 
79 #define DECLARE_LAYER_IMPL(_, LayerName) \
80  class LayerName##Layer; \
81  template <> \
82  struct LayerTypeOfImpl<LayerType::_##LayerName> \
83  { \
84  using Type = LayerName##Layer; \
85  }; \
86  template <> \
87  constexpr LayerType LayerEnumOf(const LayerName##Layer*) \
88  { \
89  return LayerType::_##LayerName; \
90  }
91 
92 #define DECLARE_LAYER(LayerName) DECLARE_LAYER_IMPL(, LayerName)
93 
95 DECLARE_LAYER(Addition)
97 DECLARE_LAYER(BatchNormalization)
99 DECLARE_LAYER(Comparison)
101 DECLARE_LAYER(Constant)
102 DECLARE_LAYER(ConvertFp16ToFp32)
103 DECLARE_LAYER(ConvertFp32ToFp16)
104 DECLARE_LAYER(Convolution2d)
107 DECLARE_LAYER(DepthwiseConvolution2d)
110 DECLARE_LAYER(Division)
111 DECLARE_LAYER(ElementwiseUnary)
117 DECLARE_LAYER(InstanceNormalization)
118 DECLARE_LAYER(L2Normalization)
124 DECLARE_LAYER(MemImport)
127 DECLARE_LAYER(Multiplication)
128 DECLARE_LAYER(Normalization)
133 DECLARE_LAYER(PreCompiled)
136 DECLARE_LAYER(QuantizedLstm)
147 DECLARE_LAYER(Subtraction)
150 DECLARE_LAYER(TransposeConvolution2d)
151 
152 }
constexpr LayerType LayerEnumOf(const T *=nullptr)
float Dequantize(QuantizedType value, float scale, int32_t offset)
Dequantize an 8-bit data type into a floating point data type.
Definition: TypesUtils.cpp:47
void Slice(const TensorInfo &inputInfo, const SliceDescriptor &descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)
Definition: Slice.cpp:16
void ArgMinMax(Decoder< float > &in, int32_t *out, const TensorInfo &inputTensorInfo, const TensorInfo &outputTensorInfo, ArgMinMaxFunction function, int axis)
Definition: ArgMinMax.cpp:15
typename LayerTypeOfImpl< Type >::Type LayerTypeOf
Definition: LayersFwd.hpp:74
void Transpose(const armnn::TensorShape &dstShape, const armnn::PermutationVector &mappings, const void *src, void *dst, size_t dataTypeSize)
Definition: Transpose.cpp:120
void DepthToSpace(const TensorInfo &inputInfo, const DepthToSpaceDescriptor &descriptor, const void *inputData, void *outputData, unsigned int dataTypeSize)
void FullyConnected(const TensorShape &rInputShape, Decoder< float > &rInputDecoder, const TensorShape &rOutputShape, Encoder< float > &rOutputEncoder, Decoder< float > &rWeightDecoder, Decoder< float > &rBiasDecoder, const bool biasEnabled, const unsigned int K, const bool transposeWeights)
Performs a matrix multiplication and optionally adds a bias.
Copyright (c) 2020 ARM Limited.
void FakeQuantization(const float *inputData, float *outputData, uint32_t numElements, float min, float max)
void Stack(const StackQueueDescriptor &data, std::vector< std::unique_ptr< Decoder< float >>> &inputs, Encoder< float > &output)
Definition: Stack.cpp:12
void Pad(const TensorInfo &inputInfo, const TensorInfo &outputInfo, std::vector< std::pair< unsigned int, unsigned int >> m_padList, const T *inputData, T *outData, const float padValue)
Definition: Pad.cpp:22
void Permute(const armnn::TensorShape &dstShape, const armnn::PermutationVector &mappings, const void *src, void *dst, size_t dataTypeSize)
Definition: Permute.cpp:121
void DetectionPostProcess(const TensorInfo &boxEncodingsInfo, const TensorInfo &scoresInfo, const TensorInfo &anchorsInfo, const TensorInfo &detectionBoxesInfo, const TensorInfo &detectionClassesInfo, const TensorInfo &detectionScoresInfo, const TensorInfo &numDetectionsInfo, const DetectionPostProcessDescriptor &desc, Decoder< float > &boxEncodings, Decoder< float > &scores, Decoder< float > &anchors, float *detectionBoxes, float *detectionClasses, float *detectionScores, float *numDetections)
void Debug(const TensorInfo &inputInfo, const T *inputData, LayerGuid guid, const std::string &layerName, unsigned int slotIndex)
Definition: Debug.cpp:20
float Activation(float in, ActivationFunction function, float a, float b)
Definition: Activation.cpp:13
QuantizedType Quantize(float value, float scale, int32_t offset)
Quantize a floating point data type into an 8-bit data type.
Definition: TypesUtils.cpp:31
void Resize(Decoder< float > &in, const TensorInfo &inputInfo, Encoder< float > &out, const TensorInfo &outputInfo, DataLayoutIndexed dataLayout, armnn::ResizeMethod resizeMethod, bool alignCorners)
Definition: Resize.cpp:35
void LogSoftmax(Decoder< float > &input, Encoder< float > &output, const TensorInfo &inputInfo, const LogSoftmaxDescriptor &descriptor)
Definition: LogSoftmax.cpp:30
void SpaceToBatchNd(const TensorInfo &inputInfo, const TensorInfo &outputInfo, const SpaceToBatchNdDescriptor &params, Decoder< float > &inputData, Encoder< float > &outputData)
void StridedSlice(const TensorInfo &inputInfo, const StridedSliceDescriptor &params, const void *inputData, void *outputData, unsigned int dataTypeSize)
#define DECLARE_LAYER(LayerName)
Definition: LayersFwd.hpp:92
void Mean(const armnn::TensorInfo &inputInfo, const armnn::TensorInfo &outputInfo, const std::vector< unsigned int > &axis, Decoder< float > &input, Encoder< float > &output)
Definition: Mean.cpp:71
void Gather(const TensorInfo &paramsInfo, const TensorInfo &indicesInfo, const TensorInfo &outputInfo, Decoder< float > &params, const int32_t *indices, Encoder< float > &output)
Definition: Gather.cpp:18
void SpaceToDepth(const TensorInfo &inputInfo, const TensorInfo &outputInfo, const SpaceToDepthDescriptor &params, Decoder< float > &inputData, Encoder< float > &outputData)
void BatchToSpaceNd(const DataLayoutIndexed &dataLayout, const TensorInfo &inputTensorInfo, const TensorInfo &outputTensorInfo, const std::vector< unsigned int > &blockShape, const std::vector< std::pair< unsigned int, unsigned int >> &cropsData, Decoder< float > &inputDecoder, Encoder< float > &outputEncoder)
void Pooling2d(Decoder< float > &rInputDecoder, Encoder< float > &rOutputEncoder, const TensorInfo &inputInfo, const TensorInfo &outputInfo, const Pooling2dDescriptor &params)
Computes the Pooling2d operation.
Definition: Pooling2d.cpp:143
void Splitter(const SplitterQueueDescriptor &data)
Definition: Splitter.hpp:17
void Softmax(Decoder< float > &in, Encoder< float > &out, const TensorInfo &inputTensorInfo, float beta, int axis)
Computes the softmax function on some inputs, into outputs, with a shape given by tensorInfo...
Definition: Softmax.cpp:17