1 // 2 // Copyright © 2017 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<PermuteDescriptor> 29 { 30 static void Serialize(ParameterStringifyFunction& fn, const PermuteDescriptor& desc); 31 }; 32 33 template <> struct StringifyLayerParameters<ReshapeDescriptor> 34 { 35 static void Serialize(ParameterStringifyFunction& fn, const ReshapeDescriptor& desc); 36 }; 37 38 template <> struct StringifyLayerParameters<ActivationDescriptor> 39 { 40 static void Serialize(ParameterStringifyFunction& fn, const ActivationDescriptor& desc); 41 }; 42 43 template <> struct StringifyLayerParameters<Convolution2dDescriptor> 44 { 45 static void Serialize(ParameterStringifyFunction& fn, const Convolution2dDescriptor& desc); 46 }; 47 48 template <> struct StringifyLayerParameters<BatchNormalizationDescriptor> 49 { 50 static void Serialize(ParameterStringifyFunction& fn, const BatchNormalizationDescriptor& desc); 51 }; 52 53 template <> struct StringifyLayerParameters<DepthwiseConvolution2dDescriptor> 54 { 55 static void Serialize(ParameterStringifyFunction& fn, const DepthwiseConvolution2dDescriptor& desc); 56 }; 57 58 template <> struct StringifyLayerParameters<Pooling2dDescriptor> 59 { 60 static void Serialize(ParameterStringifyFunction& fn, const Pooling2dDescriptor& desc); 61 }; 62 63 template <> struct StringifyLayerParameters<SoftmaxDescriptor> 64 { 65 static void Serialize(ParameterStringifyFunction& fn, const SoftmaxDescriptor& desc); 66 }; 67 68 template <> struct StringifyLayerParameters<FullyConnectedDescriptor> 69 { 70 static void Serialize(ParameterStringifyFunction& fn, const FullyConnectedDescriptor& desc); 71 }; 72 73 template <> struct StringifyLayerParameters<OriginsDescriptor> 74 { 75 static void Serialize(ParameterStringifyFunction& fn, const OriginsDescriptor& desc); 76 }; 77 78 template <> struct StringifyLayerParameters<ViewsDescriptor> 79 { 80 static void Serialize(ParameterStringifyFunction& fn, const ViewsDescriptor& desc); 81 }; 82 83 template <> struct StringifyLayerParameters<DetectionPostProcessDescriptor> 84 { 85 static void Serialize(ParameterStringifyFunction& fn, const DetectionPostProcessDescriptor& desc); 86 }; 87 88 template <> struct StringifyLayerParameters<NormalizationDescriptor> 89 { 90 static void Serialize(ParameterStringifyFunction& fn, const NormalizationDescriptor& desc); 91 }; 92 93 template <> struct StringifyLayerParameters<L2NormalizationDescriptor> 94 { 95 static void Serialize(ParameterStringifyFunction& fn, const L2NormalizationDescriptor& desc); 96 }; 97 98 template <> struct StringifyLayerParameters<BatchToSpaceNdDescriptor> 99 { 100 static void Serialize(ParameterStringifyFunction& fn, const BatchToSpaceNdDescriptor& desc); 101 }; 102 103 template <> struct StringifyLayerParameters<FakeQuantizationDescriptor> 104 { 105 static void Serialize(ParameterStringifyFunction& fn, const FakeQuantizationDescriptor& desc); 106 }; 107 108 template <> struct StringifyLayerParameters<ResizeBilinearDescriptor> 109 { 110 static void Serialize(ParameterStringifyFunction& fn, const ResizeBilinearDescriptor& desc); 111 }; 112 113 template <> struct StringifyLayerParameters<ResizeDescriptor> 114 { 115 static void Serialize(ParameterStringifyFunction& fn, const ResizeDescriptor& desc); 116 }; 117 118 template <> struct StringifyLayerParameters<SpaceToBatchNdDescriptor> 119 { 120 static void Serialize(ParameterStringifyFunction& fn, const SpaceToBatchNdDescriptor& desc); 121 }; 122 123 template <> struct StringifyLayerParameters<SpaceToDepthDescriptor> 124 { 125 static void Serialize(ParameterStringifyFunction& fn, const SpaceToDepthDescriptor& desc); 126 }; 127 128 template <> struct StringifyLayerParameters<LstmDescriptor> 129 { 130 static void Serialize(ParameterStringifyFunction& fn, const LstmDescriptor& desc); 131 }; 132 133 template <> struct StringifyLayerParameters<MeanDescriptor> 134 { 135 static void Serialize(ParameterStringifyFunction& fn, const MeanDescriptor& desc); 136 }; 137 138 template <> struct StringifyLayerParameters<PadDescriptor> 139 { 140 static void Serialize(ParameterStringifyFunction& fn, const PadDescriptor& desc); 141 }; 142 143 template <> struct StringifyLayerParameters<StackDescriptor> 144 { 145 static void Serialize(ParameterStringifyFunction& fn, const StackDescriptor& desc); 146 }; 147 148 template <> struct StringifyLayerParameters<StridedSliceDescriptor> 149 { 150 static void Serialize(ParameterStringifyFunction& fn, const StridedSliceDescriptor& desc); 151 }; 152 153 template <> struct StringifyLayerParameters<PreCompiledDescriptor> 154 { 155 static void Serialize(ParameterStringifyFunction& fn, const PreCompiledDescriptor& desc); 156 }; 157 158 template <> struct StringifyLayerParameters<TransposeConvolution2dDescriptor> 159 { 160 static void Serialize(ParameterStringifyFunction& fn, const TransposeConvolution2dDescriptor& desc); 161 }; 162 163 template <> struct StringifyLayerParameters<TransposeDescriptor> 164 { 165 static void Serialize(ParameterStringifyFunction& fn, const TransposeDescriptor& desc); 166 }; 167 168 } // namespace armnn