23 template<armnn::DataType ArmnnType,
typename T, std::
size_t outputDimLength>
31 const std::vector<std::vector<T>>& inputData,
32 const std::vector<T>& outputExpectedData)
35 unsigned int numInputs =
static_cast<unsigned int>(inputData.size());
36 std::vector<boost::multi_array<T, outputDimLength-1>> inputs;
37 for (
unsigned int i = 0; i < numInputs; ++i)
39 inputs.push_back(MakeTensor<T, outputDimLength-1>(inputTensorInfo, inputData[i]));
43 result.outputExpected = MakeTensor<T, outputDimLength>(outputTensorInfo, outputExpectedData);
45 std::vector<std::unique_ptr<armnn::ITensorHandle>> inputHandles;
46 for (
unsigned int i = 0; i < numInputs; ++i)
50 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
58 for (
unsigned int i = 0; i < numInputs; ++i)
60 std::unique_ptr<armnn::ITensorHandle>& inputHandle = inputHandles[i];
61 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
62 inputHandle->Allocate();
66 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
67 outputHandle->Allocate();
69 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateStack(descriptor, info);
84 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>(
153 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
162 std::vector<std::vector<T>> inputData;
188 std::vector<T> outputExpectedData =
211 return StackTestHelper<ArmnnType, T, 4>(
223 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
232 std::vector<std::vector<T>> inputData;
258 std::vector<T> outputExpectedData =
279 return StackTestHelper<ArmnnType, T, 4>(
291 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
300 std::vector<std::vector<T>> inputData;
326 std::vector<T> outputExpectedData =
355 return StackTestHelper<ArmnnType, T, 4>(
367 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
376 std::vector<std::vector<T>> inputData;
399 std::vector<T> outputExpectedData =
414 return StackTestHelper<ArmnnType, T, 3>(
426 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
435 std::vector<std::vector<T>> inputData;
469 std::vector<T> outputExpectedData =
501 return StackTestHelper<ArmnnType, T, 5>(
522 return StackAxis0TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
530 return StackOutput4DAxis1TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
538 return StackOutput4DAxis2TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
546 return StackOutput4DAxis3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
554 return StackOutput3DInputs3TestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
562 return StackOutput5DTestImpl<armnn::DataType::Float32>(workloadFactory, memoryManager, tensorHandleFactory);
570 using namespace half_float::literal;
575 std::vector<std::vector<armnn::Half>> inputData;
583 10.0_h, 11.0_h, 12.0_h,
585 13.0_h, 14.0_h, 15.0_h,
586 16.0_h, 17.0_h, 18.0_h
591 19.0_h, 20.0_h, 21.0_h,
592 22.0_h, 23.0_h, 24.0_h,
594 25.0_h, 26.0_h, 27.0_h,
595 28.0_h, 29.0_h, 30.0_h,
597 31.0_h, 32.0_h, 33.0_h,
598 34.0_h, 35.0_h, 36.0_h
601 std::vector<armnn::Half> outputExpectedData =
604 19.0_h, 20.0_h, 21.0_h,
607 22.0_h, 23.0_h, 24.0_h,
610 25.0_h, 26.0_h, 27.0_h,
612 10.0_h, 11.0_h, 12.0_h,
613 28.0_h, 29.0_h, 30.0_h,
615 13.0_h, 14.0_h, 15.0_h,
616 31.0_h, 32.0_h, 33.0_h,
618 16.0_h, 17.0_h, 18.0_h,
619 34.0_h, 35.0_h, 36.0_h
622 return StackTestHelper<armnn::DataType::Float16, armnn::Half, 4>(
LayerTestResult< float, 5 > StackOutput5DFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_Axis
0-based axis along which to stack the input tensors.
const TensorShape & GetShape() const
TensorShape m_InputShape
Required shape of all input tensors.
LayerTestResult< armnn::Half, 4 > StackFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
virtual std::unique_ptr< IWorkload > CreateStack(const StackQueueDescriptor &descriptor, const WorkloadInfo &info) const
LayerTestResult< T, 4 > StackOutput4DAxis2TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 4 > StackOutput4DAxis3TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< float, 4 > StackAxis0Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 5 > StackOutput5DTestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > StackOutput4DAxis3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< T, 4 > StackAxis0TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 4 > StackOutput4DAxis1TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
uint32_t m_NumInputs
Number of input tensors.
LayerTestResult< float, 4 > StackOutput4DAxis1Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > StackOutput4DAxis2Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 3 > StackOutput3DInputs3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 3 > StackOutput3DInputs3TestImpl(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
Contains information about inputs and outputs to a layer.
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)