ArmNN
 22.05
SpaceToBatchNdTestImpl.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
7 
9 #include <ResolveType.hpp>
10 
11 
12 #include <armnnUtils/Permute.hpp>
13 
16 
18 
19 namespace
20 {
21 
22 template<typename T>
23 LayerTestResult<T, 4> SpaceToBatchNdTestImpl(
24  armnn::IWorkloadFactory& workloadFactory,
26  const armnn::ITensorHandleFactory& tensorHandleFactory,
27  armnn::TensorInfo& inputTensorInfo,
28  armnn::TensorInfo& outputTensorInfo,
29  std::vector<float>& inputData,
30  std::vector<float>& outputExpectedData,
32  const float qScale = 1.0f,
33  const int32_t qOffset = 0)
34 {
35  IgnoreUnused(memoryManager);
36  const armnn::PermutationVector NCHWToNHWC = {0, 3, 1, 2};
38  {
39  inputTensorInfo = armnnUtils::Permuted(inputTensorInfo, NCHWToNHWC);
40  outputTensorInfo = armnnUtils::Permuted(outputTensorInfo, NCHWToNHWC);
41 
42  std::vector<float> inputTmp(inputData.size());
43  armnnUtils::Permute(inputTensorInfo.GetShape(), NCHWToNHWC,
44  inputData.data(), inputTmp.data(), sizeof(float));
45  inputData = inputTmp;
46 
47  std::vector<float> outputTmp(outputExpectedData.size());
48  armnnUtils::Permute(outputTensorInfo.GetShape(), NCHWToNHWC,
49  outputExpectedData.data(), outputTmp.data(), sizeof(float));
50  outputExpectedData = outputTmp;
51  }
52 
53  if(armnn::IsQuantizedType<T>())
54  {
55  inputTensorInfo.SetQuantizationScale(qScale);
56  inputTensorInfo.SetQuantizationOffset(qOffset);
57  outputTensorInfo.SetQuantizationScale(qScale);
58  outputTensorInfo.SetQuantizationOffset(qOffset);
59  }
60 
61  std::vector<T> input = armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset);
62  std::vector<T> expectedOutput = armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset);
63  std::vector<T> actualOutput(outputTensorInfo.GetNumElements());
64 
65  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
66  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
67 
69  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
70  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
71 
72  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateWorkload(armnn::LayerType::SpaceToBatchNd,
73  descriptor,
74  info);
75 
76  inputHandle->Allocate();
77  outputHandle->Allocate();
78 
79  CopyDataToITensorHandle(inputHandle.get(), input.data());
80 
81  workload->Execute();
82 
83  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
84 
85  return LayerTestResult<T, 4>(actualOutput,
86  expectedOutput,
87  outputHandle->GetShape(),
88  outputTensorInfo.GetShape());
89 }
90 
91 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
92 LayerTestResult<T, 4> SpaceToBatchNdSimpleTest(
93  armnn::IWorkloadFactory& workloadFactory,
95  const armnn::ITensorHandleFactory& tensorHandleFactory,
97 {
98  armnn::TensorInfo inputTensorInfo;
99  armnn::TensorInfo outputTensorInfo;
100 
101  unsigned int inputShape[] = {1, 1, 2, 2};
102  unsigned int outputShape[] = {4, 1, 1, 1};
103 
105  desc.m_Parameters.m_DataLayout = dataLayout;
106  desc.m_Parameters.m_BlockShape = {2, 2};
107  desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
108 
109  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
110  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
111 
112  std::vector<float> input = std::vector<float>(
113  {
114  1.0f, 2.0f, 3.0f, 4.0f
115  });
116 
117  std::vector<float> outputExpected = std::vector<float>(
118  {
119  1.0f, 2.0f, 3.0f, 4.0f
120  });
121 
122  return SpaceToBatchNdTestImpl<T>(
123  workloadFactory, memoryManager, tensorHandleFactory,
124  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
125 }
126 
127 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
128 LayerTestResult<T, 4> SpaceToBatchNdMultiChannelsTest(
129  armnn::IWorkloadFactory& workloadFactory,
131  const armnn::ITensorHandleFactory& tensorHandleFactory,
133 {
134  armnn::TensorInfo inputTensorInfo;
135  armnn::TensorInfo outputTensorInfo;
136 
137  unsigned int inputShape[] = {1, 3, 2, 2};
138  unsigned int outputShape[] = {4, 3, 1, 1};
139 
141  desc.m_Parameters.m_DataLayout = dataLayout;
142  desc.m_Parameters.m_BlockShape = {2, 2};
143  desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
144 
145  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
146  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
147 
148  std::vector<float> input = std::vector<float>(
149  {
150  1.0f, 4.0f, 7.0f, 10.0f,
151  2.0f, 5.0, 8.0, 11.0f,
152  3.0f, 6.0f, 9.0f, 12.0f
153  });
154 
155  std::vector<float> outputExpected = std::vector<float>(
156  {
157  1.0f, 2.0f, 3.0f,
158  4.0f, 5.0f, 6.0f,
159  7.0f, 8.0f, 9.0f,
160  10.0f, 11.0f, 12.0f
161  });
162 
163  return SpaceToBatchNdTestImpl<T>(
164  workloadFactory, memoryManager, tensorHandleFactory,
165  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
166 }
167 
168 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
169 LayerTestResult<T, 4> SpaceToBatchNdMultiBlockTest(
170  armnn::IWorkloadFactory& workloadFactory,
172  const armnn::ITensorHandleFactory& tensorHandleFactory,
174 {
175  armnn::TensorInfo inputTensorInfo;
176  armnn::TensorInfo outputTensorInfo;
177 
178  unsigned int inputShape[] = {1, 1, 4, 4};
179  unsigned int outputShape[] = {4, 1, 2, 2};
180 
182  desc.m_Parameters.m_DataLayout = dataLayout;
183  desc.m_Parameters.m_BlockShape = {2, 2};
184  desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
185 
186  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
187  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
188 
189  std::vector<float> input = std::vector<float>(
190  {
191  1.0f, 2.0f, 3.0f, 4.0f,
192  5.0f, 6.0f, 7.0f, 8.0f,
193  9.0f, 10.0f, 11.0f, 12.0f,
194  13.0f, 14.0f, 15.0f, 16.0f
195  });
196 
197  std::vector<float> outputExpected = std::vector<float>(
198  {
199  1.0f, 3.0f, 9.0f, 11.0f,
200  2.0f, 4.0f, 10.0f, 12.0f,
201  5.0f, 7.0f, 13.0f, 15.0f,
202  6.0f, 8.0f, 14.0f, 16.0f
203  });
204 
205  return SpaceToBatchNdTestImpl<T>(
206  workloadFactory, memoryManager, tensorHandleFactory,
207  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
208 }
209 
210 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
211 LayerTestResult<T, 4> SpaceToBatchNdPaddingTest(
212  armnn::IWorkloadFactory& workloadFactory,
214  const armnn::ITensorHandleFactory& tensorHandleFactory,
216 {
217  armnn::TensorInfo inputTensorInfo;
218  armnn::TensorInfo outputTensorInfo;
219 
220  unsigned int inputShape[] = {2, 1, 2, 4};
221  unsigned int outputShape[] = {8, 1, 1, 3};
222 
224  desc.m_Parameters.m_DataLayout = dataLayout;
225  desc.m_Parameters.m_BlockShape = {2, 2};
226  desc.m_Parameters.m_PadList = {{0, 0}, {2, 0}};
227 
228  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
229  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
230 
231  std::vector<float> input = std::vector<float>(
232  {
233  1.0f, 2.0f, 3.0f, 4.0f,
234  5.0f, 6.0f, 7.0f, 8.0f,
235  9.0f, 10.0f, 11.0f, 12.0f,
236  13.0f, 14.0f, 15.0f, 16.0f
237  });
238 
239  std::vector<float> outputExpected = std::vector<float>(
240  {
241  0.0f, 1.0f, 3.0f,
242  0.0f, 9.0f, 11.0f,
243  0.0f, 2.0f, 4.0f,
244  0.0f, 10.0f, 12.0f,
245  0.0f, 5.0f, 7.0f,
246  0.0f, 13.0f, 15.0f,
247  0.0f, 6.0f, 8.0f,
248  0.0f, 14.0f, 16.0f
249  });
250 
251  return SpaceToBatchNdTestImpl<T>(
252  workloadFactory, memoryManager, tensorHandleFactory,
253  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
254 }
255 
256 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
257 LayerTestResult<T, 4> SpaceToBatchNdSimpleNhwcTest(
258  armnn::IWorkloadFactory& workloadFactory,
260  const armnn::ITensorHandleFactory& tensorHandleFactory)
261 {
262  return SpaceToBatchNdSimpleTest<ArmnnType>(workloadFactory,
263  memoryManager,
264  tensorHandleFactory,
266 }
267 
268 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
269 LayerTestResult<T, 4> SpaceToBatchNdMultiChannelsNhwcTest(
270  armnn::IWorkloadFactory& workloadFactory,
272  const armnn::ITensorHandleFactory& tensorHandleFactory)
273 {
274  return SpaceToBatchNdMultiChannelsTest<ArmnnType>(workloadFactory,
275  memoryManager,
276  tensorHandleFactory,
278 }
279 
280 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
281 LayerTestResult<T, 4> SpaceToBatchNdMultiBlockNhwcTest(
282  armnn::IWorkloadFactory& workloadFactory,
284  const armnn::ITensorHandleFactory& tensorHandleFactory)
285 {
286  return SpaceToBatchNdMultiBlockTest<ArmnnType>(workloadFactory,
287  memoryManager,
288  tensorHandleFactory,
290 }
291 
292 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
293 LayerTestResult<T, 4> SpaceToBatchNdPaddingNhwcTest(
294  armnn::IWorkloadFactory& workloadFactory,
296  const armnn::ITensorHandleFactory& tensorHandleFactory)
297 {
298  return SpaceToBatchNdPaddingTest<ArmnnType>(workloadFactory,
299  memoryManager,
300  tensorHandleFactory,
302 }
303 
304 } // anonymous namespace
305 
307  armnn::IWorkloadFactory& workloadFactory,
309  const armnn::ITensorHandleFactory& tensorHandleFactory)
310 {
311  return SpaceToBatchNdSimpleTest<armnn::DataType::Float32>(workloadFactory,
312  memoryManager,
313  tensorHandleFactory);
314 }
315 
317  armnn::IWorkloadFactory& workloadFactory,
319  const armnn::ITensorHandleFactory& tensorHandleFactory)
320 {
321  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float32>(workloadFactory,
322  memoryManager,
323  tensorHandleFactory);
324 }
325 
327  armnn::IWorkloadFactory& workloadFactory,
329  const armnn::ITensorHandleFactory& tensorHandleFactory)
330 {
331  return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float32>(workloadFactory,
332  memoryManager,
333  tensorHandleFactory);
334 }
335 
337  armnn::IWorkloadFactory& workloadFactory,
339  const armnn::ITensorHandleFactory& tensorHandleFactory)
340 {
341  return SpaceToBatchNdPaddingTest<armnn::DataType::Float32>(workloadFactory,
342  memoryManager,
343  tensorHandleFactory);
344 }
345 
347  armnn::IWorkloadFactory& workloadFactory,
349  const armnn::ITensorHandleFactory& tensorHandleFactory)
350 {
351  return SpaceToBatchNdSimpleTest<armnn::DataType::Float16>(workloadFactory,
352  memoryManager,
353  tensorHandleFactory);
354 }
355 
357  armnn::IWorkloadFactory& workloadFactory,
359  const armnn::ITensorHandleFactory& tensorHandleFactory)
360 {
361  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float16>(workloadFactory,
362  memoryManager,
363  tensorHandleFactory);
364 }
365 
367  armnn::IWorkloadFactory& workloadFactory,
369  const armnn::ITensorHandleFactory& tensorHandleFactory)
370 {
371  return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float16>(workloadFactory,
372  memoryManager,
373  tensorHandleFactory);
374 }
375 
377  armnn::IWorkloadFactory& workloadFactory,
379  const armnn::ITensorHandleFactory& tensorHandleFactory)
380 {
381  return SpaceToBatchNdPaddingTest<armnn::DataType::Float16>(workloadFactory,
382  memoryManager,
383  tensorHandleFactory);
384 }
385 
387  armnn::IWorkloadFactory& workloadFactory,
389  const armnn::ITensorHandleFactory& tensorHandleFactory)
390 {
391  return SpaceToBatchNdSimpleTest<armnn::DataType::QAsymmU8>(workloadFactory,
392  memoryManager,
393  tensorHandleFactory);
394 }
395 
397  armnn::IWorkloadFactory& workloadFactory,
399  const armnn::ITensorHandleFactory& tensorHandleFactory)
400 {
401  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QAsymmU8>(workloadFactory,
402  memoryManager,
403  tensorHandleFactory);
404 }
405 
407  armnn::IWorkloadFactory& workloadFactory,
409  const armnn::ITensorHandleFactory& tensorHandleFactory)
410 {
411  return SpaceToBatchNdMultiBlockTest<armnn::DataType::QAsymmU8>(workloadFactory,
412  memoryManager,
413  tensorHandleFactory);
414 }
415 
417  armnn::IWorkloadFactory& workloadFactory,
419  const armnn::ITensorHandleFactory& tensorHandleFactory)
420 {
421  return SpaceToBatchNdPaddingTest<armnn::DataType::QAsymmU8>(workloadFactory,
422  memoryManager,
423  tensorHandleFactory);
424 }
425 
427  armnn::IWorkloadFactory& workloadFactory,
429  const armnn::ITensorHandleFactory& tensorHandleFactory)
430 {
431  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float32>(workloadFactory,
432  memoryManager,
433  tensorHandleFactory);
434 }
435 
437  armnn::IWorkloadFactory& workloadFactory,
439  const armnn::ITensorHandleFactory& tensorHandleFactory)
440 {
441  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float32>(workloadFactory,
442  memoryManager,
443  tensorHandleFactory);
444 }
445 
447  armnn::IWorkloadFactory& workloadFactory,
449  const armnn::ITensorHandleFactory& tensorHandleFactory)
450 {
451  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float32>(workloadFactory,
452  memoryManager,
453  tensorHandleFactory);
454 }
455 
457  armnn::IWorkloadFactory& workloadFactory,
459  const armnn::ITensorHandleFactory& tensorHandleFactory)
460 {
461  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float32>(workloadFactory,
462  memoryManager,
463  tensorHandleFactory);
464 }
465 
467  armnn::IWorkloadFactory& workloadFactory,
469  const armnn::ITensorHandleFactory& tensorHandleFactory)
470 {
471  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float16>(workloadFactory,
472  memoryManager,
473  tensorHandleFactory);
474 }
475 
477  armnn::IWorkloadFactory& workloadFactory,
479  const armnn::ITensorHandleFactory& tensorHandleFactory)
480 {
481  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float16>(workloadFactory,
482  memoryManager,
483  tensorHandleFactory);
484 }
485 
487  armnn::IWorkloadFactory& workloadFactory,
489  const armnn::ITensorHandleFactory& tensorHandleFactory)
490 {
491  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float16>(workloadFactory,
492  memoryManager,
493  tensorHandleFactory);
494 }
495 
497  armnn::IWorkloadFactory& workloadFactory,
499  const armnn::ITensorHandleFactory& tensorHandleFactory)
500 {
501  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float16>(workloadFactory,
502  memoryManager,
503  tensorHandleFactory);
504 }
505 
507  armnn::IWorkloadFactory& workloadFactory,
509  const armnn::ITensorHandleFactory& tensorHandleFactory)
510 {
511  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
512  memoryManager,
513  tensorHandleFactory);
514 }
515 
517  armnn::IWorkloadFactory& workloadFactory,
519  const armnn::ITensorHandleFactory& tensorHandleFactory)
520 {
521  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
522  memoryManager,
523  tensorHandleFactory);
524 }
525 
527  armnn::IWorkloadFactory& workloadFactory,
529  const armnn::ITensorHandleFactory& tensorHandleFactory)
530 {
531  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
532  memoryManager,
533  tensorHandleFactory);
534 }
535 
537  armnn::IWorkloadFactory& workloadFactory,
539  const armnn::ITensorHandleFactory& tensorHandleFactory)
540 {
541  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
542  memoryManager,
543  tensorHandleFactory);
544 }
545 
547  armnn::IWorkloadFactory& workloadFactory,
549  const armnn::ITensorHandleFactory& tensorHandleFactory)
550 {
551  return SpaceToBatchNdSimpleTest<armnn::DataType::QSymmS16>(workloadFactory,
552  memoryManager,
553  tensorHandleFactory);
554 }
555 
557  armnn::IWorkloadFactory& workloadFactory,
559  const armnn::ITensorHandleFactory& tensorHandleFactory)
560 {
561  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QSymmS16>(workloadFactory,
562  memoryManager,
563  tensorHandleFactory);
564 }
565 
567  armnn::IWorkloadFactory& workloadFactory,
569  const armnn::ITensorHandleFactory& tensorHandleFactory)
570 {
571  return SpaceToBatchNdMultiBlockTest<armnn::DataType::QSymmS16>(workloadFactory,
572  memoryManager,
573  tensorHandleFactory);
574 }
575 
577  armnn::IWorkloadFactory& workloadFactory,
579  const armnn::ITensorHandleFactory& tensorHandleFactory)
580 {
581  return SpaceToBatchNdPaddingTest<armnn::DataType::QSymmS16>(workloadFactory,
582  memoryManager,
583  tensorHandleFactory);
584 }
585 
587  armnn::IWorkloadFactory& workloadFactory,
589  const armnn::ITensorHandleFactory& tensorHandleFactory)
590 {
591  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
592  memoryManager,
593  tensorHandleFactory);
594 }
595 
597  armnn::IWorkloadFactory& workloadFactory,
599  const armnn::ITensorHandleFactory& tensorHandleFactory)
600 {
601  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
602  memoryManager,
603  tensorHandleFactory);
604 }
605 
607  armnn::IWorkloadFactory& workloadFactory,
609  const armnn::ITensorHandleFactory& tensorHandleFactory)
610 {
611  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
612  memoryManager,
613  tensorHandleFactory);
614 }
615 
617  armnn::IWorkloadFactory& workloadFactory,
619  const armnn::ITensorHandleFactory& tensorHandleFactory)
620 {
621  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
622  memoryManager,
623  tensorHandleFactory);
624 }
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)
DataLayout
Definition: Types.hpp:62
const TensorShape & GetShape() const
Definition: Tensor.hpp:191
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}.
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)
Definition: Permute.cpp:131
LayerTestResult< uint8_t, 4 > SpaceToBatchNdMultiBlockUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< float, 4 > SpaceToBatchNdSimpleNhwcFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdPaddingFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void SetQuantizationScale(float scale)
Definition: Tensor.cpp:473
std::vector< unsigned int > m_BlockShape
Block shape value.
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)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
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 TensorInfos of a layer.
LayerTestResult< armnn::Half, 4 > SpaceToBatchNdSimpleFloat16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void SetQuantizationOffset(int32_t offset)
Definition: Tensor.cpp:489
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)
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
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)
Definition: Permute.cpp:98
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
unsigned int GetNumElements() const
Definition: Tensor.hpp:196
LayerTestResult< float, 4 > SpaceToBatchNdMultiChannelsNhwcFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)