20 template<
typename T, std::
size_t NumDims>
26 std::vector<float>& inputData,
27 std::vector<float>& expectedOutputData,
29 const float qScale = 1.0f,
30 const int qOffset = 0)
33 if(armnn::IsQuantizedType<T>())
42 boost::multi_array<T, NumDims> input =
43 MakeTensor<T, NumDims>(inputInfo, armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset));
46 result.outputExpected =
47 MakeTensor<T, NumDims>(outputInfo, armnnUtils::QuantizedVector<T>(expectedOutputData, qScale, qOffset));
50 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputInfo);
51 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputInfo);
55 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
56 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
58 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateSlice(descriptor, info);
60 inputHandle->Allocate();
61 outputHandle->Allocate();
65 ExecuteWorkload(*workload, memoryManager);
72 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
86 std::vector<float> input =
88 0.f, 1.f, 2.f, 3.f, 4.f,
89 5.f, 6.f, 7.f, 8.f, 9.f,
90 10.f, 11.f, 12.f, 13.f, 14.f,
92 15.f, 16.f, 17.f, 18.f, 19.f,
93 20.f, 21.f, 22.f, 23.f, 24.f,
94 25.f, 26.f, 27.f, 28.f, 29.f,
97 30.f, 31.f, 32.f, 33.f, 34.f,
98 35.f, 36.f, 37.f, 38.f, 39.f,
99 40.f, 41.f, 42.f, 43.f, 44.f,
101 45.f, 46.f, 47.f, 48.f, 49.f,
102 50.f, 51.f, 52.f, 53.f, 54.f,
103 55.f, 56.f, 57.f, 58.f, 59.f,
106 60.f, 61.f, 62.f, 63.f, 64.f,
107 65.f, 66.f, 67.f, 68.f, 69.f,
108 70.f, 71.f, 72.f, 73.f, 74.f,
110 75.f, 76.f, 77.f, 78.f, 79.f,
111 80.f, 81.f, 82.f, 83.f, 84.f,
112 85.f, 86.f, 87.f, 88.f, 89.f
115 std::vector<float> expectedOutput =
125 return SliceTestImpl<T, 4>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
128 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
142 std::vector<float> input =
144 0.f, 1.f, 2.f, 3.f, 4.f,
145 5.f, 6.f, 7.f, 8.f, 9.f,
146 10.f, 11.f, 12.f, 13.f, 14.f,
148 15.f, 16.f, 17.f, 18.f, 19.f,
149 20.f, 21.f, 22.f, 23.f, 24.f,
150 25.f, 26.f, 27.f, 28.f, 29.f,
153 std::vector<float> expectedOutput =
159 return SliceTestImpl<T, 3>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
162 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
176 std::vector<float> input =
178 0.f, 1.f, 2.f, 3.f, 4.f,
179 5.f, 6.f, 7.f, 8.f, 9.f,
180 10.f, 11.f, 12.f, 13.f, 14.f
183 std::vector<float> expectedOutput =
189 return SliceTestImpl<T, 2>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
192 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
206 std::vector<float> input =
208 0.f, 1.f, 2.f, 3.f, 4.f
211 std::vector<float> expectedOutput =
216 return SliceTestImpl<T, 1>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
225 return Slice4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
231 return Slice3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
237 return Slice2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
243 return Slice1dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
250 return Slice4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
256 return Slice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
262 return Slice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
268 return Slice1dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
275 return Slice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
281 return Slice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
287 return Slice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
293 return Slice1dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
LayerTestResult< uint8_t, 1 > Slice1dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 2 > Slice2dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 4 > Slice4dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 1 > Slice1dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
LayerTestResult< float, 2 > Slice2dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
std::vector< unsigned int > m_Size
Size of the slice in each dimension.
LayerTestResult< int16_t, 4 > Slice4dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< uint8_t, 3 > Slice3dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
LayerTestResult< uint8_t, 4 > Slice4dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
#define ARMNN_NO_DEPRECATE_WARN_END
std::vector< unsigned int > m_Begin
Beginning indices of the slice in each dimension.
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
void SetQuantizationScale(float scale)
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
LayerTestResult< float, 3 > Slice3dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< int16_t, 3 > Slice3dInt16Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
virtual std::unique_ptr< IWorkload > CreateSlice(const SliceQueueDescriptor &descriptor, const WorkloadInfo &info) const
Contains information about inputs and outputs to a layer.
void SetQuantizationOffset(int32_t offset)
LayerTestResult< uint8_t, 2 > Slice2dUint8Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
LayerTestResult< float, 1 > Slice1dFloat32Test(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)