27 std::size_t OutputDim,
33 const unsigned int *inputShape,
34 const std::vector<float> &inputData,
35 const std::vector<unsigned int> &blockShape,
36 const std::vector<std::pair<unsigned int, unsigned int>> &crops,
37 const unsigned int *outputShape,
38 const std::vector<float> &outputData,
47 inputTensorInfo.SetQuantizationScale(scale);
48 inputTensorInfo.SetQuantizationOffset(offset);
50 outputTensorInfo.SetQuantizationScale(scale);
51 outputTensorInfo.SetQuantizationOffset(offset);
53 auto input = MakeTensor<T, InputDim>(inputTensorInfo, ConvertToDataType<ArmnnType>(inputData, inputTensorInfo));
56 result.outputExpected = MakeTensor<T, OutputDim>(outputTensorInfo,
57 ConvertToDataType<ArmnnType>(outputData, outputTensorInfo));
60 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputTensorInfo);
61 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputTensorInfo);
66 data.m_Parameters.m_BlockShape = blockShape;
67 data.m_Parameters.m_Crops = crops;
69 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
70 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
74 inputHandle->Allocate();
75 outputHandle->Allocate();
79 workload->PostAllocationConfigure();
89 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
94 const unsigned int inputShape[] = {4, 2, 2, 1};
95 const unsigned int outputShape[] = {1, 4, 4, 1};
97 std::vector<float> input({
121 std::vector<float> expectedOutput({
122 1.0f, 2.0f, 3.0f, 4.0f,
123 5.0f, 6.0f, 7.0f, 8.0f,
124 9.0f, 10.0f, 11.0f, 12.0f,
125 13.0f, 14.0f, 15.0f, 16.0f
128 std::vector<unsigned int> blockShape {2, 2};
129 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
131 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
133 crops, outputShape, expectedOutput);
136 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
141 const unsigned int inputShape[] = {4, 1, 1, 1};
142 const unsigned int outputShape[] = {1, 2, 2, 1};
144 std::vector<float> input({
146 1.0f, 2.0f, 3.0f, 4.0f
149 std::vector<float> expectedOutput({1.0f, 2.0f, 3.0f, 4.0f});
151 std::vector<unsigned int> blockShape({2, 2});
152 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
154 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
156 crops, outputShape, expectedOutput);
159 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
164 const unsigned int inputShape[] = {4, 1, 1, 3};
165 const unsigned int outputShape[] = {1, 2, 2, 3};
167 std::vector<float> input({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f});
169 std::vector<float> expectedOutput({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f});
171 std::vector<unsigned int> blockShape({2, 2});
172 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
174 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
176 crops, outputShape, expectedOutput);
179 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
184 const unsigned int inputShape[] = {8, 1, 3, 1};
185 const unsigned int outputShape[] = {2, 2, 4, 1};
187 std::vector<float> input({
198 std::vector<float> expectedOutput({
199 1.0f, 2.0f, 3.0f, 4.0f,
200 5.0f, 6.0f, 7.0f, 8.0f,
201 9.0f, 10.0f, 11.0f, 12.0f,
202 13.0f, 14.0f, 15.0f, 16.0f
205 std::vector<unsigned int> blockShape({2, 2});
206 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {2, 0}};
208 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
210 crops, outputShape, expectedOutput);
213 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
218 const unsigned int inputShape[] = {4, 2, 2, 1};
219 const unsigned int outputShape[] = {1, 4, 4, 1};
221 std::vector<float> input({1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16});
222 std::vector<float> expectedOutput({1, 5, 2, 6, 9, 13, 10, 14, 3, 7, 4, 8, 11, 15, 12, 16});
224 std::vector<unsigned int> blockShape({2, 2});
225 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
227 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
armnn::DataLayout::NHWC, inputShape,
228 input, blockShape, crops, outputShape, expectedOutput);
231 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
236 const unsigned int inputShape[] = {4, 1, 1, 1};
237 const unsigned int outputShape[] = {1, 2, 2, 1};
239 std::vector<float> input({
244 std::vector<float> expectedOutput({1, 2, 3, 4});
246 std::vector<unsigned int> blockShape({2, 2});
247 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
249 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
251 crops, outputShape, expectedOutput);
254 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
259 const unsigned int inputShape[] = {4, 1, 1, 3};
260 const unsigned int outputShape[] = {1, 2, 2, 3};
262 std::vector<float> input({1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
264 std::vector<float> expectedOutput({1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
266 std::vector<unsigned int> blockShape({2, 2});
267 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
269 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
271 crops, outputShape, expectedOutput);
274 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
279 const unsigned int inputShape[] = {4, 3, 1, 1};
280 const unsigned int outputShape[] = {1, 3, 2, 2};
282 std::vector<float> input({1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f});
284 std::vector<float> expectedOutput({
298 std::vector<unsigned int> blockShape({2, 2});
299 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
301 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
303 crops, outputShape, expectedOutput);
306 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
311 const unsigned int inputShape[] = {4, 1, 1, 1};
312 const unsigned int outputShape[] = {1, 1, 2, 2};
314 std::vector<float> input({
316 1.0f, 2.0f, 3.0f, 4.0f
319 std::vector<float> expectedOutput({1.0f, 2.0f, 3.0f, 4.0f});
321 std::vector<unsigned int> blockShape({2, 2});
322 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
324 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
326 crops, outputShape, expectedOutput);
329 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
334 const unsigned int inputShape[] = {4, 3, 1, 1};
335 const unsigned int outputShape[] = {1, 3, 2, 2};
337 std::vector<float> input({1.0f, 3.0f, 5.0f, 7.0f, 9.0f, 11.0f, 2.0f, 4.0f, 6.0f, 8.0f, 10.0f, 12.0f});
339 std::vector<float> expectedOutput({
353 std::vector<unsigned int> blockShape({2, 2});
354 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
356 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
358 crops, outputShape, expectedOutput);
361 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
366 const unsigned int inputShape[] = {4, 3, 1, 1};
367 const unsigned int outputShape[] = {1, 3, 2, 2};
369 std::vector<float> input({1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12});
371 std::vector<float> expectedOutput({
385 std::vector<unsigned int> blockShape({2, 2});
386 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
388 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
390 crops, outputShape, expectedOutput);
393 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
398 const unsigned int inputShape[] = {4, 1, 1, 1};
399 const unsigned int outputShape[] = {1, 1, 2, 2};
401 std::vector<float> input({
406 std::vector<float> expectedOutput({1, 2, 3, 4});
408 std::vector<unsigned int> blockShape({2, 2});
409 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
411 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
413 crops, outputShape, expectedOutput);
416 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
421 const unsigned int inputShape[] = {4, 3, 1, 1};
422 const unsigned int outputShape[] = {1, 3, 2, 2};
424 std::vector<float> input({1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 10, 12});
426 std::vector<float> expectedOutput({
440 std::vector<unsigned int> blockShape({2, 2});
441 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {0, 0}};
443 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
445 crops, outputShape, expectedOutput);
448 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
453 const unsigned int inputShape[] = {8, 1, 1, 3};
454 const unsigned int outputShape[] = {2, 1, 2, 4};
456 std::vector<float> input({
463 std::vector<float> expectedOutput({
470 std::vector<unsigned int> blockShape({2, 2});
471 std::vector<std::pair<unsigned int, unsigned int>> crops = {{0, 0}, {2, 0}};
473 return BatchToSpaceNdHelper<ArmnnType, 4, 4>(workloadFactory, memoryManager,
475 crops, outputShape, expectedOutput);
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest3(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest2(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest6(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest5(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< IWorkload > CreateBatchToSpaceNd(const BatchToSpaceNdQueueDescriptor &descriptor, const WorkloadInfo &Info) const
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
LayerTestResult< T, 4 > BatchToSpaceNdNhwcTest5(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNhwcTest1(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNhwcTest2(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest1(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
typename ResolveTypeImpl< DT >::Type ResolveType
LayerTestResult< T, 4 > BatchToSpaceNdNhwcTest6(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest7(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
#define ARMNN_NO_DEPRECATE_WARN_END
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< T, 4 > BatchToSpaceNdNhwcTest7(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< T, 4 > BatchToSpaceNdNhwcTest4(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< T, 4 > BatchToSpaceNdNhwcTest3(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
Contains information about inputs and outputs to a layer.
LayerTestResult< T, 4 > BatchToSpaceNdNchwTest4(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)