2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
9 #include <armnn/Descriptors.hpp>
14 using ParameterStringifyFunction = std::function<void(const std::string& name, const std::string& value)>;
17 /// StringifyLayerParameters allows serializing layer parameters to string.
18 /// The default implementation is a no-op because this operation is considered
19 /// non-vital for ArmNN and thus we allow adding new layer parameters without
20 /// supplying the corresponding stringify functionality.
22 template <typename LayerParameter>
23 struct StringifyLayerParameters
25 static void Serialize(ParameterStringifyFunction&, const LayerParameter&) {}
28 template <> struct StringifyLayerParameters<PermuteDescriptor>
30 static void Serialize(ParameterStringifyFunction& fn, const PermuteDescriptor& desc);
33 template <> struct StringifyLayerParameters<ReshapeDescriptor>
35 static void Serialize(ParameterStringifyFunction& fn, const ReshapeDescriptor& desc);
38 template <> struct StringifyLayerParameters<ActivationDescriptor>
40 static void Serialize(ParameterStringifyFunction& fn, const ActivationDescriptor& desc);
43 template <> struct StringifyLayerParameters<Convolution2dDescriptor>
45 static void Serialize(ParameterStringifyFunction& fn, const Convolution2dDescriptor& desc);
48 template <> struct StringifyLayerParameters<BatchNormalizationDescriptor>
50 static void Serialize(ParameterStringifyFunction& fn, const BatchNormalizationDescriptor& desc);
53 template <> struct StringifyLayerParameters<DepthwiseConvolution2dDescriptor>
55 static void Serialize(ParameterStringifyFunction& fn, const DepthwiseConvolution2dDescriptor& desc);
58 template <> struct StringifyLayerParameters<Pooling2dDescriptor>
60 static void Serialize(ParameterStringifyFunction& fn, const Pooling2dDescriptor& desc);
63 template <> struct StringifyLayerParameters<SoftmaxDescriptor>
65 static void Serialize(ParameterStringifyFunction& fn, const SoftmaxDescriptor& desc);
68 template <> struct StringifyLayerParameters<FullyConnectedDescriptor>
70 static void Serialize(ParameterStringifyFunction& fn, const FullyConnectedDescriptor& desc);
73 template <> struct StringifyLayerParameters<OriginsDescriptor>
75 static void Serialize(ParameterStringifyFunction& fn, const OriginsDescriptor& desc);
78 template <> struct StringifyLayerParameters<ViewsDescriptor>
80 static void Serialize(ParameterStringifyFunction& fn, const ViewsDescriptor& desc);
83 template <> struct StringifyLayerParameters<DetectionPostProcessDescriptor>
85 static void Serialize(ParameterStringifyFunction& fn, const DetectionPostProcessDescriptor& desc);
88 template <> struct StringifyLayerParameters<NormalizationDescriptor>
90 static void Serialize(ParameterStringifyFunction& fn, const NormalizationDescriptor& desc);
93 template <> struct StringifyLayerParameters<L2NormalizationDescriptor>
95 static void Serialize(ParameterStringifyFunction& fn, const L2NormalizationDescriptor& desc);
98 template <> struct StringifyLayerParameters<BatchToSpaceNdDescriptor>
100 static void Serialize(ParameterStringifyFunction& fn, const BatchToSpaceNdDescriptor& desc);
103 template <> struct StringifyLayerParameters<FakeQuantizationDescriptor>
105 static void Serialize(ParameterStringifyFunction& fn, const FakeQuantizationDescriptor& desc);
108 template <> struct StringifyLayerParameters<ResizeBilinearDescriptor>
110 static void Serialize(ParameterStringifyFunction& fn, const ResizeBilinearDescriptor& desc);
113 template <> struct StringifyLayerParameters<ResizeDescriptor>
115 static void Serialize(ParameterStringifyFunction& fn, const ResizeDescriptor& desc);
118 template <> struct StringifyLayerParameters<SpaceToBatchNdDescriptor>
120 static void Serialize(ParameterStringifyFunction& fn, const SpaceToBatchNdDescriptor& desc);
123 template <> struct StringifyLayerParameters<SpaceToDepthDescriptor>
125 static void Serialize(ParameterStringifyFunction& fn, const SpaceToDepthDescriptor& desc);
128 template <> struct StringifyLayerParameters<LstmDescriptor>
130 static void Serialize(ParameterStringifyFunction& fn, const LstmDescriptor& desc);
133 template <> struct StringifyLayerParameters<MeanDescriptor>
135 static void Serialize(ParameterStringifyFunction& fn, const MeanDescriptor& desc);
138 template <> struct StringifyLayerParameters<PadDescriptor>
140 static void Serialize(ParameterStringifyFunction& fn, const PadDescriptor& desc);
143 template <> struct StringifyLayerParameters<StackDescriptor>
145 static void Serialize(ParameterStringifyFunction& fn, const StackDescriptor& desc);
148 template <> struct StringifyLayerParameters<StridedSliceDescriptor>
150 static void Serialize(ParameterStringifyFunction& fn, const StridedSliceDescriptor& desc);
153 template <> struct StringifyLayerParameters<PreCompiledDescriptor>
155 static void Serialize(ParameterStringifyFunction& fn, const PreCompiledDescriptor& desc);
158 template <> struct StringifyLayerParameters<TransposeConvolution2dDescriptor>
160 static void Serialize(ParameterStringifyFunction& fn, const TransposeConvolution2dDescriptor& desc);