23 template<armnn::DataType ArmnnType,
typename T, std::
size_t outputDimLength>
30 const std::vector<std::vector<T>>& inputData,
31 const std::vector<T>& outputExpectedData)
34 unsigned int numInputs =
static_cast<unsigned int>(inputData.size());
35 std::vector<boost::multi_array<T, outputDimLength-1>> inputs;
36 for (
unsigned int i = 0; i < numInputs; ++i)
38 inputs.push_back(MakeTensor<T, outputDimLength-1>(inputTensorInfo, inputData[i]));
42 result.outputExpected = MakeTensor<T, outputDimLength>(outputTensorInfo, outputExpectedData);
44 std::vector<std::unique_ptr<armnn::ITensorHandle>> inputHandles;
46 for (
unsigned int i = 0; i < numInputs; ++i)
50 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
55 descriptor.m_Parameters.m_InputShape = inputTensorInfo.
GetShape();
56 descriptor.m_Parameters.m_NumInputs = numInputs;
59 for (
unsigned int i = 0; i < numInputs; ++i)
61 std::unique_ptr<armnn::ITensorHandle>& inputHandle = inputHandles[i];
62 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
63 inputHandle->Allocate();
67 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
68 outputHandle->Allocate();
70 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateStack(descriptor, info);
85 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
93 std::vector<std::vector<T>> inputData;
119 std::vector<T> outputExpectedData =
141 return StackTestHelper<ArmnnType, T, 4>(
152 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
160 std::vector<std::vector<T>> inputData;
186 std::vector<T> outputExpectedData =
209 return StackTestHelper<ArmnnType, T, 4>(
220 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
228 std::vector<std::vector<T>> inputData;
254 std::vector<T> outputExpectedData =
275 return StackTestHelper<ArmnnType, T, 4>(
286 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
294 std::vector<std::vector<T>> inputData;
320 std::vector<T> outputExpectedData =
349 return StackTestHelper<ArmnnType, T, 4>(
360 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
368 std::vector<std::vector<T>> inputData;
391 std::vector<T> outputExpectedData =
406 return StackTestHelper<ArmnnType, T, 3>(
417 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
425 std::vector<std::vector<T>> inputData;
459 std::vector<T> outputExpectedData =
491 return StackTestHelper<ArmnnType, T, 5>(
510 return StackAxis0TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager);
517 return StackOutput4DAxis1TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager);
524 return StackOutput4DAxis2TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager);
531 return StackOutput4DAxis3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager);
538 return StackOutput3DInputs3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager);
545 return StackOutput5DTestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager);
552 using namespace half_float::literal;
557 std::vector<std::vector<armnn::Half>> inputData;
565 10.0_h, 11.0_h, 12.0_h,
567 13.0_h, 14.0_h, 15.0_h,
568 16.0_h, 17.0_h, 18.0_h
573 19.0_h, 20.0_h, 21.0_h,
574 22.0_h, 23.0_h, 24.0_h,
576 25.0_h, 26.0_h, 27.0_h,
577 28.0_h, 29.0_h, 30.0_h,
579 31.0_h, 32.0_h, 33.0_h,
580 34.0_h, 35.0_h, 36.0_h
583 std::vector<armnn::Half> outputExpectedData =
586 19.0_h, 20.0_h, 21.0_h,
589 22.0_h, 23.0_h, 24.0_h,
592 25.0_h, 26.0_h, 27.0_h,
594 10.0_h, 11.0_h, 12.0_h,
595 28.0_h, 29.0_h, 30.0_h,
597 13.0_h, 14.0_h, 15.0_h,
598 31.0_h, 32.0_h, 33.0_h,
600 16.0_h, 17.0_h, 18.0_h,
601 34.0_h, 35.0_h, 36.0_h
604 return StackTestHelper<armnn::DataType::Float16, armnn::Half, 4>(
LayerTestResult< float, 3 > StackOutput3DInputs3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
uint32_t m_Axis
0-based axis along which to stack the input tensors.
const TensorShape & GetShape() const
LayerTestResult< T, 4 > StackOutput4DAxis1TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 4 > StackAxis0Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
LayerTestResult< float, 4 > StackOutput4DAxis1Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< IWorkload > CreateStack(const StackQueueDescriptor &descriptor, const WorkloadInfo &info) const
LayerTestResult< float, 4 > StackOutput4DAxis2Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< T, 4 > StackOutput4DAxis3TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 4 > StackOutput4DAxis3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
#define ARMNN_NO_DEPRECATE_WARN_END
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< T, 4 > StackOutput4DAxis2TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< armnn::Half, 4 > StackFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 5 > StackOutput5DFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 5 > StackOutput5DTestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
Contains information about inputs and outputs to a layer.
LayerTestResult< T, 4 > StackAxis0TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 3 > StackOutput3DInputs3TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)