1 // 2 // Copyright © 2017,2022 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 #pragma once 6 7 #include <string> 8 #include <functional> 9 #include <armnn/Descriptors.hpp> 10 11 namespace armnn 12 { 13 14 using ParameterStringifyFunction = std::function<void(const std::string& name, const std::string& value)>; 15 16 /// 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. 21 /// 22 template <typename LayerParameter> 23 struct StringifyLayerParameters 24 { Serializearmnn::StringifyLayerParameters25 static void Serialize(ParameterStringifyFunction&, const LayerParameter&) {} 26 }; 27 28 template <> struct StringifyLayerParameters<ActivationDescriptor> 29 { 30 static void Serialize(ParameterStringifyFunction& fn, const ActivationDescriptor& desc); 31 }; 32 33 template <> struct StringifyLayerParameters<BatchNormalizationDescriptor> 34 { 35 static void Serialize(ParameterStringifyFunction& fn, const BatchNormalizationDescriptor& desc); 36 }; 37 38 template <> struct StringifyLayerParameters<BatchMatMulDescriptor> 39 { 40 static void Serialize(ParameterStringifyFunction& fn, const BatchMatMulDescriptor& desc); 41 }; 42 43 template <> struct StringifyLayerParameters<BatchToSpaceNdDescriptor> 44 { 45 static void Serialize(ParameterStringifyFunction& fn, const BatchToSpaceNdDescriptor& desc); 46 }; 47 48 template <> struct StringifyLayerParameters<ChannelShuffleDescriptor> 49 { 50 static void Serialize(ParameterStringifyFunction& fn, const ChannelShuffleDescriptor& desc); 51 }; 52 53 template <> struct StringifyLayerParameters<ComparisonDescriptor> 54 { 55 static void Serialize(ParameterStringifyFunction& fn, const ComparisonDescriptor& desc); 56 }; 57 58 template <> struct StringifyLayerParameters<Convolution2dDescriptor> 59 { 60 static void Serialize(ParameterStringifyFunction& fn, const Convolution2dDescriptor& desc); 61 }; 62 63 template <> struct StringifyLayerParameters<Convolution3dDescriptor> 64 { 65 static void Serialize(ParameterStringifyFunction& fn, const Convolution3dDescriptor& desc); 66 }; 67 68 template <> struct StringifyLayerParameters<DetectionPostProcessDescriptor> 69 { 70 static void Serialize(ParameterStringifyFunction& fn, const DetectionPostProcessDescriptor& desc); 71 }; 72 73 template <> struct StringifyLayerParameters<DepthwiseConvolution2dDescriptor> 74 { 75 static void Serialize(ParameterStringifyFunction& fn, const DepthwiseConvolution2dDescriptor& desc); 76 }; 77 78 template <> struct StringifyLayerParameters<ElementwiseUnaryDescriptor> 79 { 80 static void Serialize(ParameterStringifyFunction& fn, const ElementwiseUnaryDescriptor& desc); 81 }; 82 83 template <> struct StringifyLayerParameters<FakeQuantizationDescriptor> 84 { 85 static void Serialize(ParameterStringifyFunction& fn, const FakeQuantizationDescriptor& desc); 86 }; 87 88 template <> struct StringifyLayerParameters<FullyConnectedDescriptor> 89 { 90 static void Serialize(ParameterStringifyFunction& fn, const FullyConnectedDescriptor& desc); 91 }; 92 93 template <> struct StringifyLayerParameters<GatherDescriptor> 94 { 95 static void Serialize(ParameterStringifyFunction& fn, const GatherDescriptor& desc); 96 }; 97 98 template <> struct StringifyLayerParameters<L2NormalizationDescriptor> 99 { 100 static void Serialize(ParameterStringifyFunction& fn, const L2NormalizationDescriptor& desc); 101 }; 102 103 template <> struct StringifyLayerParameters<LstmDescriptor> 104 { 105 static void Serialize(ParameterStringifyFunction& fn, const LstmDescriptor& desc); 106 }; 107 108 template <> struct StringifyLayerParameters<MeanDescriptor> 109 { 110 static void Serialize(ParameterStringifyFunction& fn, const MeanDescriptor& desc); 111 }; 112 113 template <> struct StringifyLayerParameters<NormalizationDescriptor> 114 { 115 static void Serialize(ParameterStringifyFunction& fn, const NormalizationDescriptor& desc); 116 }; 117 118 template <> struct StringifyLayerParameters<OriginsDescriptor> 119 { 120 static void Serialize(ParameterStringifyFunction& fn, const OriginsDescriptor& desc); 121 }; 122 123 template <> struct StringifyLayerParameters<PadDescriptor> 124 { 125 static void Serialize(ParameterStringifyFunction& fn, const PadDescriptor& desc); 126 }; 127 template <> struct StringifyLayerParameters<PermuteDescriptor> 128 { 129 static void Serialize(ParameterStringifyFunction& fn, const PermuteDescriptor& desc); 130 }; 131 132 template <> struct StringifyLayerParameters<Pooling2dDescriptor> 133 { 134 static void Serialize(ParameterStringifyFunction& fn, const Pooling2dDescriptor& desc); 135 }; 136 137 template <> struct StringifyLayerParameters<Pooling3dDescriptor> 138 { 139 static void Serialize(ParameterStringifyFunction& fn, const Pooling3dDescriptor& desc); 140 }; 141 142 template <> struct StringifyLayerParameters<PreCompiledDescriptor> 143 { 144 static void Serialize(ParameterStringifyFunction& fn, const PreCompiledDescriptor& desc); 145 }; 146 147 template <> struct StringifyLayerParameters<ReduceDescriptor> 148 { 149 static void Serialize(ParameterStringifyFunction& fn, const ReduceDescriptor& desc); 150 }; 151 152 template <> struct StringifyLayerParameters<ReshapeDescriptor> 153 { 154 static void Serialize(ParameterStringifyFunction& fn, const ReshapeDescriptor& desc); 155 }; 156 157 template <> struct StringifyLayerParameters<ResizeDescriptor> 158 { 159 static void Serialize(ParameterStringifyFunction& fn, const ResizeDescriptor& desc); 160 }; 161 162 template <> struct StringifyLayerParameters<SpaceToBatchNdDescriptor> 163 { 164 static void Serialize(ParameterStringifyFunction& fn, const SpaceToBatchNdDescriptor& desc); 165 }; 166 167 template <> struct StringifyLayerParameters<SpaceToDepthDescriptor> 168 { 169 static void Serialize(ParameterStringifyFunction& fn, const SpaceToDepthDescriptor& desc); 170 }; 171 172 template <> struct StringifyLayerParameters<StackDescriptor> 173 { 174 static void Serialize(ParameterStringifyFunction& fn, const StackDescriptor& desc); 175 }; 176 177 template <> struct StringifyLayerParameters<StridedSliceDescriptor> 178 { 179 static void Serialize(ParameterStringifyFunction& fn, const StridedSliceDescriptor& desc); 180 }; 181 182 template <> struct StringifyLayerParameters<SoftmaxDescriptor> 183 { 184 static void Serialize(ParameterStringifyFunction& fn, const SoftmaxDescriptor& desc); 185 }; 186 187 template <> struct StringifyLayerParameters<TransposeConvolution2dDescriptor> 188 { 189 static void Serialize(ParameterStringifyFunction& fn, const TransposeConvolution2dDescriptor& desc); 190 }; 191 192 template <> struct StringifyLayerParameters<TransposeDescriptor> 193 { 194 static void Serialize(ParameterStringifyFunction& fn, const TransposeDescriptor& desc); 195 }; 196 197 template <> struct StringifyLayerParameters<ViewsDescriptor> 198 { 199 static void Serialize(ParameterStringifyFunction& fn, const ViewsDescriptor& desc); 200 }; 201 202 } // namespace armnn