ArmNN
 20.05
StridedSliceTestImpl.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. 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));
48 
49  std::unique_ptr<armnn::ITensorHandle> inputHandle =
50  workloadFactory.CreateTensorHandle(inputTensorInfo);
51 
52  std::unique_ptr<armnn::ITensorHandle> outputHandle =
53  workloadFactory.CreateTensorHandle(outputTensorInfo);
54 
56  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
57  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
58 
59  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateStridedSlice(descriptor, info);
60 
61  inputHandle->Allocate();
62  outputHandle->Allocate();
63 
64  CopyDataToITensorHandle(inputHandle.get(), input.data());
65 
66  ExecuteWorkload(*workload, memoryManager);
67 
68  CopyDataFromITensorHandle(ret.output.data(), outputHandle.get());
69 
70  return ret;
71 }
72 
73 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
74 LayerTestResult<T, 4> StridedSlice4dTest(
75  armnn::IWorkloadFactory& workloadFactory,
77 {
78  armnn::TensorInfo inputTensorInfo;
79  armnn::TensorInfo outputTensorInfo;
80 
81  unsigned int inputShape[] = {3, 2, 3, 1};
82  unsigned int outputShape[] = {1, 2, 3, 1};
83 
85  desc.m_Parameters.m_Begin = {1, 0, 0, 0};
86  desc.m_Parameters.m_End = {2, 2, 3, 1};
87  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
88 
89  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
90  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
91 
92  std::vector<float> input = std::vector<float>(
93  {
94  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
95 
96  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
97 
98  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
99  });
100 
101  std::vector<float> outputExpected = std::vector<float>(
102  {
103  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f
104  });
105 
106  return StridedSliceTestImpl<T, 4, 4>(
107  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
108 }
109 
110 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
111 LayerTestResult<T, 4> StridedSlice4dReverseTest(
112  armnn::IWorkloadFactory& workloadFactory,
114 {
115  armnn::TensorInfo inputTensorInfo;
116  armnn::TensorInfo outputTensorInfo;
117 
118  unsigned int inputShape[] = {3, 2, 3, 1};
119  unsigned int outputShape[] = {1, 2, 3, 1};
120 
122  desc.m_Parameters.m_Begin = {1, -1, 0, 0};
123  desc.m_Parameters.m_End = {2, -3, 3, 1};
124  desc.m_Parameters.m_Stride = {1, -1, 1, 1};
125 
126  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
127  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
128 
129  std::vector<float> input = std::vector<float>(
130  {
131  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
132 
133  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
134 
135  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
136  });
137 
138  std::vector<float> outputExpected = std::vector<float>(
139  {
140  4.0f, 4.0f, 4.0f, 3.0f, 3.0f, 3.0f
141  });
142 
143  return StridedSliceTestImpl<T, 4, 4>(
144  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
145 }
146 
147 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
148 LayerTestResult<T, 4> StridedSliceSimpleStrideTest(
149  armnn::IWorkloadFactory& workloadFactory,
151 {
152  armnn::TensorInfo inputTensorInfo;
153  armnn::TensorInfo outputTensorInfo;
154 
155  unsigned int inputShape[] = {3, 2, 3, 1};
156  unsigned int outputShape[] = {2, 1, 2, 1};
157 
159  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
160  desc.m_Parameters.m_End = {3, 2, 3, 1};
161  desc.m_Parameters.m_Stride = {2, 2, 2, 1};
162 
163  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
164  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
165 
166  std::vector<float> input = std::vector<float>(
167  {
168  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
169 
170  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
171 
172  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
173  });
174 
175  std::vector<float> outputExpected = std::vector<float>(
176  {
177  1.0f, 1.0f,
178 
179  5.0f, 5.0f
180  });
181 
182  return StridedSliceTestImpl<T, 4, 4>(
183  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
184 }
185 
186 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
187 LayerTestResult<T, 4> StridedSliceSimpleRangeMaskTest(
188  armnn::IWorkloadFactory& workloadFactory,
190 {
191  armnn::TensorInfo inputTensorInfo;
192  armnn::TensorInfo outputTensorInfo;
193 
194  unsigned int inputShape[] = {3, 2, 3, 1};
195  unsigned int outputShape[] = {3, 2, 3, 1};
196 
198  desc.m_Parameters.m_Begin = {1, 1, 1, 1};
199  desc.m_Parameters.m_End = {1, 1, 1, 1};
200  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
201  desc.m_Parameters.m_BeginMask = (1 << 4) - 1;
202  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
203 
204  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
205  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
206 
207  std::vector<float> input = std::vector<float>(
208  {
209  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
210 
211  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
212 
213  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
214  });
215 
216  std::vector<float> outputExpected = std::vector<float>(
217  {
218  1.0f, 1.0f, 1.0f, 2.0f, 2.0f, 2.0f,
219 
220  3.0f, 3.0f, 3.0f, 4.0f, 4.0f, 4.0f,
221 
222  5.0f, 5.0f, 5.0f, 6.0f, 6.0f, 6.0f
223  });
224 
225  return StridedSliceTestImpl<T, 4, 4>(
226  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
227 }
228 
229 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
230 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskTest(
231  armnn::IWorkloadFactory& workloadFactory,
233 {
234  armnn::TensorInfo inputTensorInfo;
235  armnn::TensorInfo outputTensorInfo;
236 
237  unsigned int inputShape[] = {3, 2, 3, 1};
238  unsigned int outputShape[] = {3, 1};
239 
241  desc.m_Parameters.m_Begin = {0, 0, 1, 0};
242  desc.m_Parameters.m_End = {1, 1, 1, 1};
243  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
244  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
245  desc.m_Parameters.m_ShrinkAxisMask = (1 << 1) | (1 << 2);
246 
247  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
248  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
249 
250  std::vector<float> input = std::vector<float>(
251  {
252  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
253 
254  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
255 
256  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
257  });
258 
259  std::vector<float> outputExpected = std::vector<float>(
260  {
261  2.0f, 8.0f, 14.0f
262  });
263 
264  return StridedSliceTestImpl<T, 4, 2>(
265  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
266 }
267 
268 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
269 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition0Test(
270  armnn::IWorkloadFactory& workloadFactory,
272 {
273  armnn::TensorInfo inputTensorInfo;
274  armnn::TensorInfo outputTensorInfo;
275 
276  unsigned int inputShape[] = {3, 2, 3, 1};
277  unsigned int outputShape[] = {2, 3, 1};
278 
280  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
281  desc.m_Parameters.m_End = {1, 1, 1, 1};
282  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
283  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
284  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
285 
286  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
287  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
288 
289  std::vector<float> input = std::vector<float>(
290  {
291  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
292 
293  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
294 
295  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
296  });
297 
298  std::vector<float> outputExpected = std::vector<float>(
299  {
300  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
301  });
302 
303  return StridedSliceTestImpl<T, 4, 3>(
304  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
305 }
306 
307 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
308 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition1Test(
309  armnn::IWorkloadFactory& workloadFactory,
311 {
312  armnn::TensorInfo inputTensorInfo;
313  armnn::TensorInfo outputTensorInfo;
314 
315  unsigned int inputShape[] = {3, 2, 3, 1};
316  unsigned int outputShape[] = {3, 3, 1};
317 
319  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
320  desc.m_Parameters.m_End = {1, 1, 1, 1};
321  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
322  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
323  desc.m_Parameters.m_ShrinkAxisMask = (1 << 1);
324 
325  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
326  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
327 
328  std::vector<float> input = std::vector<float>(
329  {
330  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
331 
332  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
333 
334  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
335  });
336 
337  std::vector<float> outputExpected = std::vector<float>(
338  {
339  1.0f, 2.0f, 3.0f, 7.0f, 8.0f, 9.0f, 13.0f, 14.0f, 15.0f
340  });
341 
342  return StridedSliceTestImpl<T, 4, 3>(
343  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
344 }
345 
346 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
347 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition2Test(
348  armnn::IWorkloadFactory& workloadFactory,
350 {
351  armnn::TensorInfo inputTensorInfo;
352  armnn::TensorInfo outputTensorInfo;
353 
354  unsigned int inputShape[] = {3, 2, 3, 1};
355  unsigned int outputShape[] = {3, 2, 1};
356 
358  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
359  desc.m_Parameters.m_End = {1, 1, 1, 1};
360  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
361  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
362  desc.m_Parameters.m_ShrinkAxisMask = (1 << 2);
363 
364  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
365  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
366 
367  std::vector<float> input = std::vector<float>(
368  {
369  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
370 
371  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
372 
373  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
374  });
375 
376  std::vector<float> outputExpected = std::vector<float>(
377  {
378  1.0f, 4.0f, 7.0f, 10.0f, 13.0f, 16.0f
379  });
380 
381  return StridedSliceTestImpl<T, 4, 3>(
382  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
383 }
384 
385 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
386 LayerTestResult<T, 3> StridedSliceShrinkAxisMaskBitPosition3Test(
387  armnn::IWorkloadFactory& workloadFactory,
389 {
390  armnn::TensorInfo inputTensorInfo;
391  armnn::TensorInfo outputTensorInfo;
392 
393  unsigned int inputShape[] = {3, 2, 3, 1};
394  unsigned int outputShape[] = {3, 2, 3};
395 
397  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
398  desc.m_Parameters.m_End = {1, 1, 1, 1};
399  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
400  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
401  desc.m_Parameters.m_ShrinkAxisMask = (1 << 3);
402 
403  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
404  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
405 
406  std::vector<float> input = std::vector<float>(
407  {
408  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
409 
410  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
411 
412  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
413  });
414 
415  std::vector<float> outputExpected = std::vector<float>(
416  {
417  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
418 
419  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
420 
421  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
422  });
423 
424  return StridedSliceTestImpl<T, 4, 3>(
425  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
426 }
427 
428 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
429 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And1Test(
430  armnn::IWorkloadFactory& workloadFactory,
432 {
433  armnn::TensorInfo inputTensorInfo;
434  armnn::TensorInfo outputTensorInfo;
435 
436  unsigned int inputShape[] = {3, 2, 3, 1};
437  unsigned int outputShape[] = {3, 1};
438 
440  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
441  desc.m_Parameters.m_End = {1, 1, 1, 1};
442  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
443  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
444  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1);
445 
446  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
447  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
448 
449  std::vector<float> input = std::vector<float>(
450  {
451  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
452 
453  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
454 
455  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
456  });
457 
458  std::vector<float> outputExpected = std::vector<float>(
459  {
460  1.0f, 2.0f, 3.0f
461  });
462 
463  return StridedSliceTestImpl<T, 4, 2>(
464  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
465 }
466 
467 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
468 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0Dim3Test(
469  armnn::IWorkloadFactory& workloadFactory,
471 {
472  armnn::TensorInfo inputTensorInfo;
473  armnn::TensorInfo outputTensorInfo;
474 
475  unsigned int inputShape[] = {2, 3, 1};
476  unsigned int outputShape[] = {3, 1};
477 
479  desc.m_Parameters.m_Begin = {0, 0, 0};
480  desc.m_Parameters.m_End = {0, 0, 0};
481  desc.m_Parameters.m_Stride = {1, 1, 1};
482  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
483  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0);
484 
485  inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
486  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
487 
488  std::vector<float> input = std::vector<float>(
489  {
490  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
491  });
492 
493  std::vector<float> outputExpected = std::vector<float>(
494  {
495  1.0f, 2.0f, 3.0f
496  });
497 
498  return StridedSliceTestImpl<T, 3, 2>(
499  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
500 }
501 
502 void FillVector(std::vector<float>& inputArray, float start, float step)
503 {
504  for (uint32_t i = 0; i < inputArray.size(); ++i)
505  {
506  inputArray[i] = start;
507  start += step;
508  }
509 }
510 
511 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
512 LayerTestResult<T, 4> StridedSliceShrinkAxisMaskCTSTest(
513  armnn::IWorkloadFactory& workloadFactory,
515 {
516  armnn::TensorInfo inputTensorInfo;
517  armnn::TensorInfo outputTensorInfo;
518 
519  unsigned int inputShape[] = {1, 1, 8, 942};
520  unsigned int outputShape[] = {1, 1, 1, 279};
521 
523  desc.m_Parameters.m_Begin = {0, 0, 1, 229};
524  desc.m_Parameters.m_End = {1, 1, 2, 787};
525  desc.m_Parameters.m_Stride = {2, 3, 3, 2};
526  desc.m_Parameters.m_BeginMask = 2;
527  desc.m_Parameters.m_EndMask = 0;
529 
530  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
531  outputTensorInfo = armnn::TensorInfo(4, outputShape, ArmnnType);
532 
533  // Array from 1 to 7535
534  std::vector<float> input(7536);
535  FillVector(input, 1.0f, 1.0f);
536 
537  // Array from 1171 to 1727 in steps of 2
538  std::vector<float> outputExpected(279);
539  FillVector(outputExpected, 1171.0, 2.0f);
540 
541  return StridedSliceTestImpl<T, 4, 4>(
542  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
543 }
544 
545 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
546 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And2Test(
547  armnn::IWorkloadFactory& workloadFactory,
549 {
550  armnn::TensorInfo inputTensorInfo;
551  armnn::TensorInfo outputTensorInfo;
552 
553  unsigned int inputShape[] = {3, 2, 3, 1};
554  unsigned int outputShape[] = {2, 1};
555 
557  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
558  desc.m_Parameters.m_End = {1, 1, 1, 1};
559  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
560  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
561  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 2);
562 
563  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
564  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
565 
566  std::vector<float> input = std::vector<float>(
567  {
568  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
569 
570  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
571 
572  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
573  });
574 
575  std::vector<float> outputExpected = std::vector<float>(
576  {
577  1.0f, 4.0f
578  });
579 
580  return StridedSliceTestImpl<T, 4, 2>(
581  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
582 }
583 
584 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
585 LayerTestResult<T, 2> StridedSliceShrinkAxisMaskBitPosition0And3Test(
586  armnn::IWorkloadFactory& workloadFactory,
588 {
589  armnn::TensorInfo inputTensorInfo;
590  armnn::TensorInfo outputTensorInfo;
591 
592  unsigned int inputShape[] = {3, 2, 3, 1};
593  unsigned int outputShape[] = {2, 3};
594 
596  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
597  desc.m_Parameters.m_End = {1, 1, 1, 1};
598  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
599  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
600  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 3);
601 
602  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
603  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
604 
605  std::vector<float> input = std::vector<float>(
606  {
607  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
608 
609  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
610 
611  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
612  });
613 
614  std::vector<float> outputExpected = std::vector<float>(
615  {
616  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f
617  });
618 
619  return StridedSliceTestImpl<T, 4, 2>(
620  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
621 }
622 
623 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
624 LayerTestResult<T, 1> StridedSliceShrinkAxisMaskBitPosition0And1And3Test(
625  armnn::IWorkloadFactory& workloadFactory,
627 {
628  armnn::TensorInfo inputTensorInfo;
629  armnn::TensorInfo outputTensorInfo;
630 
631  unsigned int inputShape[] = {3, 2, 3, 1};
632  unsigned int outputShape[] = {3};
633 
635  desc.m_Parameters.m_Begin = {0, 0, 0, 0};
636  desc.m_Parameters.m_End = {1, 1, 1, 1};
637  desc.m_Parameters.m_Stride = {1, 1, 1, 1};
638  desc.m_Parameters.m_EndMask = (1 << 4) - 1;
639  desc.m_Parameters.m_ShrinkAxisMask = (1 << 0) | (1 << 1) | (1 << 3);
640 
641  inputTensorInfo = armnn::TensorInfo(4, inputShape, ArmnnType);
642  outputTensorInfo = armnn::TensorInfo(1, outputShape, ArmnnType);
643 
644  std::vector<float> input = std::vector<float>(
645  {
646  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f,
647 
648  7.0f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f,
649 
650  13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f
651  });
652 
653  std::vector<float> outputExpected = std::vector<float>(
654  {
655  1.0f, 2.0f, 3.0f
656  });
657 
658  return StridedSliceTestImpl<T, 4, 1>(
659  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
660 }
661 
662 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
663 LayerTestResult<T, 3> StridedSlice3dTest(
664  armnn::IWorkloadFactory& workloadFactory,
666 {
667  armnn::TensorInfo inputTensorInfo;
668  armnn::TensorInfo outputTensorInfo;
669 
670  unsigned int inputShape[] = {3, 3, 3};
671  unsigned int outputShape[] = {2, 2, 2};
672 
674  desc.m_Parameters.m_Begin = {0, 0, 0};
675  desc.m_Parameters.m_End = {1, 1, 1};
676  desc.m_Parameters.m_Stride = {2, 2, 2};
677  desc.m_Parameters.m_EndMask = (1 << 3) - 1;
678 
679  inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
680  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
681 
682  std::vector<float> input = std::vector<float>(
683  {
684  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
685 
686  10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
687 
688  19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
689  });
690 
691  std::vector<float> outputExpected = std::vector<float>(
692  {
693  1.0f, 3.0f, 7.0f, 9.0f,
694 
695  19.0f, 21.0f, 25.0f, 27.0f
696  });
697 
698  return StridedSliceTestImpl<T, 3, 3>(
699  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
700 }
701 
702 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
703 LayerTestResult<T, 3> StridedSlice3dReverseTest(
704  armnn::IWorkloadFactory& workloadFactory,
706 {
707  armnn::TensorInfo inputTensorInfo;
708  armnn::TensorInfo outputTensorInfo;
709 
710  unsigned int inputShape[] = {3, 3, 3};
711  unsigned int outputShape[] = {2, 2, 2};
712 
714  desc.m_Parameters.m_Begin = {-1, -1, -1};
715  desc.m_Parameters.m_End = {-4, -4, -4};
716  desc.m_Parameters.m_Stride = {-2, -2, -2};
717 
718  inputTensorInfo = armnn::TensorInfo(3, inputShape, ArmnnType);
719  outputTensorInfo = armnn::TensorInfo(3, outputShape, ArmnnType);
720 
721  std::vector<float> input = std::vector<float>(
722  {
723  1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f,
724 
725  10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 16.0f, 17.0f, 18.0f,
726 
727  19.0f, 20.0f, 21.0f, 22.0f, 23.0f, 24.0f, 25.0f, 26.0f, 27.0f
728  });
729 
730  std::vector<float> outputExpected = std::vector<float>(
731  {
732  27.0f, 25.0f, 21.0f, 19.0f,
733 
734  9.0f, 7.0f, 3.0f, 1.0f
735  });
736 
737  return StridedSliceTestImpl<T, 3, 3>(
738  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
739 }
740 
741 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
742 LayerTestResult<T, 2> StridedSlice2dTest(
743  armnn::IWorkloadFactory& workloadFactory,
745 {
746  armnn::TensorInfo inputTensorInfo;
747  armnn::TensorInfo outputTensorInfo;
748 
749  unsigned int inputShape[] = {3, 3};
750  unsigned int outputShape[] = {2, 2};
751 
753  desc.m_Parameters.m_Begin = {0, 0};
754  desc.m_Parameters.m_End = {1, 1};
755  desc.m_Parameters.m_Stride = {2, 2};
756  desc.m_Parameters.m_EndMask = (1 << 2) - 1;
757 
758  inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
759  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
760 
761  std::vector<float> input = std::vector<float>(
762  {
763  1.0f, 2.0f, 3.0f,
764 
765  4.0f, 5.0f, 6.0f,
766 
767  7.0f, 8.0f, 9.0f
768  });
769 
770  std::vector<float> outputExpected = std::vector<float>(
771  {
772  1.0f, 3.0f,
773 
774  7.0f, 9.0f
775  });
776 
777  return StridedSliceTestImpl<T, 2, 2>(
778  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
779 }
780 
781 template<armnn::DataType ArmnnType, typename T = armnn::ResolveType<ArmnnType>>
782 LayerTestResult<T, 2> StridedSlice2dReverseTest(
783  armnn::IWorkloadFactory& workloadFactory,
785 {
786  armnn::TensorInfo inputTensorInfo;
787  armnn::TensorInfo outputTensorInfo;
788 
789  unsigned int inputShape[] = {3, 3};
790  unsigned int outputShape[] = {2, 2};
791 
793  desc.m_Parameters.m_Begin = {0, 0};
794  desc.m_Parameters.m_End = {1, 1};
795  desc.m_Parameters.m_Stride = {-2, -2};
796  desc.m_Parameters.m_BeginMask = (1 << 2) - 1;
797  desc.m_Parameters.m_EndMask = (1 << 2) - 1;
798 
799  inputTensorInfo = armnn::TensorInfo(2, inputShape, ArmnnType);
800  outputTensorInfo = armnn::TensorInfo(2, outputShape, ArmnnType);
801 
802  std::vector<float> input = std::vector<float>(
803  {
804  1.0f, 2.0f, 3.0f,
805 
806  4.0f, 5.0f, 6.0f,
807 
808  7.0f, 8.0f, 9.0f
809  });
810 
811  std::vector<float> outputExpected = std::vector<float>(
812  {
813  9.0f, 7.0f,
814 
815  3.0f, 1.0f
816  });
817 
818  return StridedSliceTestImpl<T, 2, 2>(
819  workloadFactory, memoryManager, inputTensorInfo, outputTensorInfo, input, outputExpected, desc);
820 }
821 
822 } // anonymous namespace
823 
825  armnn::IWorkloadFactory& workloadFactory,
827 {
828  return StridedSlice4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
829 }
830 
832  armnn::IWorkloadFactory& workloadFactory,
834 {
835  return StridedSlice4dReverseTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
836 }
837 
839  armnn::IWorkloadFactory& workloadFactory,
841 {
842  return StridedSliceSimpleStrideTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
843 }
844 
846  armnn::IWorkloadFactory& workloadFactory,
848 {
849  return StridedSliceSimpleRangeMaskTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
850 }
851 
853  armnn::IWorkloadFactory& workloadFactory,
855 {
856  return StridedSliceShrinkAxisMaskTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
857 }
858 
860  armnn::IWorkloadFactory& workloadFactory,
862 {
863  return StridedSliceShrinkAxisMaskCTSTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
864 }
865 
867  armnn::IWorkloadFactory& workloadFactory,
869 {
870  return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
871 }
872 
874  armnn::IWorkloadFactory& workloadFactory,
876 {
877  return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
878 }
879 
881  armnn::IWorkloadFactory& workloadFactory,
883 {
884  return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
885 }
886 
888  armnn::IWorkloadFactory& workloadFactory,
890 {
891  return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
892 }
893 
895  armnn::IWorkloadFactory& workloadFactory,
897 {
898  return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
899 }
900 
902  armnn::IWorkloadFactory& workloadFactory,
904 {
905  return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
906 }
907 
909  armnn::IWorkloadFactory& workloadFactory,
911 {
912  return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
913 }
914 
916  armnn::IWorkloadFactory& workloadFactory,
918 {
919  return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
920 }
921 
923  armnn::IWorkloadFactory& workloadFactory,
925 {
926  return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::Float32>(workloadFactory, memoryManager);
927 }
928 
930  armnn::IWorkloadFactory& workloadFactory,
932 {
933  return StridedSlice3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
934 }
935 
937  armnn::IWorkloadFactory& workloadFactory,
939 {
940  return StridedSlice3dReverseTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
941 }
942 
944  armnn::IWorkloadFactory& workloadFactory,
946 {
947  return StridedSlice2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
948 }
949 
951  armnn::IWorkloadFactory& workloadFactory,
953 {
954  return StridedSlice2dReverseTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
955 }
956 
958  armnn::IWorkloadFactory& workloadFactory,
960 {
961  return StridedSlice4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
962 }
963 
965  armnn::IWorkloadFactory& workloadFactory,
967 {
968  return StridedSlice4dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
969 }
970 
972  armnn::IWorkloadFactory& workloadFactory,
974 {
975  return StridedSliceSimpleStrideTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
976 }
977 
979  armnn::IWorkloadFactory& workloadFactory,
981 {
982  return StridedSliceSimpleRangeMaskTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
983 }
984 
986  armnn::IWorkloadFactory& workloadFactory,
988 {
989  return StridedSliceShrinkAxisMaskTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
990 }
991 
993  armnn::IWorkloadFactory& workloadFactory,
995 {
996  return StridedSliceShrinkAxisMaskBitPosition0Dim3Test<armnn::DataType::QAsymmU8>(workloadFactory,
997  memoryManager);
998 }
999 
1001  armnn::IWorkloadFactory& workloadFactory,
1003 {
1004  return StridedSliceShrinkAxisMaskBitPosition0Test<armnn::DataType::QAsymmU8>(workloadFactory,
1005  memoryManager);
1006 }
1007 
1009  armnn::IWorkloadFactory& workloadFactory,
1011 {
1012  return StridedSliceShrinkAxisMaskBitPosition1Test<armnn::DataType::QAsymmU8>(workloadFactory,
1013  memoryManager);
1014 }
1015 
1017  armnn::IWorkloadFactory& workloadFactory,
1019 {
1020  return StridedSliceShrinkAxisMaskBitPosition2Test<armnn::DataType::QAsymmU8>(workloadFactory,
1021  memoryManager);
1022 }
1023 
1025  armnn::IWorkloadFactory& workloadFactory,
1027 {
1028  return StridedSliceShrinkAxisMaskBitPosition3Test<armnn::DataType::QAsymmU8>(workloadFactory,
1029  memoryManager);
1030 }
1031 
1033  armnn::IWorkloadFactory& workloadFactory,
1035 {
1036  return StridedSliceShrinkAxisMaskBitPosition0And1Test<armnn::DataType::QAsymmU8>(workloadFactory,
1037  memoryManager);
1038 }
1039 
1041  armnn::IWorkloadFactory& workloadFactory,
1043 {
1044  return StridedSliceShrinkAxisMaskBitPosition0And2Test<armnn::DataType::QAsymmU8>(workloadFactory,
1045  memoryManager);
1046 }
1047 
1049  armnn::IWorkloadFactory& workloadFactory,
1051 {
1052  return StridedSliceShrinkAxisMaskBitPosition0And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
1053  memoryManager);
1054 }
1055 
1057  armnn::IWorkloadFactory& workloadFactory,
1059 {
1060  return StridedSliceShrinkAxisMaskBitPosition0And1And3Test<armnn::DataType::QAsymmU8>(workloadFactory,
1061  memoryManager);
1062 }
1063 
1065  armnn::IWorkloadFactory& workloadFactory,
1067 {
1068  return StridedSlice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1069 }
1070 
1072  armnn::IWorkloadFactory& workloadFactory,
1074 {
1075  return StridedSlice3dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1076 }
1077 
1079  armnn::IWorkloadFactory& workloadFactory,
1081 {
1082  return StridedSlice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1083 }
1084 
1086  armnn::IWorkloadFactory& workloadFactory,
1088 {
1089  return StridedSlice2dReverseTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
1090 }
1091 
1093  armnn::IWorkloadFactory& workloadFactory,
1095 {
1096  return StridedSlice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1097 }
1098 
1100  armnn::IWorkloadFactory& workloadFactory,
1102 {
1103  return StridedSlice4dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1104 }
1105 
1107  armnn::IWorkloadFactory& workloadFactory,
1109 {
1110  return StridedSliceSimpleStrideTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1111 }
1112 
1114  armnn::IWorkloadFactory& workloadFactory,
1116 {
1117  return StridedSliceSimpleRangeMaskTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1118 }
1119 
1121  armnn::IWorkloadFactory& workloadFactory,
1123 {
1124  return StridedSliceShrinkAxisMaskTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1125 }
1126 
1128  armnn::IWorkloadFactory& workloadFactory,
1130 {
1131  return StridedSlice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1132 }
1133 
1135  armnn::IWorkloadFactory& workloadFactory,
1137 {
1138  return StridedSlice3dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1139 }
1140 
1142  armnn::IWorkloadFactory& workloadFactory,
1144 {
1145  return StridedSlice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1146 }
1147 
1149  armnn::IWorkloadFactory& workloadFactory,
1151 {
1152  return StridedSlice2dReverseTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
1153 }
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.
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)
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:260
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:276
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)