23 const std::vector<const TensorInfo*>& inputs,
24 const std::vector<const TensorInfo*>& outputs,
29 case LayerType::Activation:
31 auto activationDesc = PolymorphicDowncast<const ActivationDescriptor*>(&descriptor);
32 switch (activationDesc->m_Function)
34 case ActivationFunction::LeakyReLu:
38 case ActivationFunction::ReLu:
39 case ActivationFunction::BoundedReLu:
43 case ActivationFunction::Gelu:
47 case ActivationFunction::HardSwish:
51 case ActivationFunction::Sigmoid:
55 case ActivationFunction::TanH:
65 case LayerType::Addition:
66 case LayerType::Multiplication:
67 case LayerType::Subtraction:
71 case LayerType::ElementwiseBinary:
73 auto binaryDesc = PolymorphicDowncast<const ElementwiseBinaryDescriptor*>(&descriptor);
74 switch (binaryDesc->m_Operation)
76 case BinaryOperation::SqDiff:
82 case LayerType::ElementwiseUnary:
84 auto unaryDesc = PolymorphicDowncast<const ElementwiseUnaryDescriptor*>(&descriptor);
85 switch(unaryDesc->m_Operation)
87 case UnaryOperation::Rsqrt:
91 case UnaryOperation::Exp:
95 case UnaryOperation::Log:
105 case LayerType::BatchMatMul:
107 auto batchMatMulDesc = PolymorphicDowncast<const BatchMatMulDescriptor*>(&descriptor);
110 case LayerType::BatchToSpaceNd:
112 auto batchToSpaceDesc = PolymorphicDowncast<const BatchToSpaceNdDescriptor*>(&descriptor);
115 case LayerType::Concat:
117 auto concatDesc = PolymorphicDowncast<const OriginsDescriptor*>(&descriptor);
120 case LayerType::Constant:
122 bool isDepthwiseConv2dWeights =
false;
129 if(type == LayerType::DepthwiseConvolution2d && slotIdx == 1)
131 isDepthwiseConv2dWeights =
true;
136 case LayerType::Convolution2d:
138 auto conv2dDesc = PolymorphicDowncast<const Convolution2dDescriptor*>(&descriptor);
141 case LayerType::Convolution3d:
143 auto conv3dDesc = PolymorphicDowncast<const Convolution3dDescriptor*>(&descriptor);
146 case LayerType::DepthwiseConvolution2d:
148 auto conv2dDesc = PolymorphicDowncast<const DepthwiseConvolution2dDescriptor*>(&descriptor);
151 case LayerType::DepthToSpace:
153 auto desc = PolymorphicDowncast<const DepthToSpaceDescriptor*>(&descriptor);
156 case LayerType::FullyConnected:
158 auto fullyConnectedDesc = PolymorphicDowncast<const FullyConnectedDescriptor*>(&descriptor);
161 case LayerType::Gather:
163 auto gatherDesc = PolymorphicDowncast<const GatherDescriptor*>(&descriptor);
168 auto padDesc = PolymorphicDowncast<const PadDescriptor*>(&descriptor);
171 case LayerType::Pooling2d:
173 auto poolDesc = PolymorphicDowncast<const Pooling2dDescriptor*>(&descriptor);
175 bool avgPoolIgnoreValue =
176 (poolDesc->m_PoolType == PoolingAlgorithm::Average) &&
177 (poolDesc->m_PaddingMethod == PaddingMethod::IgnoreValue);
179 if (poolDesc->m_PoolType == PoolingAlgorithm::L2)
183 else if (avgPoolIgnoreValue)
192 case LayerType::Mean:
194 auto meanDesc = PolymorphicDowncast<const MeanDescriptor*>(&descriptor);
198 reduceDesc.
m_vAxis = meanDesc->m_Axis;
203 case LayerType::Dequantize:
207 case LayerType::Quantize:
211 case LayerType::Prelu:
215 case LayerType::Reduce:
217 auto reduceDesc = PolymorphicDowncast<const ReduceDescriptor*>(&descriptor);
220 case LayerType::Reshape:
222 auto reshapeDesc = PolymorphicDowncast<const ReshapeDescriptor*>(&descriptor);
225 case LayerType::Resize:
227 auto resizeDesc = PolymorphicDowncast<const ResizeDescriptor*>(&descriptor);
230 case LayerType::Slice:
232 auto sliceDesc = PolymorphicDowncast<const SliceDescriptor*>(&descriptor);
235 case LayerType::Softmax:
237 auto softmaxDesc = PolymorphicDowncast<const SoftmaxDescriptor*>(&descriptor);
240 case LayerType::Splitter:
242 auto splitDesc = PolymorphicDowncast<const SplitterDescriptor*>(&descriptor);
245 case LayerType::SpaceToBatchNd:
247 auto spaceToBatchDesc = PolymorphicDowncast<const SpaceToBatchNdDescriptor*>(&descriptor);
250 case LayerType::Stack:
252 auto stackDesc = PolymorphicDowncast<const StackDescriptor*>(&descriptor);
255 case LayerType::StridedSlice:
257 auto sliceDesc = PolymorphicDowncast<const StridedSliceDescriptor*>(&descriptor);
260 case LayerType::TransposeConvolution2d:
262 auto transposeConv2dDesc = PolymorphicDowncast<const TransposeConvolution2dDescriptor*>(&descriptor);
265 case LayerType::Transpose:
267 auto transposeDesc = PolymorphicDowncast<const TransposeDescriptor*>(&descriptor);