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));
49 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputInfo);
50 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputInfo);
53 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
54 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
56 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateSlice(descriptor, info);
58 inputHandle->Allocate();
59 outputHandle->Allocate();
63 ExecuteWorkload(*workload, memoryManager);
70 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
84 std::vector<float> input =
86 0.f, 1.f, 2.f, 3.f, 4.f,
87 5.f, 6.f, 7.f, 8.f, 9.f,
88 10.f, 11.f, 12.f, 13.f, 14.f,
90 15.f, 16.f, 17.f, 18.f, 19.f,
91 20.f, 21.f, 22.f, 23.f, 24.f,
92 25.f, 26.f, 27.f, 28.f, 29.f,
95 30.f, 31.f, 32.f, 33.f, 34.f,
96 35.f, 36.f, 37.f, 38.f, 39.f,
97 40.f, 41.f, 42.f, 43.f, 44.f,
99 45.f, 46.f, 47.f, 48.f, 49.f,
100 50.f, 51.f, 52.f, 53.f, 54.f,
101 55.f, 56.f, 57.f, 58.f, 59.f,
104 60.f, 61.f, 62.f, 63.f, 64.f,
105 65.f, 66.f, 67.f, 68.f, 69.f,
106 70.f, 71.f, 72.f, 73.f, 74.f,
108 75.f, 76.f, 77.f, 78.f, 79.f,
109 80.f, 81.f, 82.f, 83.f, 84.f,
110 85.f, 86.f, 87.f, 88.f, 89.f
113 std::vector<float> expectedOutput =
123 return SliceTestImpl<T, 4>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
126 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
140 std::vector<float> input =
142 0.f, 1.f, 2.f, 3.f, 4.f,
143 5.f, 6.f, 7.f, 8.f, 9.f,
144 10.f, 11.f, 12.f, 13.f, 14.f,
146 15.f, 16.f, 17.f, 18.f, 19.f,
147 20.f, 21.f, 22.f, 23.f, 24.f,
148 25.f, 26.f, 27.f, 28.f, 29.f,
151 std::vector<float> expectedOutput =
157 return SliceTestImpl<T, 3>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
160 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
174 std::vector<float> input =
176 0.f, 1.f, 2.f, 3.f, 4.f,
177 5.f, 6.f, 7.f, 8.f, 9.f,
178 10.f, 11.f, 12.f, 13.f, 14.f
181 std::vector<float> expectedOutput =
187 return SliceTestImpl<T, 2>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
190 template<armnn::DataType ArmnnType,
typename T = armnn::ResolveType<ArmnnType>>
204 std::vector<float> input =
206 0.f, 1.f, 2.f, 3.f, 4.f
209 std::vector<float> expectedOutput =
214 return SliceTestImpl<T, 1>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
223 return Slice4dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
229 return Slice3dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
235 return Slice2dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
241 return Slice1dTest<armnn::DataType::Float32>(workloadFactory, memoryManager);
248 return Slice4dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
254 return Slice3dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
260 return Slice2dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
266 return Slice1dTest<armnn::DataType::QAsymmU8>(workloadFactory, memoryManager);
273 return Slice4dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
279 return Slice3dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
285 return Slice2dTest<armnn::DataType::QSymmS16>(workloadFactory, memoryManager);
291 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)
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)
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)