ArmNN
 21.02
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 
8 #include <QuantizeHelper.hpp>
9 #include <ResolveType.hpp>
10 
11 
12 #include <armnnUtils/Permute.hpp>
13 
16 
17 #include <test/TensorHelpers.hpp>
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  boost::multi_array<T, 4> input = MakeTensor<T, 4>(inputTensorInfo,
62  armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset));
63 
64  LayerTestResult<T, 4> ret(outputTensorInfo);
65  ret.outputExpected = MakeTensor<T, 4>(outputTensorInfo,
66  armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset));
67 
68  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
69  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
70 
72  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
73  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
74 
75  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateSpaceToBatchNd(descriptor, info);
76 
77  inputHandle->Allocate();
78  outputHandle->Allocate();
79 
80  CopyDataToITensorHandle(inputHandle.get(), &input[0][0][0][0]);
81 
82  workload->Execute();
83 
84  CopyDataFromITensorHandle(&ret.output[0][0][0][0], outputHandle.get());
85 
86  return ret;
87 }
88 
89 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
90 LayerTestResult<T, 4> SpaceToBatchNdSimpleTest(
91  armnn::IWorkloadFactory& workloadFactory,
93  const armnn::ITensorHandleFactory& tensorHandleFactory,
95 {
96  armnn::TensorInfo inputTensorInfo;
97  armnn::TensorInfo outputTensorInfo;
98 
99  unsigned int inputShape[] = {1, 1, 2, 2};
100  unsigned int outputShape[] = {4, 1, 1, 1};
101 
103  desc.m_Parameters.m_DataLayout = dataLayout;
104  desc.m_Parameters.m_BlockShape = {2, 2};
105  desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
106 
107  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
108  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
109 
110  std::vector<float> input = std::vector<float>(
111  {
112  1.0f, 2.0f, 3.0f, 4.0f
113  });
114 
115  std::vector<float> outputExpected = std::vector<float>(
116  {
117  1.0f, 2.0f, 3.0f, 4.0f
118  });
119 
120  return SpaceToBatchNdTestImpl<T>(
121  workloadFactory, memoryManager, tensorHandleFactory,
122  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
123 }
124 
125 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
126 LayerTestResult<T, 4> SpaceToBatchNdMultiChannelsTest(
127  armnn::IWorkloadFactory& workloadFactory,
129  const armnn::ITensorHandleFactory& tensorHandleFactory,
131 {
132  armnn::TensorInfo inputTensorInfo;
133  armnn::TensorInfo outputTensorInfo;
134 
135  unsigned int inputShape[] = {1, 3, 2, 2};
136  unsigned int outputShape[] = {4, 3, 1, 1};
137 
139  desc.m_Parameters.m_DataLayout = dataLayout;
140  desc.m_Parameters.m_BlockShape = {2, 2};
141  desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
142 
143  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
144  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
145 
146  std::vector<float> input = std::vector<float>(
147  {
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
151  });
152 
153  std::vector<float> outputExpected = std::vector<float>(
154  {
155  1.0f, 2.0f, 3.0f,
156  4.0f, 5.0f, 6.0f,
157  7.0f, 8.0f, 9.0f,
158  10.0f, 11.0f, 12.0f
159  });
160 
161  return SpaceToBatchNdTestImpl<T>(
162  workloadFactory, memoryManager, tensorHandleFactory,
163  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
164 }
165 
166 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
167 LayerTestResult<T, 4> SpaceToBatchNdMultiBlockTest(
168  armnn::IWorkloadFactory& workloadFactory,
170  const armnn::ITensorHandleFactory& tensorHandleFactory,
172 {
173  armnn::TensorInfo inputTensorInfo;
174  armnn::TensorInfo outputTensorInfo;
175 
176  unsigned int inputShape[] = {1, 1, 4, 4};
177  unsigned int outputShape[] = {4, 1, 2, 2};
178 
180  desc.m_Parameters.m_DataLayout = dataLayout;
181  desc.m_Parameters.m_BlockShape = {2, 2};
182  desc.m_Parameters.m_PadList = {{0, 0}, {0, 0}};
183 
184  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
185  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
186 
187  std::vector<float> input = std::vector<float>(
188  {
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
193  });
194 
195  std::vector<float> outputExpected = std::vector<float>(
196  {
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
201  });
202 
203  return SpaceToBatchNdTestImpl<T>(
204  workloadFactory, memoryManager, tensorHandleFactory,
205  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
206 }
207 
208 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
209 LayerTestResult<T, 4> SpaceToBatchNdPaddingTest(
210  armnn::IWorkloadFactory& workloadFactory,
212  const armnn::ITensorHandleFactory& tensorHandleFactory,
214 {
215  armnn::TensorInfo inputTensorInfo;
216  armnn::TensorInfo outputTensorInfo;
217 
218  unsigned int inputShape[] = {2, 1, 2, 4};
219  unsigned int outputShape[] = {8, 1, 1, 3};
220 
222  desc.m_Parameters.m_DataLayout = dataLayout;
223  desc.m_Parameters.m_BlockShape = {2, 2};
224  desc.m_Parameters.m_PadList = {{0, 0}, {2, 0}};
225 
226  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
227  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
228 
229  std::vector<float> input = std::vector<float>(
230  {
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
235  });
236 
237  std::vector<float> outputExpected = std::vector<float>(
238  {
239  0.0f, 1.0f, 3.0f,
240  0.0f, 9.0f, 11.0f,
241  0.0f, 2.0f, 4.0f,
242  0.0f, 10.0f, 12.0f,
243  0.0f, 5.0f, 7.0f,
244  0.0f, 13.0f, 15.0f,
245  0.0f, 6.0f, 8.0f,
246  0.0f, 14.0f, 16.0f
247  });
248 
249  return SpaceToBatchNdTestImpl<T>(
250  workloadFactory, memoryManager, tensorHandleFactory,
251  inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
252 }
253 
254 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
255 LayerTestResult<T, 4> SpaceToBatchNdSimpleNhwcTest(
256  armnn::IWorkloadFactory& workloadFactory,
258  const armnn::ITensorHandleFactory& tensorHandleFactory)
259 {
260  return SpaceToBatchNdSimpleTest<ArmnnType>(workloadFactory,
261  memoryManager,
262  tensorHandleFactory,
264 }
265 
266 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
267 LayerTestResult<T, 4> SpaceToBatchNdMultiChannelsNhwcTest(
268  armnn::IWorkloadFactory& workloadFactory,
270  const armnn::ITensorHandleFactory& tensorHandleFactory)
271 {
272  return SpaceToBatchNdMultiChannelsTest<ArmnnType>(workloadFactory,
273  memoryManager,
274  tensorHandleFactory,
276 }
277 
278 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
279 LayerTestResult<T, 4> SpaceToBatchNdMultiBlockNhwcTest(
280  armnn::IWorkloadFactory& workloadFactory,
282  const armnn::ITensorHandleFactory& tensorHandleFactory)
283 {
284  return SpaceToBatchNdMultiBlockTest<ArmnnType>(workloadFactory,
285  memoryManager,
286  tensorHandleFactory,
288 }
289 
290 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
291 LayerTestResult<T, 4> SpaceToBatchNdPaddingNhwcTest(
292  armnn::IWorkloadFactory& workloadFactory,
294  const armnn::ITensorHandleFactory& tensorHandleFactory)
295 {
296  return SpaceToBatchNdPaddingTest<ArmnnType>(workloadFactory,
297  memoryManager,
298  tensorHandleFactory,
300 }
301 
302 } // anonymous namespace
303 
305  armnn::IWorkloadFactory& workloadFactory,
307  const armnn::ITensorHandleFactory& tensorHandleFactory)
308 {
309  return SpaceToBatchNdSimpleTest<armnn::DataType::Float32>(workloadFactory,
310  memoryManager,
311  tensorHandleFactory);
312 }
313 
315  armnn::IWorkloadFactory& workloadFactory,
317  const armnn::ITensorHandleFactory& tensorHandleFactory)
318 {
319  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float32>(workloadFactory,
320  memoryManager,
321  tensorHandleFactory);
322 }
323 
325  armnn::IWorkloadFactory& workloadFactory,
327  const armnn::ITensorHandleFactory& tensorHandleFactory)
328 {
329  return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float32>(workloadFactory,
330  memoryManager,
331  tensorHandleFactory);
332 }
333 
335  armnn::IWorkloadFactory& workloadFactory,
337  const armnn::ITensorHandleFactory& tensorHandleFactory)
338 {
339  return SpaceToBatchNdPaddingTest<armnn::DataType::Float32>(workloadFactory,
340  memoryManager,
341  tensorHandleFactory);
342 }
343 
345  armnn::IWorkloadFactory& workloadFactory,
347  const armnn::ITensorHandleFactory& tensorHandleFactory)
348 {
349  return SpaceToBatchNdSimpleTest<armnn::DataType::Float16>(workloadFactory,
350  memoryManager,
351  tensorHandleFactory);
352 }
353 
355  armnn::IWorkloadFactory& workloadFactory,
357  const armnn::ITensorHandleFactory& tensorHandleFactory)
358 {
359  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::Float16>(workloadFactory,
360  memoryManager,
361  tensorHandleFactory);
362 }
363 
365  armnn::IWorkloadFactory& workloadFactory,
367  const armnn::ITensorHandleFactory& tensorHandleFactory)
368 {
369  return SpaceToBatchNdMultiBlockTest<armnn::DataType::Float16>(workloadFactory,
370  memoryManager,
371  tensorHandleFactory);
372 }
373 
375  armnn::IWorkloadFactory& workloadFactory,
377  const armnn::ITensorHandleFactory& tensorHandleFactory)
378 {
379  return SpaceToBatchNdPaddingTest<armnn::DataType::Float16>(workloadFactory,
380  memoryManager,
381  tensorHandleFactory);
382 }
383 
385  armnn::IWorkloadFactory& workloadFactory,
387  const armnn::ITensorHandleFactory& tensorHandleFactory)
388 {
389  return SpaceToBatchNdSimpleTest<armnn::DataType::QAsymmU8>(workloadFactory,
390  memoryManager,
391  tensorHandleFactory);
392 }
393 
395  armnn::IWorkloadFactory& workloadFactory,
397  const armnn::ITensorHandleFactory& tensorHandleFactory)
398 {
399  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QAsymmU8>(workloadFactory,
400  memoryManager,
401  tensorHandleFactory);
402 }
403 
405  armnn::IWorkloadFactory& workloadFactory,
407  const armnn::ITensorHandleFactory& tensorHandleFactory)
408 {
409  return SpaceToBatchNdMultiBlockTest<armnn::DataType::QAsymmU8>(workloadFactory,
410  memoryManager,
411  tensorHandleFactory);
412 }
413 
415  armnn::IWorkloadFactory& workloadFactory,
417  const armnn::ITensorHandleFactory& tensorHandleFactory)
418 {
419  return SpaceToBatchNdPaddingTest<armnn::DataType::QAsymmU8>(workloadFactory,
420  memoryManager,
421  tensorHandleFactory);
422 }
423 
425  armnn::IWorkloadFactory& workloadFactory,
427  const armnn::ITensorHandleFactory& tensorHandleFactory)
428 {
429  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float32>(workloadFactory,
430  memoryManager,
431  tensorHandleFactory);
432 }
433 
435  armnn::IWorkloadFactory& workloadFactory,
437  const armnn::ITensorHandleFactory& tensorHandleFactory)
438 {
439  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float32>(workloadFactory,
440  memoryManager,
441  tensorHandleFactory);
442 }
443 
445  armnn::IWorkloadFactory& workloadFactory,
447  const armnn::ITensorHandleFactory& tensorHandleFactory)
448 {
449  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float32>(workloadFactory,
450  memoryManager,
451  tensorHandleFactory);
452 }
453 
455  armnn::IWorkloadFactory& workloadFactory,
457  const armnn::ITensorHandleFactory& tensorHandleFactory)
458 {
459  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float32>(workloadFactory,
460  memoryManager,
461  tensorHandleFactory);
462 }
463 
465  armnn::IWorkloadFactory& workloadFactory,
467  const armnn::ITensorHandleFactory& tensorHandleFactory)
468 {
469  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::Float16>(workloadFactory,
470  memoryManager,
471  tensorHandleFactory);
472 }
473 
475  armnn::IWorkloadFactory& workloadFactory,
477  const armnn::ITensorHandleFactory& tensorHandleFactory)
478 {
479  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::Float16>(workloadFactory,
480  memoryManager,
481  tensorHandleFactory);
482 }
483 
485  armnn::IWorkloadFactory& workloadFactory,
487  const armnn::ITensorHandleFactory& tensorHandleFactory)
488 {
489  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::Float16>(workloadFactory,
490  memoryManager,
491  tensorHandleFactory);
492 }
493 
495  armnn::IWorkloadFactory& workloadFactory,
497  const armnn::ITensorHandleFactory& tensorHandleFactory)
498 {
499  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::Float16>(workloadFactory,
500  memoryManager,
501  tensorHandleFactory);
502 }
503 
505  armnn::IWorkloadFactory& workloadFactory,
507  const armnn::ITensorHandleFactory& tensorHandleFactory)
508 {
509  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
510  memoryManager,
511  tensorHandleFactory);
512 }
513 
515  armnn::IWorkloadFactory& workloadFactory,
517  const armnn::ITensorHandleFactory& tensorHandleFactory)
518 {
519  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
520  memoryManager,
521  tensorHandleFactory);
522 }
523 
525  armnn::IWorkloadFactory& workloadFactory,
527  const armnn::ITensorHandleFactory& tensorHandleFactory)
528 {
529  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
530  memoryManager,
531  tensorHandleFactory);
532 }
533 
535  armnn::IWorkloadFactory& workloadFactory,
537  const armnn::ITensorHandleFactory& tensorHandleFactory)
538 {
539  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QAsymmU8>(workloadFactory,
540  memoryManager,
541  tensorHandleFactory);
542 }
543 
545  armnn::IWorkloadFactory& workloadFactory,
547  const armnn::ITensorHandleFactory& tensorHandleFactory)
548 {
549  return SpaceToBatchNdSimpleTest<armnn::DataType::QSymmS16>(workloadFactory,
550  memoryManager,
551  tensorHandleFactory);
552 }
553 
555  armnn::IWorkloadFactory& workloadFactory,
557  const armnn::ITensorHandleFactory& tensorHandleFactory)
558 {
559  return SpaceToBatchNdMultiChannelsTest<armnn::DataType::QSymmS16>(workloadFactory,
560  memoryManager,
561  tensorHandleFactory);
562 }
563 
565  armnn::IWorkloadFactory& workloadFactory,
567  const armnn::ITensorHandleFactory& tensorHandleFactory)
568 {
569  return SpaceToBatchNdMultiBlockTest<armnn::DataType::QSymmS16>(workloadFactory,
570  memoryManager,
571  tensorHandleFactory);
572 }
573 
575  armnn::IWorkloadFactory& workloadFactory,
577  const armnn::ITensorHandleFactory& tensorHandleFactory)
578 {
579  return SpaceToBatchNdPaddingTest<armnn::DataType::QSymmS16>(workloadFactory,
580  memoryManager,
581  tensorHandleFactory);
582 }
583 
585  armnn::IWorkloadFactory& workloadFactory,
587  const armnn::ITensorHandleFactory& tensorHandleFactory)
588 {
589  return SpaceToBatchNdSimpleNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
590  memoryManager,
591  tensorHandleFactory);
592 }
593 
595  armnn::IWorkloadFactory& workloadFactory,
597  const armnn::ITensorHandleFactory& tensorHandleFactory)
598 {
599  return SpaceToBatchNdMultiChannelsNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
600  memoryManager,
601  tensorHandleFactory);
602 }
603 
605  armnn::IWorkloadFactory& workloadFactory,
607  const armnn::ITensorHandleFactory& tensorHandleFactory)
608 {
609  return SpaceToBatchNdMultiBlockNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
610  memoryManager,
611  tensorHandleFactory);
612 }
613 
615  armnn::IWorkloadFactory& workloadFactory,
617  const armnn::ITensorHandleFactory& tensorHandleFactory)
618 {
619  return SpaceToBatchNdPaddingNhwcTest<armnn::DataType::QSymmS16>(workloadFactory,
620  memoryManager,
621  tensorHandleFactory);
622 }
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:50
const TensorShape & GetShape() const
Definition: Tensor.hpp:187
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)
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)
Definition: Tensor.cpp:464
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)
Definition: Tensor.cpp:480
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)
Definition: Permute.cpp:98
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)