29 std::vector<float>& inputData,
30 std::vector<float>& outputExpectedData,
32 const float qScale = 1.0f,
33 const int32_t qOffset = 0)
42 std::vector<float> inputTmp(inputData.size());
44 inputData.data(), inputTmp.data(),
sizeof(float));
47 std::vector<float> outputTmp(outputExpectedData.size());
49 outputExpectedData.data(), outputTmp.data(),
sizeof(float));
50 outputExpectedData = outputTmp;
53 if(armnn::IsQuantizedType<T>())
61 boost::multi_array<T, 4> input = MakeTensor<T, 4>(inputTensorInfo,
62 armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset));
65 ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo,
66 armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset));
68 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
69 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
72 AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
73 AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
75 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateSpaceToBatchNd(descriptor, info);
77 inputHandle->Allocate();
78 outputHandle->Allocate();
89 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
99 unsigned int inputShape[] = {1, 1, 2, 2};
100 unsigned int outputShape[] = {4, 1, 1, 1};
110 std::vector<float> input = std::vector<float>(
112 1.0f, 2.0f, 3.0f, 4.0f
115 std::vector<float> outputExpected = std::vector<float>(
117 1.0f, 2.0f, 3.0f, 4.0f
120 return SpaceToBatchNdTestImpl<T>(
121 workloadFactory, memoryManager, tensorHandleFactory,
122 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
125 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
135 unsigned int inputShape[] = {1, 3, 2, 2};
136 unsigned int outputShape[] = {4, 3, 1, 1};
146 std::vector<float> input = std::vector<float>(
148 1.0f, 4.0f, 7.0f, 10.0f,
149 2.0f, 5.0, 8.0, 11.0f,
150 3.0f, 6.0f, 9.0f, 12.0f
153 std::vector<float> outputExpected = std::vector<float>(
161 return SpaceToBatchNdTestImpl<T>(
162 workloadFactory, memoryManager, tensorHandleFactory,
163 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
166 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
176 unsigned int inputShape[] = {1, 1, 4, 4};
177 unsigned int outputShape[] = {4, 1, 2, 2};
187 std::vector<float> input = std::vector<float>(
189 1.0f, 2.0f, 3.0f, 4.0f,
190 5.0f, 6.0f, 7.0f, 8.0f,
191 9.0f, 10.0f, 11.0f, 12.0f,
192 13.0f, 14.0f, 15.0f, 16.0f
195 std::vector<float> outputExpected = std::vector<float>(
197 1.0f, 3.0f, 9.0f, 11.0f,
198 2.0f, 4.0f, 10.0f, 12.0f,
199 5.0f, 7.0f, 13.0f, 15.0f,
200 6.0f, 8.0f, 14.0f, 16.0f
203 return SpaceToBatchNdTestImpl<T>(
204 workloadFactory, memoryManager, tensorHandleFactory,
205 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
208 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
218 unsigned int inputShape[] = {2, 1, 2, 4};
219 unsigned int outputShape[] = {8, 1, 1, 3};
229 std::vector<float> input = std::vector<float>(
231 1.0f, 2.0f, 3.0f, 4.0f,
232 5.0f, 6.0f, 7.0f, 8.0f,
233 9.0f, 10.0f, 11.0f, 12.0f,
234 13.0f, 14.0f, 15.0f, 16.0f
237 std::vector<float> outputExpected = std::vector<float>(
249 return SpaceToBatchNdTestImpl<T>(
250 workloadFactory, memoryManager, tensorHandleFactory,
251 inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
254 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
260 return SpaceToBatchNdSimpleTest<ArmnnType>(workloadFactory,
266 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
272 return SpaceToBatchNdMultiChannelsTest<ArmnnType>(workloadFactory,
278 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
284 return SpaceToBatchNdMultiBlockTest<ArmnnType>(workloadFactory,
290 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
296 return SpaceToBatchNdPaddingTest<ArmnnType>(workloadFactory,
309 return SpaceToBatchNdSimpleTest<armnn::DataType::Float32>(workloadFactory,
311 tensorHandleFactory);
319 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float32>(workloadFactory,
321 tensorHandleFactory);
329 return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float32>(workloadFactory,
331 tensorHandleFactory);
339 return SpaceToBatchNdPaddingTest<armnn::DataType::Float32>(workloadFactory,
341 tensorHandleFactory);
349 return SpaceToBatchNdSimpleTest<armnn::DataType::Float16>(workloadFactory,
351 tensorHandleFactory);
359 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float16>(workloadFactory,
361 tensorHandleFactory);
369 return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float16>(workloadFactory,
371 tensorHandleFactory);
379 return SpaceToBatchNdPaddingTest<armnn::DataType::Float16>(workloadFactory,
381 tensorHandleFactory);
389 return SpaceToBatchNdSimpleTest<armnn::DataType::QAsymmU8>(workloadFactory,
391 tensorHandleFactory);
399 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QAsymmU8>(workloadFactory,
401 tensorHandleFactory);
409 return SpaceToBatchNdMultiBlockTest<armnn::DataType::QAsymmU8>(workloadFactory,
411 tensorHandleFactory);
419 return SpaceToBatchNdPaddingTest<armnn::DataType::QAsymmU8>(workloadFactory,
421 tensorHandleFactory);
429 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float32>(workloadFactory,
431 tensorHandleFactory);
439 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float32>(workloadFactory,
441 tensorHandleFactory);
449 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float32>(workloadFactory,
451 tensorHandleFactory);
459 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float32>(workloadFactory,
461 tensorHandleFactory);
469 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float16>(workloadFactory,
471 tensorHandleFactory);
479 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float16>(workloadFactory,
481 tensorHandleFactory);
489 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float16>(workloadFactory,
491 tensorHandleFactory);
499 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float16>(workloadFactory,
501 tensorHandleFactory);
509 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
511 tensorHandleFactory);
519 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
521 tensorHandleFactory);
529 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
531 tensorHandleFactory);
539 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
541 tensorHandleFactory);
549 return SpaceToBatchNdSimpleTest<armnn::DataType::QSymmS16>(workloadFactory,
551 tensorHandleFactory);
559 return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QSymmS16>(workloadFactory,
561 tensorHandleFactory);
569 return SpaceToBatchNdMultiBlockTest<armnn::DataType::QSymmS16>(workloadFactory,
571 tensorHandleFactory);
579 return SpaceToBatchNdPaddingTest<armnn::DataType::QSymmS16>(workloadFactory,
581 tensorHandleFactory);
589 return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
591 tensorHandleFactory);
599 return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
601 tensorHandleFactory);
609 return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
611 tensorHandleFactory);
619 return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
621 tensorHandleFactory);
LayerTestResult< uint8_t, 4 > SpaceToBatchNdMultiChannelsNhwcUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdPaddingUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
const TensorShape & GetShape() const
LayerTestResult< uint8_t, 4 > SpaceToBatchNdMultiBlockNhwcUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdMultiChannelsNhwcFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdSimpleNhwcUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdMultiBlockFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdMultiChannelsUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdMultiBlockNhwcFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void IgnoreUnused(Ts &&...)
std::vector< std::pair< unsigned int, unsigned int > > m_PadList
Specifies the padding values for the input dimension: heightPad{top, bottom} widthPad{left, right}.
LayerDescriptor m_Parameters
LayerTestResult< uint8_t, 4 > SpaceToBatchNdPaddingNhwcUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > SpaceToBatchNdMultiChannelsUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > SpaceToBatchNdPaddingUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
void Permute(const armnn::TensorShape &dstShape, const armnn::PermutationVector &mappings, const void *src, void *dst, size_t dataTypeSize)
LayerTestResult< uint8_t, 4 > SpaceToBatchNdMultiBlockUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
virtual std::unique_ptr< IWorkload > CreateSpaceToBatchNd(const SpaceToBatchNdQueueDescriptor &descriptor, const WorkloadInfo &info) const
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< float, 4 > SpaceToBatchNdSimpleNhwcFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdPaddingFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void SetQuantizationScale(float scale)
std::vector< unsigned int > m_BlockShape
Block shape value.
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
LayerTestResult< int16_t, 4 > SpaceToBatchNdMultiChannelsNhwcUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdPaddingNhwcFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > SpaceToBatchNdSimpleFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdMultiBlockNhwcUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdSimpleUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdMultiBlockUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > SpaceToBatchNdPaddingNhwcFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdSimpleNhwcFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > SpaceToBatchNdMultiBlockFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< int16_t, 4 > SpaceToBatchNdPaddingNhwcUint16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
Contains information about inputs and outputs to a layer.
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void SetQuantizationOffset(int32_t offset)
LayerTestResult< float, 4 > SpaceToBatchNdMultiBlockNhwcFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > SpaceToBatchNdSimpleNhwcUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > SpaceToBatchNdMultiChannelsFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< float, 4 > SpaceToBatchNdPaddingFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdMultiChannelsFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< uint8_t, 4 > SpaceToBatchNdSimpleUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
armnn::TensorShape Permuted(const armnn::TensorShape &srcShape, const armnn::PermutationVector &mappings)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< float, 4 > SpaceToBatchNdMultiChannelsNhwcFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)