ArmNN
 20.08
StridedSliceTestImpl.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 
14 
15 #include <test/TensorHelpers.hpp>
16 
17 namespace
18 {
19 
20 template<typename T, std::size_t InDim, std::size_t OutDim>
21 LayerTestResult<T, OutDim> StridedSliceTestImpl(
22  armnn::IWorkloadFactory& workloadFactory,
24  armnn::TensorInfo& inputTensorInfo,
25  armnn::TensorInfo& outputTensorInfo,
26  std::vector<float>& inputData,
27  std::vector<float>& outputExpectedData,
29  const float qScale = 1.0f,
30  const int32_t qOffset = 0)
31 {
32  IgnoreUnused(memoryManager);
33  if(armnn::IsQuantizedType<T>())
34  {
35  inputTensorInfo.SetQuantizationScale(qScale);
36  inputTensorInfo.SetQuantizationOffset(qOffset);
37 
38  outputTensorInfo.SetQuantizationScale(qScale);
39  outputTensorInfo.SetQuantizationOffset(qOffset);
40  }
41 
42  boost::multi_array<T, InDim> input =
43  MakeTensor<T, InDim>(inputTensorInfo, armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset));
44 
45  LayerTestResult<T, OutDim> ret(outputTensorInfo);
46  ret.outputExpected =
47  MakeTensor<T, OutDim>(outputTensorInfo, armnnUtils::QuantizedVector<T>(outputExpectedData, qScale, qOffset));
49  std::unique_ptr<armnn::ITensorHandle> inputHandle =
50  workloadFactory.CreateTensorHandle(inputTensorInfo);
51 
52  std::unique_ptr<armnn::ITensorHandle> outputHandle =
53  workloadFactory.CreateTensorHandle(outputTensorInfo);
55 
57  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
58  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
59 
60  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateStridedSlice(descriptor, info);
61 
62  inputHandle->Allocate();
63  outputHandle->Allocate();
64 
65  CopyDataToITensorHandle(inputHandle.get(), input.data());
66 
67  ExecuteWorkload(*workload, memoryManager);
68 
69  CopyDataFromITensorHandle(ret.output.data(), outputHandle.get());
70 
71  return ret;
72 }
73 
74 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
75 LayerTestResult<T, 4> StridedSlice4dTest(
76  armnn::IWorkloadFactory& workloadFactory,
78 {
79  armnn::TensorInfo inputTensorInfo;
80  armnn::TensorInfo outputTensorInfo;
81 
82  unsigned int inputShape[] = {3, 2, 3, 1};
83  unsigned int outputShape[] = {1, 2, 3, 1};
84 
86  desc.m_Parameters.m_Begin = {1, 0, 0, 0};
87  desc.m_Parameters.m_End = {2, 2, 3, 1};
88  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
89 
90  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
91  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
92 
93  std::vector<float> input = std::vector<float>(
94  {
95  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
96 
97  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
98 
99  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
100  });
101 
102  std::vector<float> outputExpected = std::vector<float>(
103  {
104  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f
105  });
106 
107  return StridedSliceTestImpl<T, 4, 4>(
108  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
109 }
110 
111 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
112 LayerTestResult<T, 4> StridedSlice4dReverseTest(
113  armnn::IWorkloadFactory& workloadFactory,
115 {
116  armnn::TensorInfo inputTensorInfo;
117  armnn::TensorInfo outputTensorInfo;
118 
119  unsigned int inputShape[] = {3, 2, 3, 1};
120  unsigned int outputShape[] = {1, 2, 3, 1};
121 
123  desc.m_Parameters.m_Begin = {1, -1, 0, 0};
124  desc.m_Parameters.m_End = {2, -3, 3, 1};
125  desc.m_Parameters.m_Stride = {1, -1, 1, 1};
126 
127  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
128  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
129 
130  std::vector<float> input = std::vector<float>(
131  {
132  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
133 
134  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
135 
136  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
137  });
138 
139  std::vector<float> outputExpected = std::vector<float>(
140  {
141  4.0f, 4.0f, 4.0f, 3.0f, 3.0f, 3.0f
142  });
143 
144  return StridedSliceTestImpl<T, 4, 4>(
145  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
146 }
147 
148 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
149 LayerTestResult<T, 4> StridedSliceSimpleStrideTest(
150  armnn::IWorkloadFactory& workloadFactory,
152 {
153  armnn::TensorInfo inputTensorInfo;
154  armnn::TensorInfo outputTensorInfo;
155 
156  unsigned int inputShape[] = {3, 2, 3, 1};
157  unsigned int outputShape[] = {2, 1, 2, 1};
158 
160  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
161  desc.m_Parameters.m_End = {3, 2, 3, 1};
162  desc.m_Parameters.m_Stride = {2, 2, 2, 1};
163 
164  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
165  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
166 
167  std::vector<float> input = std::vector<float>(
168  {
169  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
170 
171  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
172 
173  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
174  });
175 
176  std::vector<float> outputExpected = std::vector<float>(
177  {
178  1.0f, 1.0f,
179 
180  5.0f, 5.0f
181  });
182 
183  return StridedSliceTestImpl<T, 4, 4>(
184  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
185 }
186 
187 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
188 LayerTestResult<T, 4> StridedSliceSimpleRangeMaskTest(
189  armnn::IWorkloadFactory& workloadFactory,
191 {
192  armnn::TensorInfo inputTensorInfo;
193  armnn::TensorInfo outputTensorInfo;
194 
195  unsigned int inputShape[] = {3, 2, 3, 1};
196  unsigned int outputShape[] = {3, 2, 3, 1};
197 
199  desc.m_Parameters.m_Begin = {1, 1, 1, 1};
200  desc.m_Parameters.m_End = {1, 1, 1, 1};
201  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
202  desc.m_Parameters.m_BeginMask = (1 << 4) - 1;
203  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
204 
205  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
206  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
207 
208  std::vector<float> input = std::vector<float>(
209  {
210  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
211 
212  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
213 
214  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
215  });
216 
217  std::vector<float> outputExpected = std::vector<float>(
218  {
219  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
220 
221  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
222 
223  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
224  });
225 
226  return StridedSliceTestImpl<T, 4, 4>(
227  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
228 }
229 
230 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
231 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskTest(
232  armnn::IWorkloadFactory& workloadFactory,
234 {
235  armnn::TensorInfo inputTensorInfo;
236  armnn::TensorInfo outputTensorInfo;
237 
238  unsigned int inputShape[] = {3, 2, 3, 1};
239  unsigned int outputShape[] = {3, 1};
240 
242  desc.m_Parameters.m_Begin = {0, 0, 1, 0};
243  desc.m_Parameters.m_End = {1, 1, 1, 1};
244  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
245  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
246  desc.m_Parameters.m_ShrinkAxisMask = (1 << 1) | (1 << 2);
247 
248  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
249  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
250 
251  std::vector<float> input = std::vector<float>(
252  {
253  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
254 
255  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
256 
257  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
258  });
259 
260  std::vector<float> outputExpected = std::vector<float>(
261  {
262  2.0f, 8.0f, 14.0f
263  });
264 
265  return StridedSliceTestImpl<T, 4, 2>(
266  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
267 }
268 
269 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
270 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition0Test(
271  armnn::IWorkloadFactory& workloadFactory,
273 {
274  armnn::TensorInfo inputTensorInfo;
275  armnn::TensorInfo outputTensorInfo;
276 
277  unsigned int inputShape[] = {3, 2, 3, 1};
278  unsigned int outputShape[] = {2, 3, 1};
279 
281  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
282  desc.m_Parameters.m_End = {1, 1, 1, 1};
283  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
284  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
285  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
286 
287  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
288  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
289 
290  std::vector<float> input = std::vector<float>(
291  {
292  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
293 
294  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
295 
296  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
297  });
298 
299  std::vector<float> outputExpected = std::vector<float>(
300  {
301  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
302  });
303 
304  return StridedSliceTestImpl<T, 4, 3>(
305  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
306 }
307 
308 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
309 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition1Test(
310  armnn::IWorkloadFactory& workloadFactory,
312 {
313  armnn::TensorInfo inputTensorInfo;
314  armnn::TensorInfo outputTensorInfo;
315 
316  unsigned int inputShape[] = {3, 2, 3, 1};
317  unsigned int outputShape[] = {3, 3, 1};
318 
320  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
321  desc.m_Parameters.m_End = {1, 1, 1, 1};
322  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
323  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
324  desc.m_Parameters.m_ShrinkAxisMask = (1 << 1);
325 
326  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
327  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
328 
329  std::vector<float> input = std::vector<float>(
330  {
331  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
332 
333  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
334 
335  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
336  });
337 
338  std::vector<float> outputExpected = std::vector<float>(
339  {
340  1.0f, 2.0f, 3.0f, 7.0f, 8.0f, 9.0f, 13.0f, 14.0f, 15.0f
341  });
342 
343  return StridedSliceTestImpl<T, 4, 3>(
344  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
345 }
346 
347 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
348 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition2Test(
349  armnn::IWorkloadFactory& workloadFactory,
351 {
352  armnn::TensorInfo inputTensorInfo;
353  armnn::TensorInfo outputTensorInfo;
354 
355  unsigned int inputShape[] = {3, 2, 3, 1};
356  unsigned int outputShape[] = {3, 2, 1};
357 
359  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
360  desc.m_Parameters.m_End = {1, 1, 1, 1};
361  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
362  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
363  desc.m_Parameters.m_ShrinkAxisMask = (1 << 2);
364 
365  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
366  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
367 
368  std::vector<float> input = std::vector<float>(
369  {
370  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
371 
372  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
373 
374  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
375  });
376 
377  std::vector<float> outputExpected = std::vector<float>(
378  {
379  1.0f, 4.0f, 7.0f, 10.0f, 13.0f, 16.0f
380  });
381 
382  return StridedSliceTestImpl<T, 4, 3>(
383  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
384 }
385 
386 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
387 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition3Test(
388  armnn::IWorkloadFactory& workloadFactory,
390 {
391  armnn::TensorInfo inputTensorInfo;
392  armnn::TensorInfo outputTensorInfo;
393 
394  unsigned int inputShape[] = {3, 2, 3, 1};
395  unsigned int outputShape[] = {3, 2, 3};
396 
398  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
399  desc.m_Parameters.m_End = {1, 1, 1, 1};
400  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
401  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
402  desc.m_Parameters.m_ShrinkAxisMask = (1 << 3);
403 
404  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
405  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
406 
407  std::vector<float> input = std::vector<float>(
408  {
409  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
410 
411  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
412 
413  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
414  });
415 
416  std::vector<float> outputExpected = std::vector<float>(
417  {
418  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
419 
420  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
421 
422  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
423  });
424 
425  return StridedSliceTestImpl<T, 4, 3>(
426  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
427 }
428 
429 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
430 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And1Test(
431  armnn::IWorkloadFactory& workloadFactory,
433 {
434  armnn::TensorInfo inputTensorInfo;
435  armnn::TensorInfo outputTensorInfo;
436 
437  unsigned int inputShape[] = {3, 2, 3, 1};
438  unsigned int outputShape[] = {3, 1};
439 
441  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
442  desc.m_Parameters.m_End = {1, 1, 1, 1};
443  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
444  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
445  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1);
446 
447  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
448  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
449 
450  std::vector<float> input = std::vector<float>(
451  {
452  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
453 
454  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
455 
456  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
457  });
458 
459  std::vector<float> outputExpected = std::vector<float>(
460  {
461  1.0f, 2.0f, 3.0f
462  });
463 
464  return StridedSliceTestImpl<T, 4, 2>(
465  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
466 }
467 
468 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
469 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Test(
470  armnn::IWorkloadFactory& workloadFactory,
472 {
473  armnn::TensorInfo inputTensorInfo;
474  armnn::TensorInfo outputTensorInfo;
475 
476  unsigned int inputShape[] = {2, 3, 1};
477  unsigned int outputShape[] = {3, 1};
478 
480  desc.m_Parameters.m_Begin = {0, 0, 0};
481  desc.m_Parameters.m_End = {0, 0, 0};
482  desc.m_Parameters.m_Stride = {1, 1, 1};
483  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
484  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
485 
486  inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
487  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
488 
489  std::vector<float> input = std::vector<float>(
490  {
491  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
492  });
493 
494  std::vector<float> outputExpected = std::vector<float>(
495  {
496  1.0f, 2.0f, 3.0f
497  });
498 
499  return StridedSliceTestImpl<T, 3, 2>(
500  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
501 }
502 
503 void FillVector(std::vector<float>& inputArray, float start, float step)
504 {
505  for (uint32_t i = 0; i < inputArray.size(); ++i)
506  {
507  inputArray[i] = start;
508  start += step;
509  }
510 }
511 
512 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
513 LayerTestResult<T, 4> StridedSliceShrinkAxisMaskCTSTest(
514  armnn::IWorkloadFactory& workloadFactory,
516 {
517  armnn::TensorInfo inputTensorInfo;
518  armnn::TensorInfo outputTensorInfo;
519 
520  unsigned int inputShape[] = {1, 1, 8, 942};
521  unsigned int outputShape[] = {1, 1, 1, 279};
522 
524  desc.m_Parameters.m_Begin = {0, 0, 1, 229};
525  desc.m_Parameters.m_End = {1, 1, 2, 787};
526  desc.m_Parameters.m_Stride = {2, 3, 3, 2};
527  desc.m_Parameters.m_BeginMask = 2;
528  desc.m_Parameters.m_EndMask = 0;
530 
531  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
532  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
533 
534  // Array from 1 to 7535
535  std::vector<float> input(7536);
536  FillVector(input, 1.0f, 1.0f);
537 
538  // Array from 1171 to 1727 in steps of 2
539  std::vector<float> outputExpected(279);
540  FillVector(outputExpected, 1171.0, 2.0f);
541 
542  return StridedSliceTestImpl<T, 4, 4>(
543  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
544 }
545 
546 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
547 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And2Test(
548  armnn::IWorkloadFactory& workloadFactory,
550 {
551  armnn::TensorInfo inputTensorInfo;
552  armnn::TensorInfo outputTensorInfo;
553 
554  unsigned int inputShape[] = {3, 2, 3, 1};
555  unsigned int outputShape[] = {2, 1};
556 
558  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
559  desc.m_Parameters.m_End = {1, 1, 1, 1};
560  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
561  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
562  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 2);
563 
564  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
565  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
566 
567  std::vector<float> input = std::vector<float>(
568  {
569  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
570 
571  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
572 
573  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
574  });
575 
576  std::vector<float> outputExpected = std::vector<float>(
577  {
578  1.0f, 4.0f
579  });
580 
581  return StridedSliceTestImpl<T, 4, 2>(
582  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
583 }
584 
585 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
586 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And3Test(
587  armnn::IWorkloadFactory& workloadFactory,
589 {
590  armnn::TensorInfo inputTensorInfo;
591  armnn::TensorInfo outputTensorInfo;
592 
593  unsigned int inputShape[] = {3, 2, 3, 1};
594  unsigned int outputShape[] = {2, 3};
595 
597  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
598  desc.m_Parameters.m_End = {1, 1, 1, 1};
599  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
600  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
601  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 3);
602 
603  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
604  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
605 
606  std::vector<float> input = std::vector<float>(
607  {
608  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
609 
610  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
611 
612  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
613  });
614 
615  std::vector<float> outputExpected = std::vector<float>(
616  {
617  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
618  });
619 
620  return StridedSliceTestImpl<T, 4, 2>(
621  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
622 }
623 
624 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
625 LayerTestResult<T, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Test(
626  armnn::IWorkloadFactory& workloadFactory,
628 {
629  armnn::TensorInfo inputTensorInfo;
630  armnn::TensorInfo outputTensorInfo;
631 
632  unsigned int inputShape[] = {3, 2, 3, 1};
633  unsigned int outputShape[] = {3};
634 
636  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
637  desc.m_Parameters.m_End = {1, 1, 1, 1};
638  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
639  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
640  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1) | (1 << 3);
641 
642  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
643  outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType);
644 
645  std::vector<float> input = std::vector<float>(
646  {
647  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
648 
649  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
650 
651  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
652  });
653 
654  std::vector<float> outputExpected = std::vector<float>(
655  {
656  1.0f, 2.0f, 3.0f
657  });
658 
659  return StridedSliceTestImpl<T, 4, 1>(
660  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
661 }
662 
663 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
664 LayerTestResult<T, 3> StridedSlice3dTest(
665  armnn::IWorkloadFactory& workloadFactory,
667 {
668  armnn::TensorInfo inputTensorInfo;
669  armnn::TensorInfo outputTensorInfo;
670 
671  unsigned int inputShape[] = {3, 3, 3};
672  unsigned int outputShape[] = {2, 2, 2};
673 
675  desc.m_Parameters.m_Begin = {0, 0, 0};
676  desc.m_Parameters.m_End = {1, 1, 1};
677  desc.m_Parameters.m_Stride = {2, 2, 2};
678  desc.m_Parameters.m_EndMask = (1 << 3) - 1;
679 
680  inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
681  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
682 
683  std::vector<float> input = std::vector<float>(
684  {
685  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
686 
687  10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
688 
689  19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
690  });
691 
692  std::vector<float> outputExpected = std::vector<float>(
693  {
694  1.0f, 3.0f, 7.0f, 9.0f,
695 
696  19.0f, 21.0f, 25.0f, 27.0f
697  });
698 
699  return StridedSliceTestImpl<T, 3, 3>(
700  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
701 }
702 
703 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
704 LayerTestResult<T, 3> StridedSlice3dReverseTest(
705  armnn::IWorkloadFactory& workloadFactory,
707 {
708  armnn::TensorInfo inputTensorInfo;
709  armnn::TensorInfo outputTensorInfo;
710 
711  unsigned int inputShape[] = {3, 3, 3};
712  unsigned int outputShape[] = {2, 2, 2};
713 
715  desc.m_Parameters.m_Begin = {-1, -1, -1};
716  desc.m_Parameters.m_End = {-4, -4, -4};
717  desc.m_Parameters.m_Stride = {-2, -2, -2};
718 
719  inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
720  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
721 
722  std::vector<float> input = std::vector<float>(
723  {
724  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
725 
726  10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
727 
728  19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
729  });
730 
731  std::vector<float> outputExpected = std::vector<float>(
732  {
733  27.0f, 25.0f, 21.0f, 19.0f,
734 
735  9.0f, 7.0f, 3.0f, 1.0f
736  });
737 
738  return StridedSliceTestImpl<T, 3, 3>(
739  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
740 }
741 
742 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
743 LayerTestResult<T, 2> StridedSlice2dTest(
744  armnn::IWorkloadFactory& workloadFactory,
746 {
747  armnn::TensorInfo inputTensorInfo;
748  armnn::TensorInfo outputTensorInfo;
749 
750  unsigned int inputShape[] = {3, 3};
751  unsigned int outputShape[] = {2, 2};
752 
754  desc.m_Parameters.m_Begin = {0, 0};
755  desc.m_Parameters.m_End = {1, 1};
756  desc.m_Parameters.m_Stride = {2, 2};
757  desc.m_Parameters.m_EndMask = (1 << 2) - 1;
758 
759  inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
760  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
761 
762  std::vector<float> input = std::vector<float>(
763  {
764  1.0f, 2.0f, 3.0f,
765 
766  4.0f, 5.0f, 6.0f,
767 
768  7.0f, 8.0f, 9.0f
769  });
770 
771  std::vector<float> outputExpected = std::vector<float>(
772  {
773  1.0f, 3.0f,
774 
775  7.0f, 9.0f
776  });
777 
778  return StridedSliceTestImpl<T, 2, 2>(
779  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
780 }
781 
782 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
783 LayerTestResult<T, 2> StridedSlice2dReverseTest(
784  armnn::IWorkloadFactory& workloadFactory,
786 {
787  armnn::TensorInfo inputTensorInfo;
788  armnn::TensorInfo outputTensorInfo;
789 
790  unsigned int inputShape[] = {3, 3};
791  unsigned int outputShape[] = {2, 2};
792 
794  desc.m_Parameters.m_Begin = {0, 0};
795  desc.m_Parameters.m_End = {1, 1};
796  desc.m_Parameters.m_Stride = {-2, -2};
797  desc.m_Parameters.m_BeginMask = (1 << 2) - 1;
798  desc.m_Parameters.m_EndMask = (1 << 2) - 1;
799 
800  inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
801  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
802 
803  std::vector<float> input = std::vector<float>(
804  {
805  1.0f, 2.0f, 3.0f,
806 
807  4.0f, 5.0f, 6.0f,
808 
809  7.0f, 8.0f, 9.0f
810  });
811 
812  std::vector<float> outputExpected = std::vector<float>(
813  {
814  9.0f, 7.0f,
815 
816  3.0f, 1.0f
817  });
818 
819  return StridedSliceTestImpl<T, 2, 2>(
820  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
821 }
822 
823 } // anonymous namespace
824 
826  armnn::IWorkloadFactory& workloadFactory,
828 {
829  return StridedSlice4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
830 }
831 
833  armnn::IWorkloadFactory& workloadFactory,
835 {
836  return StridedSlice4dReverseTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
837 }
838 
840  armnn::IWorkloadFactory& workloadFactory,
842 {
843  return StridedSliceSimpleStrideTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
844 }
845 
847  armnn::IWorkloadFactory& workloadFactory,
849 {
850  return StridedSliceSimpleRangeMaskTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
851 }
852 
854  armnn::IWorkloadFactory& workloadFactory,
856 {
857  return StridedSliceShrinkAxisMaskTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
858 }
859 
861  armnn::IWorkloadFactory& workloadFactory,
863 {
864  return StridedSliceShrinkAxisMaskCTSTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
865 }
866 
868  armnn::IWorkloadFactory& workloadFactory,
870 {
871  return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
872 }
873 
875  armnn::IWorkloadFactory& workloadFactory,
877 {
878  return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
879 }
880 
882  armnn::IWorkloadFactory& workloadFactory,
884 {
885  return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
886 }
887 
889  armnn::IWorkloadFactory& workloadFactory,
891 {
892  return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
893 }
894 
896  armnn::IWorkloadFactory& workloadFactory,
898 {
899  return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
900 }
901 
903  armnn::IWorkloadFactory& workloadFactory,
905 {
906  return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
907 }
908 
910  armnn::IWorkloadFactory& workloadFactory,
912 {
913  return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
914 }
915 
917  armnn::IWorkloadFactory& workloadFactory,
919 {
920  return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
921 }
922 
924  armnn::IWorkloadFactory& workloadFactory,
926 {
927  return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
928 }
929 
931  armnn::IWorkloadFactory& workloadFactory,
933 {
934  return StridedSlice3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
935 }
936 
938  armnn::IWorkloadFactory& workloadFactory,
940 {
941  return StridedSlice3dReverseTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
942 }
943 
945  armnn::IWorkloadFactory& workloadFactory,
947 {
948  return StridedSlice2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
949 }
950 
952  armnn::IWorkloadFactory& workloadFactory,
954 {
955  return StridedSlice2dReverseTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
956 }
957 
959  armnn::IWorkloadFactory& workloadFactory,
961 {
962  return StridedSlice4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
963 }
964 
966  armnn::IWorkloadFactory& workloadFactory,
968 {
969  return StridedSlice4dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
970 }
971 
973  armnn::IWorkloadFactory& workloadFactory,
975 {
976  return StridedSliceSimpleStrideTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
977 }
978 
980  armnn::IWorkloadFactory& workloadFactory,
982 {
983  return StridedSliceSimpleRangeMaskTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
984 }
985 
987  armnn::IWorkloadFactory& workloadFactory,
989 {
990  return StridedSliceShrinkAxisMaskTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
991 }
992 
994  armnn::IWorkloadFactory& workloadFactory,
996 {
997  return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::QAsymmU8>(workloadFactory,
998  memoryManager);
999 }
1000 
1002  armnn::IWorkloadFactory& workloadFactory,
1004 {
1005  return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::QAsymmU8>(workloadFactory,
1006  memoryManager);
1007 }
1008 
1010  armnn::IWorkloadFactory& workloadFactory,
1012 {
1013  return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::QAsymmU8>(workloadFactory,
1014  memoryManager);
1015 }
1016 
1018  armnn::IWorkloadFactory& workloadFactory,
1020 {
1021  return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::QAsymmU8>(workloadFactory,
1022  memoryManager);
1023 }
1024 
1026  armnn::IWorkloadFactory& workloadFactory,
1028 {
1029  return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::QAsymmU8>(workloadFactory,
1030  memoryManager);
1031 }
1032 
1034  armnn::IWorkloadFactory& workloadFactory,
1036 {
1037  return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::QAsymmU8>(workloadFactory,
1038  memoryManager);
1039 }
1040 
1042  armnn::IWorkloadFactory& workloadFactory,
1044 {
1045  return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::QAsymmU8>(workloadFactory,
1046  memoryManager);
1047 }
1048 
1050  armnn::IWorkloadFactory& workloadFactory,
1052 {
1053  return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
1054  memoryManager);
1055 }
1056 
1058  armnn::IWorkloadFactory& workloadFactory,
1060 {
1061  return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
1062  memoryManager);
1063 }
1064 
1066  armnn::IWorkloadFactory& workloadFactory,
1068 {
1069  return StridedSlice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1070 }
1071 
1073  armnn::IWorkloadFactory& workloadFactory,
1075 {
1076  return StridedSlice3dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1077 }
1078 
1080  armnn::IWorkloadFactory& workloadFactory,
1082 {
1083  return StridedSlice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1084 }
1085 
1087  armnn::IWorkloadFactory& workloadFactory,
1089 {
1090  return StridedSlice2dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1091 }
1092 
1094  armnn::IWorkloadFactory& workloadFactory,
1096 {
1097  return StridedSlice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1098 }
1099 
1101  armnn::IWorkloadFactory& workloadFactory,
1103 {
1104  return StridedSlice4dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1105 }
1106 
1108  armnn::IWorkloadFactory& workloadFactory,
1110 {
1111  return StridedSliceSimpleStrideTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1112 }
1113 
1115  armnn::IWorkloadFactory& workloadFactory,
1117 {
1118  return StridedSliceSimpleRangeMaskTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1119 }
1120 
1122  armnn::IWorkloadFactory& workloadFactory,
1124 {
1125  return StridedSliceShrinkAxisMaskTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1126 }
1127 
1129  armnn::IWorkloadFactory& workloadFactory,
1131 {
1132  return StridedSlice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1133 }
1134 
1136  armnn::IWorkloadFactory& workloadFactory,
1138 {
1139  return StridedSlice3dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1140 }
1141 
1143  armnn::IWorkloadFactory& workloadFactory,
1145 {
1146  return StridedSlice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1147 }
1148 
1150  armnn::IWorkloadFactory& workloadFactory,
1152 {
1153  return StridedSlice2dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1154 }
LayerTestResult< float, 4 > StridedSliceSimpleStrideFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > StridedSliceShrinkAxisMaskBitPosition2Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
int32_t m_ShrinkAxisMask
Shrink axis mask value. If set, the nth specification shrinks the dimensionality by 1...
LayerTestResult< uint8_t, 2 > StridedSlice2dReverseUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::vector< int > m_Begin
Begin values for the input that will be sliced.
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Definition: Deprecated.hpp:33
LayerTestResult< uint8_t, 3 > StridedSliceShrinkAxisMaskBitPosition0Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 4 > StridedSlice4dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 2 > StridedSliceShrinkAxisMaskBitPosition0Dim3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 4 > StridedSliceSimpleStrideInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< IWorkload > CreateStridedSlice(const StridedSliceQueueDescriptor &descriptor, const WorkloadInfo &Info) const
LayerTestResult< uint8_t, 4 > StridedSliceSimpleStrideUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 1 > StridedSliceShrinkAxisMaskBitPosition0And1And3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > StridedSlice3dReverseUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > StridedSlice3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 3 > StridedSlice3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 2 > StridedSlice2dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
int32_t m_BeginMask
Begin mask value.
int32_t m_EndMask
End mask value.
LayerTestResult< float, 4 > StridedSlice4dReverseFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > StridedSlice4dReverseUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 2 > StridedSlice2dReverseInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 2 > StridedSliceShrinkAxisMaskBitPosition0Dim3Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 3 > StridedSliceShrinkAxisMaskBitPosition0Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 4 > StridedSliceShrinkAxisMaskCTSFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
#define ARMNN_NO_DEPRECATE_WARN_END
Definition: Deprecated.hpp:34
LayerTestResult< float, 2 > StridedSliceShrinkAxisMaskBitPosition0And2Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 3 > StridedSlice3dReverseFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > StridedSliceShrinkAxisMaskBitPosition1Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< uint8_t, 2 > StridedSliceShrinkAxisMaskBitPosition0And3Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 4 > StridedSlice4dReverseInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 2 > StridedSlice2dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > StridedSliceSimpleRangeMaskUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void SetQuantizationScale(float scale)
Definition: Tensor.cpp:465
LayerTestResult< int16_t, 4 > StridedSlice4dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::vector< int > m_Stride
Stride values for the input that will be sliced.
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
LayerTestResult< float, 2 > StridedSliceShrinkAxisMaskBitPosition0And3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< int16_t, 3 > StridedSlice3dReverseInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 4 > StridedSliceSimpleRangeMaskInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 3 > StridedSliceShrinkAxisMaskBitPosition2Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 2 > StridedSliceShrinkAxisMaskFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 2 > StridedSlice2dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::vector< int > m_End
End values for the input that will be sliced.
LayerTestResult< uint8_t, 2 > StridedSliceShrinkAxisMaskUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 4 > StridedSlice4dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 3 > StridedSlice3dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 2 > StridedSliceShrinkAxisMaskBitPosition0And1Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 3 > StridedSliceShrinkAxisMaskBitPosition1Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 2 > StridedSliceShrinkAxisMaskBitPosition0And1Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
Contains information about inputs and outputs to a layer.
void SetQuantizationOffset(int32_t offset)
Definition: Tensor.cpp:481
LayerTestResult< float, 4 > StridedSliceSimpleRangeMaskFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 2 > StridedSliceShrinkAxisMaskInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > StridedSliceShrinkAxisMaskBitPosition3Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 1 > StridedSliceShrinkAxisMaskBitPosition0And1And3Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 2 > StridedSliceShrinkAxisMaskBitPosition0And2Uint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< float, 2 > StridedSlice2dReverseFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 3 > StridedSliceShrinkAxisMaskBitPosition3Float32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)