126 IConnectableLayer* newLayer;
132 newLayer = m_QuantizedNetwork->AddAdditionLayer(name);
137 const ActivationDescriptor& activationDescriptor =
static_cast<const ActivationDescriptor&
>(descriptor);
138 newLayer = m_QuantizedNetwork->AddActivationLayer(activationDescriptor, name);
143 ArgMinMaxDescriptor argMinMaxDescriptor =
static_cast<const ArgMinMaxDescriptor&
>(descriptor);
144 newLayer = m_QuantizedNetwork->AddArgMinMaxLayer(argMinMaxDescriptor, name);
150 BatchNormalizationDescriptor batchNormalizationDescriptor =
151 static_cast<const BatchNormalizationDescriptor&
>(descriptor);
152 std::vector<uint8_t> meanBacking;
155 std::vector<uint8_t> varianceBacking;
158 std::vector<uint8_t> betaBacking;
161 std::vector<uint8_t> gammaBacking;
164 newLayer = m_QuantizedNetwork->AddBatchNormalizationLayer(batchNormalizationDescriptor,
174 BatchToSpaceNdDescriptor batchToSpaceNdDescriptor =
175 static_cast<const BatchToSpaceNdDescriptor&
>(descriptor);
177 newLayer = m_QuantizedNetwork->AddBatchToSpaceNdLayer(batchToSpaceNdDescriptor, name);
182 ComparisonDescriptor comparisonDescriptor =
static_cast<const ComparisonDescriptor&
>(descriptor);
183 newLayer = m_QuantizedNetwork->AddComparisonLayer(comparisonDescriptor, name);
188 OriginsDescriptor originsDescriptor =
static_cast<const OriginsDescriptor&
>(descriptor);
189 newLayer = m_QuantizedNetwork->AddConcatLayer(originsDescriptor, name);
194 std::vector<uint8_t> inputBacking;
197 newLayer = m_QuantizedNetwork->AddConstantLayer(qInput, name);
206 std::vector<uint8_t> weightsBacking;
208 Optional<ConstTensor> optionalQBiases;
209 std::vector<int32_t> biasesBacking;
213 ConstTensor qBiases = CreateQuantizedBias(layer, qWeights, biases, biasesBacking);
214 optionalQBiases = Optional<ConstTensor>(qBiases);
216 Convolution2dDescriptor convolution2dDescriptor =
static_cast<const Convolution2dDescriptor&
>(descriptor);
218 newLayer = m_QuantizedNetwork->AddConvolution2dLayer(convolution2dDescriptor,
228 newLayer = m_QuantizedNetwork->AddDepthToSpaceLayer(depthToSpaceDescriptor, name);
233 DepthwiseConvolution2dDescriptor depthwiseConvolution2dDescriptor =
234 static_cast<const DepthwiseConvolution2dDescriptor&
>(descriptor);
240 std::vector<uint8_t> weightsBacking;
242 Optional<ConstTensor> optionalQBiases;
243 std::vector<int32_t> biasesBacking;
247 ConstTensor qBiases = CreateQuantizedBias(layer, qWeights, biases, biasesBacking);
248 optionalQBiases = Optional<ConstTensor>(qBiases);
251 newLayer = m_QuantizedNetwork->AddDepthwiseConvolution2dLayer(
252 depthwiseConvolution2dDescriptor,
260 ElementwiseUnaryDescriptor elementwiseUnaryDescriptor =
261 static_cast<const ElementwiseUnaryDescriptor&
>(descriptor);
263 newLayer = m_QuantizedNetwork->AddElementwiseUnaryLayer(elementwiseUnaryDescriptor, name);
268 FillDescriptor fillDescriptor =
static_cast<const FillDescriptor&
>(descriptor);
270 newLayer = m_QuantizedNetwork->AddFillLayer(fillDescriptor, name);
275 FullyConnectedDescriptor fullyConnectedDescriptor =
276 static_cast<const FullyConnectedDescriptor&
>(descriptor);
282 std::vector<uint8_t> weightsBacking;
284 Optional<ConstTensor> optionalQBiases;
285 std::vector<int32_t> biasesBacking;
289 ConstTensor qBiases = CreateQuantizedBias(layer, qWeights, biases, biasesBacking);
290 optionalQBiases = Optional<ConstTensor>(qBiases);
293 newLayer = m_QuantizedNetwork->AddFullyConnectedLayer(fullyConnectedDescriptor,
302 IConnectableLayer* inputLayer = m_QuantizedNetwork->AddInputLayer(
id, name);
306 IConnectableLayer* quantizeLayer = m_QuantizedNetwork->AddQuantizeLayer();
307 inputLayer->GetOutputSlot(0).Connect(quantizeLayer->GetInputSlot(0));
309 RecordLayer(layer, quantizeLayer);
314 RecordLayer(layer, inputLayer);
320 InstanceNormalizationDescriptor instanceNormalizationDescriptor =
321 static_cast<const InstanceNormalizationDescriptor&
>(descriptor);
324 m_QuantizedNetwork->AddInstanceNormalizationLayer(instanceNormalizationDescriptor, name);
331 newLayer = m_QuantizedNetwork->AddLogSoftmaxLayer(logSoftmaxDescriptor, name);
336 MeanDescriptor meanDescriptor =
static_cast<const MeanDescriptor&
>(descriptor);
338 newLayer = m_QuantizedNetwork->AddMeanLayer(meanDescriptor, name);
343 newLayer = m_QuantizedNetwork->AddMultiplicationLayer(name);
348 NormalizationDescriptor normalizationDescriptor =
static_cast<const NormalizationDescriptor&
>(descriptor);
350 newLayer = m_QuantizedNetwork->AddNormalizationLayer(normalizationDescriptor, name);
356 const DataType& dataType = info.GetDataType();
357 newLayer = m_QuantizedNetwork->AddOutputLayer(
id, name);
361 IConnectableLayer* dequantizeLayer = m_QuantizedNetwork->AddDequantizeLayer();
362 RecordLayer(layer, dequantizeLayer);
363 SetQuantizedInputConnections(layer, dequantizeLayer);
364 dequantizeLayer->GetOutputSlot(0).Connect(newLayer->GetInputSlot(0));
365 dequantizeLayer->GetOutputSlot(0).SetTensorInfo(info);
375 PadDescriptor padDescriptor =
static_cast<const PadDescriptor&
>(descriptor);
377 newLayer = m_QuantizedNetwork->AddPadLayer(padDescriptor, name);
382 PermuteDescriptor permuteDescriptor =
static_cast<const PermuteDescriptor&
>(descriptor);
384 newLayer = m_QuantizedNetwork->AddPermuteLayer(permuteDescriptor, name);
389 Pooling2dDescriptor pooling2dDescriptor =
static_cast<const Pooling2dDescriptor&
>(descriptor);
391 newLayer = m_QuantizedNetwork->AddPooling2dLayer(pooling2dDescriptor, name);
396 newLayer = m_QuantizedNetwork->AddPreluLayer(name);
401 ReshapeDescriptor reshapeDescriptor =
static_cast<const ReshapeDescriptor&
>(descriptor);
403 newLayer = m_QuantizedNetwork->AddReshapeLayer(reshapeDescriptor, name);
409 ResizeBilinearDescriptor resizeBilinearDescriptor =
410 static_cast<const ResizeBilinearDescriptor&
>(descriptor);
412 ResizeDescriptor resizeDescriptor;
414 resizeDescriptor.m_TargetWidth = resizeBilinearDescriptor.m_TargetWidth;
415 resizeDescriptor.m_TargetHeight = resizeBilinearDescriptor.m_TargetHeight;
416 resizeDescriptor.m_DataLayout = resizeBilinearDescriptor.m_DataLayout;
418 newLayer = m_QuantizedNetwork->AddResizeLayer(resizeDescriptor, name);
423 SliceDescriptor sliceDescriptor =
static_cast<const SliceDescriptor&
>(descriptor);
425 newLayer = m_QuantizedNetwork->AddSliceLayer(sliceDescriptor, name);
430 SoftmaxDescriptor softmaxDescriptor =
static_cast<const SoftmaxDescriptor&
>(descriptor);
432 newLayer = m_QuantizedNetwork->AddSoftmaxLayer(softmaxDescriptor, name);
437 SpaceToBatchNdDescriptor spaceToBatchNdDescriptor =
438 static_cast<const SpaceToBatchNdDescriptor&
>(descriptor);
440 newLayer = m_QuantizedNetwork->AddSpaceToBatchNdLayer(spaceToBatchNdDescriptor, name);
445 SpaceToDepthDescriptor spaceToDepthDescriptor =
static_cast<const SpaceToDepthDescriptor&
>(descriptor);
446 newLayer = m_QuantizedNetwork->AddSpaceToDepthLayer(spaceToDepthDescriptor, name);
452 newLayer = m_QuantizedNetwork->AddSplitterLayer(splitterDescriptor, name);
457 StackDescriptor stackDescriptor =
static_cast<const StackDescriptor&
>(descriptor);
459 newLayer = m_QuantizedNetwork->AddStackLayer(stackDescriptor, name);
464 StridedSliceDescriptor stridedSliceDescriptor =
static_cast<const StridedSliceDescriptor&
>(descriptor);
466 newLayer = m_QuantizedNetwork->AddStridedSliceLayer(stridedSliceDescriptor, name);
471 newLayer = m_QuantizedNetwork->AddSubtractionLayer( name);
481 std::vector<uint8_t> weightsBacking;
485 std::vector<int32_t> biasesBacking;
486 Optional<ConstTensor> optionalQBiases;
489 ConstTensor qBiases = CreateQuantizedBias(layer, qWeights, biases, biasesBacking);
490 optionalQBiases = Optional<ConstTensor>(qBiases);
493 TransposeConvolution2dDescriptor transposeConvolution2dDescriptor =
494 static_cast<const TransposeConvolution2dDescriptor&
>(descriptor);
496 newLayer = m_QuantizedNetwork->AddTransposeConvolution2dLayer(transposeConvolution2dDescriptor,
504 TransposeDescriptor transposeDescriptor =
static_cast<const TransposeDescriptor&
>(descriptor);
506 newLayer = m_QuantizedNetwork->AddTransposeLayer(transposeDescriptor, name);
511 throw UnimplementedException(
"Unimplemented layer encountered");
514 RecordLayer(layer, newLayer);
515 SetQuantizedInputConnections(layer, newLayer);
void IgnoreUnused(Ts &&...)
DataType GetDataType() const
bool has_value() const noexcept
virtual LayerType GetType() const =0
Returns the armnn::LayerType of this layer.
SoftmaxDescriptor LogSoftmaxDescriptor
A LogSoftmaxDescriptor for the LogSoftmaxLayer.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
virtual const TensorInfo & GetTensorInfo() const =0
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
ConstTensor CreateQuantizedConst(const ConstTensor &tensor, std::vector< uint8_t > &backing)
SpaceToDepthDescriptor DepthToSpaceDescriptor
A DepthToSpaceDescriptor for the DepthToSpaceLayer.
ViewsDescriptor SplitterDescriptor