Lines Matching +full:is +full:- +full:data +full:- +full:descriptor
2 // Copyright © 2022-2023 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
26 auto numInputs = tfLiteNode->inputs->size; in VisitConv2dOperator()
36 armnn::Convolution2dDescriptor descriptor; in VisitConv2dOperator() local
37 const auto params = reinterpret_cast<TfLiteConvParams*>(tfLiteNode->builtin_data); in VisitConv2dOperator()
40 descriptor.m_BiasEnabled = biasEnabled; in VisitConv2dOperator()
41 descriptor.m_StrideX = NonNegative(params->stride_width, nodeIndex); in VisitConv2dOperator()
42 descriptor.m_StrideY = NonNegative(params->stride_height, nodeIndex); in VisitConv2dOperator()
43 descriptor.m_DataLayout = armnn::DataLayout::NHWC; in VisitConv2dOperator()
44 descriptor.m_DilationX = NonNegative(params->dilation_width_factor, nodeIndex); in VisitConv2dOperator()
45 descriptor.m_DilationY = NonNegative(params->dilation_height_factor, nodeIndex); in VisitConv2dOperator()
47 const TfLiteTensor* tfLiteTensors = tfLiteContext->tensors; in VisitConv2dOperator()
48 const TfLiteTensor& tfLiteInputTensor = tfLiteTensors[tfLiteNode->inputs->data[0]]; in VisitConv2dOperator()
49 if(!IsValid(&tfLiteTensors[tfLiteNode->inputs->data[0]])) in VisitConv2dOperator()
65 const TfLiteTensor& tfLiteOutputTensor = tfLiteTensors[tfLiteNode->outputs->data[0]]; in VisitConv2dOperator()
83 const TfLiteTensor& tfLiteFilterTensor = tfLiteTensors[tfLiteNode->inputs->data[1]]; in VisitConv2dOperator()
104 auto* tfLiteNodeParameters = reinterpret_cast<TfLiteConvParams*>(tfLiteNode->builtin_data); in VisitConv2dOperator()
108 activationType = tfLiteNodeParameters->activation; in VisitConv2dOperator()
123 const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitConv2dOperator()
157 CalcPadding(inputHeight, filterHeight, descriptor.m_StrideY, descriptor.m_DilationY, in VisitConv2dOperator()
158 descriptor.m_PadTop, descriptor.m_PadBottom, params->padding); in VisitConv2dOperator()
159 CalcPadding(inputWidth, filterWidth, descriptor.m_StrideX, descriptor.m_DilationX, in VisitConv2dOperator()
160 descriptor.m_PadLeft, descriptor.m_PadRight, params->padding); in VisitConv2dOperator()
174 descriptor, in VisitConv2dOperator()
181 armnn::IConnectableLayer* layer = delegateData.m_Network->AddConvolution2dLayer(descriptor); in VisitConv2dOperator()
182 layer->SetBackendId(setBackend); in VisitConv2dOperator()
187 CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[1]], in VisitConv2dOperator()
190 armnn::IConnectableLayer *weightsLayer = delegateData.m_Network->AddConstantLayer(filter); in VisitConv2dOperator()
191 weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1u)); in VisitConv2dOperator()
192 weightsLayer->GetOutputSlot(0).SetTensorInfo(filterTensorInfo); in VisitConv2dOperator()
197 const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitConv2dOperator()
201 … armnn::IConnectableLayer* biasLayer = delegateData.m_Network->AddConstantLayer(biasTensor); in VisitConv2dOperator()
203 biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2u)); in VisitConv2dOperator()
204 biasLayer->GetOutputSlot(0).SetTensorInfo(biasTensorInfo); in VisitConv2dOperator()
208 …// The data input can also be constant, so we must check that this is also allocated to an input s… in VisitConv2dOperator()
212 CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[0]], in VisitConv2dOperator()
215 armnn::IConnectableLayer *inputLayer = delegateData.m_Network->AddConstantLayer(input); in VisitConv2dOperator()
216 inputLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(0u)); in VisitConv2dOperator()
217 inputLayer->GetOutputSlot(0).SetTensorInfo(inputTensorInfo); in VisitConv2dOperator()
222 armnn::IOutputSlot& outputSlot = layer->GetOutputSlot(0); in VisitConv2dOperator()
240 // Conv3d is only correctly supported for external delegates from TF Lite v2.6, as there was a brea…
248 auto numInputs = tfLiteNode->inputs->size; in VisitConv3dOperator()
258 armnn::Convolution3dDescriptor descriptor; in VisitConv3dOperator() local
259 const auto params = reinterpret_cast<TfLiteConv3DParams*>(tfLiteNode->builtin_data); in VisitConv3dOperator()
262 descriptor.m_BiasEnabled = biasEnabled; in VisitConv3dOperator()
263 descriptor.m_DataLayout = armnn::DataLayout::NDHWC; in VisitConv3dOperator()
264 descriptor.m_StrideX = NonNegative(params->stride_width, nodeIndex); in VisitConv3dOperator()
265 descriptor.m_StrideY = NonNegative(params->stride_height, nodeIndex); in VisitConv3dOperator()
266 descriptor.m_StrideZ = NonNegative(params->stride_depth, nodeIndex); in VisitConv3dOperator()
267 descriptor.m_DilationX = NonNegative(params->dilation_width_factor, nodeIndex); in VisitConv3dOperator()
268 descriptor.m_DilationY = NonNegative(params->dilation_height_factor, nodeIndex); in VisitConv3dOperator()
269 descriptor.m_DilationZ = NonNegative(params->dilation_depth_factor, nodeIndex); in VisitConv3dOperator()
271 const TfLiteTensor* tfLiteTensors = tfLiteContext->tensors; in VisitConv3dOperator()
272 const TfLiteTensor& tfLiteInputTensor = tfLiteTensors[tfLiteNode->inputs->data[0]]; in VisitConv3dOperator()
278 const TfLiteTensor& tfLiteOutputTensor = tfLiteTensors[tfLiteNode->outputs->data[0]]; in VisitConv3dOperator()
284 const TfLiteTensor& tfLiteFilterTensor = tfLiteTensors[tfLiteNode->inputs->data[1]]; in VisitConv3dOperator()
293 auto* tfLiteNodeParameters = reinterpret_cast<TfLiteConv3DParams*>(tfLiteNode->builtin_data); in VisitConv3dOperator()
297 activationType = tfLiteNodeParameters->activation; in VisitConv3dOperator()
312 const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitConv3dOperator()
331 // Assuming the filter is DHWIO : Depth, Height, Width, OutputChannels, InputChannels in VisitConv3dOperator()
337 CalcPadding(inputDepth, filterDepth, descriptor.m_StrideZ, descriptor.m_DilationZ, in VisitConv3dOperator()
338 descriptor.m_PadFront, descriptor.m_PadBack, params->padding); in VisitConv3dOperator()
339 CalcPadding(inputHeight, filterHeight, descriptor.m_StrideY, descriptor.m_DilationY, in VisitConv3dOperator()
340 descriptor.m_PadTop, descriptor.m_PadBottom, params->padding); in VisitConv3dOperator()
341 CalcPadding(inputWidth, filterWidth, descriptor.m_StrideX, descriptor.m_DilationX, in VisitConv3dOperator()
342 descriptor.m_PadLeft, descriptor.m_PadRight, params->padding); in VisitConv3dOperator()
344 …// If the m_Network is a nullptr, this signals that a prerequisite TfLite callback is required to … in VisitConv3dOperator()
359 descriptor, in VisitConv3dOperator()
365 armnn::IConnectableLayer* layer = delegateData.m_Network->AddConvolution3dLayer(descriptor); in VisitConv3dOperator()
366 layer->SetBackendId(setBackend); in VisitConv3dOperator()
376 armnn::IConnectableLayer* weightsLayer = delegateData.m_Network->AddConstantLayer(filter); in VisitConv3dOperator()
379 weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1u)); in VisitConv3dOperator()
380 weightsLayer->GetOutputSlot(0).SetTensorInfo(filterTensorInfo); in VisitConv3dOperator()
385 const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitConv3dOperator()
391 armnn::IConnectableLayer* biasLayer = delegateData.m_Network->AddConstantLayer(biases); in VisitConv3dOperator()
394 biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2u)); in VisitConv3dOperator()
395 biasLayer->GetOutputSlot(0).SetTensorInfo(biasTensorInfo); in VisitConv3dOperator()
399 …// The data input can also be constant, so we must check that this is also allocated to an input s… in VisitConv3dOperator()
403 CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[0]], in VisitConv3dOperator()
406 armnn::IConnectableLayer *inputLayer = delegateData.m_Network->AddConstantLayer(input); in VisitConv3dOperator()
407 inputLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(0u)); in VisitConv3dOperator()
408 inputLayer->GetOutputSlot(0).SetTensorInfo(inputTensorInfo); in VisitConv3dOperator()
411 armnn::IOutputSlot& outputSlot = layer->GetOutputSlot(0); in VisitConv3dOperator()
436 auto numInputs = tfLiteNode->inputs->size; in VisitDepthwiseConv2dOperator()
448 armnn::DepthwiseConvolution2dDescriptor descriptor; in VisitDepthwiseConv2dOperator() local
449 const auto params = reinterpret_cast<TfLiteDepthwiseConvParams*>(tfLiteNode->builtin_data); in VisitDepthwiseConv2dOperator()
451 descriptor.m_BiasEnabled = biasEnabled; in VisitDepthwiseConv2dOperator()
452 descriptor.m_StrideX = NonNegative(params->stride_width, nodeIndex); in VisitDepthwiseConv2dOperator()
453 descriptor.m_StrideY = NonNegative(params->stride_height, nodeIndex); in VisitDepthwiseConv2dOperator()
454 descriptor.m_DataLayout = armnn::DataLayout::NHWC; in VisitDepthwiseConv2dOperator()
455 descriptor.m_DilationX = NonNegative(params->dilation_width_factor, nodeIndex); in VisitDepthwiseConv2dOperator()
456 descriptor.m_DilationY = NonNegative(params->dilation_height_factor, nodeIndex); in VisitDepthwiseConv2dOperator()
458 const TfLiteTensor* tfLiteTensors = tfLiteContext->tensors; in VisitDepthwiseConv2dOperator()
459 const TfLiteTensor& tfLiteInputTensor = tfLiteTensors[tfLiteNode->inputs->data[0]]; in VisitDepthwiseConv2dOperator()
476 const TfLiteTensor& tfLiteOutputTensor = tfLiteTensors[tfLiteNode->outputs->data[0]]; in VisitDepthwiseConv2dOperator()
494 const TfLiteTensor& tfLiteFilterTensor = tfLiteTensors[tfLiteNode->inputs->data[1]]; in VisitDepthwiseConv2dOperator()
515 …auto* tfLiteNodeParameters = reinterpret_cast<TfLiteDepthwiseConvParams *>(tfLiteNode->builtin_dat… in VisitDepthwiseConv2dOperator()
519 activationType = tfLiteNodeParameters->activation; in VisitDepthwiseConv2dOperator()
531 // Assuming input is NHWC in VisitDepthwiseConv2dOperator()
540 CalcPadding(inputHeight, filterHeight, descriptor.m_StrideY, descriptor.m_DilationY, in VisitDepthwiseConv2dOperator()
541 descriptor.m_PadTop, descriptor.m_PadBottom, params->padding); in VisitDepthwiseConv2dOperator()
542 CalcPadding(inputWidth, filterWidth, descriptor.m_StrideX, descriptor.m_DilationX, in VisitDepthwiseConv2dOperator()
543 descriptor.m_PadLeft, descriptor.m_PadRight, params->padding); in VisitDepthwiseConv2dOperator()
548 const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitDepthwiseConv2dOperator()
584 descriptor, in VisitDepthwiseConv2dOperator()
590 …rmnn::IConnectableLayer* layer = delegateData.m_Network->AddDepthwiseConvolution2dLayer(descriptor… in VisitDepthwiseConv2dOperator()
591 layer->SetBackendId(setBackend); in VisitDepthwiseConv2dOperator()
595 …// For depthwise the weights layout is the same as for tflite [1, H, W, I*M]. No permutation requi… in VisitDepthwiseConv2dOperator()
598 armnn::IConnectableLayer* weightsLayer = delegateData.m_Network->AddConstantLayer(filter); in VisitDepthwiseConv2dOperator()
599 weightsLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(1u)); in VisitDepthwiseConv2dOperator()
600 weightsLayer->GetOutputSlot(0).SetTensorInfo(filterTensorInfo); in VisitDepthwiseConv2dOperator()
605 const TfLiteTensor& tfLiteBiasTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitDepthwiseConv2dOperator()
609 … armnn::IConnectableLayer* biasLayer = delegateData.m_Network->AddConstantLayer(biasTensor); in VisitDepthwiseConv2dOperator()
611 biasLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(2u)); in VisitDepthwiseConv2dOperator()
612 biasLayer->GetOutputSlot(0).SetTensorInfo(biasTensorInfo); in VisitDepthwiseConv2dOperator()
616 …// The data input can also be constant, so we must check that this is also allocated to an input s… in VisitDepthwiseConv2dOperator()
620 CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[0]], in VisitDepthwiseConv2dOperator()
623 armnn::IConnectableLayer *inputLayer = delegateData.m_Network->AddConstantLayer(input); in VisitDepthwiseConv2dOperator()
624 inputLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(0u)); in VisitDepthwiseConv2dOperator()
625 inputLayer->GetOutputSlot(0).SetTensorInfo(inputTensorInfo); in VisitDepthwiseConv2dOperator()
630 armnn::IOutputSlot& outputSlot = layer->GetOutputSlot(0); in VisitDepthwiseConv2dOperator()
656 armnn::TransposeConvolution2dDescriptor descriptor; in VisitTransposeConv2dOperator() local
657 auto* parameters = reinterpret_cast<TfLiteTransposeConvParams*>(tfLiteNode->builtin_data); in VisitTransposeConv2dOperator()
658 descriptor.m_BiasEnabled = false; in VisitTransposeConv2dOperator()
659 descriptor.m_StrideX = NonNegative(parameters->stride_width, nodeIndex); in VisitTransposeConv2dOperator()
660 descriptor.m_StrideY = NonNegative(parameters->stride_height, nodeIndex); in VisitTransposeConv2dOperator()
661 descriptor.m_DataLayout = armnn::DataLayout::NHWC; in VisitTransposeConv2dOperator()
663 const TfLiteTensor* tfLiteTensors = tfLiteContext->tensors; in VisitTransposeConv2dOperator()
664 const TfLiteTensor& tfLiteOutputShapeTensor = tfLiteTensors[tfLiteNode->inputs->data[0]]; in VisitTransposeConv2dOperator()
702 descriptor.m_OutputShape.push_back(static_cast<unsigned int>(dimension)); in VisitTransposeConv2dOperator()
704 descriptor.m_OutputShapeEnabled = true; in VisitTransposeConv2dOperator()
706 const TfLiteTensor& tfLiteInputTensor = tfLiteTensors[tfLiteNode->inputs->data[2]]; in VisitTransposeConv2dOperator()
724 const TfLiteTensor& tfLiteOutputTensor = tfLiteTensors[tfLiteNode->outputs->data[0]]; in VisitTransposeConv2dOperator()
742 const TfLiteTensor& tfLiteFilterTensor = tfLiteTensors[tfLiteNode->inputs->data[1]]; in VisitTransposeConv2dOperator()
774 descriptor.m_StrideY, in VisitTransposeConv2dOperator()
776 descriptor.m_PadTop, in VisitTransposeConv2dOperator()
777 descriptor.m_PadBottom, in VisitTransposeConv2dOperator()
778 parameters->padding); in VisitTransposeConv2dOperator()
781 descriptor.m_StrideX, in VisitTransposeConv2dOperator()
783 descriptor.m_PadLeft, in VisitTransposeConv2dOperator()
784 descriptor.m_PadRight, in VisitTransposeConv2dOperator()
785 parameters->padding); in VisitTransposeConv2dOperator()
802 descriptor, in VisitTransposeConv2dOperator()
808 …rmnn::IConnectableLayer* layer = delegateData.m_Network->AddTransposeConvolution2dLayer(descriptor, in VisitTransposeConv2dOperator()
811 layer->SetBackendId(setBackend); in VisitTransposeConv2dOperator()
814 // The data input can be constant, so we must check that this is allocated to an input slot in VisitTransposeConv2dOperator()
818 CreateConstTensor(&tfLiteContext->tensors[tfLiteNode->inputs->data[2]], in VisitTransposeConv2dOperator()
821 armnn::IConnectableLayer *inputLayer = delegateData.m_Network->AddConstantLayer(input); in VisitTransposeConv2dOperator()
822 inputLayer->GetOutputSlot(0).Connect(layer->GetInputSlot(0u)); in VisitTransposeConv2dOperator()
823 inputLayer->GetOutputSlot(0).SetTensorInfo(inputTensorInfo); in VisitTransposeConv2dOperator()
826 armnn::IOutputSlot& outputSlot = layer->GetOutputSlot(0); in VisitTransposeConv2dOperator()
830 …if (delegateData.m_OutputSlotForNode[static_cast<unsigned int>(tfLiteNode->inputs->data[2])] != nu… in VisitTransposeConv2dOperator()
832 delegateData.m_OutputSlotForNode[static_cast<unsigned int>(tfLiteNode->inputs->data[2])]-> in VisitTransposeConv2dOperator()
833 Connect(layer->GetInputSlot(0)); in VisitTransposeConv2dOperator()
837 for (unsigned int outputIndex = 0; outputIndex < layer->GetNumOutputSlots(); ++outputIndex) in VisitTransposeConv2dOperator()
839 armnn::IOutputSlot& outputSlot = layer->GetOutputSlot(outputIndex); in VisitTransposeConv2dOperator()
840 …delegateData.m_OutputSlotForNode[static_cast<unsigned int>(tfLiteNode->outputs->data[outputIndex])… in VisitTransposeConv2dOperator()
856 // Conv3d is only correctly supported for external delegates from TF Lite v2.6, as there was a brea… in VisitConvolutionOperator()