26 std::vector<float>& inputData,
27 std::vector<float>& expectedOutputData,
29 const float qScale = 1.0f,
30 const int32_t qOffset = 0)
32 boost::ignore_unused(memoryManager);
35 PermuteTensorNhwcToNchw<float>(inputInfo, inputData);
36 PermuteTensorNhwcToNchw<float>(outputInfo, expectedOutputData);
39 if(armnn::IsQuantizedType<T>())
47 boost::multi_array<T, 4> input =
48 MakeTensor<T, 4>(inputInfo, armnnUtils::QuantizedVector<T>(inputData, qScale, qOffset));
51 result.outputExpected =
52 MakeTensor<T, 4>(outputInfo, armnnUtils::QuantizedVector<T>(expectedOutputData, qScale, qOffset));
54 std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.
CreateTensorHandle(inputInfo);
55 std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.
CreateTensorHandle(outputInfo);
58 AddInputToWorkload(descriptor, info, inputInfo, inputHandle.get());
59 AddOutputToWorkload(descriptor, info, outputInfo, outputHandle.get());
61 std::unique_ptr<armnn::IWorkload> workload = workloadFactory.
CreateDepthToSpace(descriptor, info);
63 inputHandle->Allocate();
64 outputHandle->Allocate();
76 template<armnn::DataType ArmnnType,
typename T>
82 unsigned int inputShape[] = { 1, 1, 1, 8 };
83 unsigned int outputShape[] = { 1, 2, 2, 2 };
92 std::vector<float> input = { 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f };
93 std::vector<float> expectedOutput = input;
102 return DepthToSpaceTestImpl<T>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
105 template<armnn::DataType ArmnnType,
typename T>
111 unsigned int inputShape[] = { 1, 2, 2, 4 };
112 unsigned int outputShape[] = { 1, 4, 4, 1 };
126 std::vector<float> input =
132 9.f, 10.f, 11.f, 12.f,
134 13.f, 14.f, 15.f, 16.f
137 std::vector<float> expectedOutput
141 9.f, 10.f, 13.f, 14.f,
142 11.f, 12.f, 15.f, 16.f
152 return DepthToSpaceTestImpl<T>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
155 template<armnn::DataType ArmnnType,
typename T>
161 unsigned int inputShape[] = { 2, 1, 1, 4 };
162 unsigned int outputShape[] = { 2, 2, 2, 1 };
164 std::vector<float> input =
170 std::vector<float> expectedOutput = input;
179 return DepthToSpaceTestImpl<T>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
182 template<armnn::DataType ArmnnType,
typename T>
188 unsigned int inputShape[] = { 2, 2, 2, 4 };
189 unsigned int outputShape[] = { 2, 4, 4, 1 };
191 std::vector<float> input =
197 9.f, 10.f, 11.f, 12.f,
199 13.f, 14.f, 15.f, 16.f,
202 17.f, 18.f, 19.f, 20.f,
204 21.f, 22.f, 23.f, 24.f,
206 25.f, 26.f, 27.f, 28.f,
208 29.f, 30.f, 31.f, 32.f
211 std::vector<float> expectedOutput
215 9.f, 10.f, 13.f, 14.f,
216 11.f, 12.f, 15.f, 16.f,
219 17.f, 18.f, 21.f, 22.f,
220 19.f, 20.f, 23.f, 24.f,
221 25.f, 26.f, 29.f, 30.f,
222 27.f, 28.f, 31.f, 32.f
232 return DepthToSpaceTestImpl<T>(workloadFactory, memoryManager, inputInfo, outputInfo, input, expectedOutput, desc);
237 DepthToSpaceTest1<armnn::DataType::Float32>(
242 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
243 DepthToSpaceTest2<armnn::DataType::Float32>(
248 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
249 DepthToSpaceTest3<armnn::DataType::Float32>(
254 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
255 DepthToSpaceTest4<armnn::DataType::Float32>(
262 DepthToSpaceTest1<armnn::DataType::Float16>(
267 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
268 DepthToSpaceTest2<armnn::DataType::Float16>(
273 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
274 DepthToSpaceTest3<armnn::DataType::Float16>(
279 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float16>, 4>
280 DepthToSpaceTest4<armnn::DataType::Float16>(
287 DepthToSpaceTest1<armnn::DataType::QAsymmU8>(
292 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
293 DepthToSpaceTest2<armnn::DataType::QAsymmU8>(
298 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
299 DepthToSpaceTest3<armnn::DataType::QAsymmU8>(
304 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
305 DepthToSpaceTest4<armnn::DataType::QAsymmU8>(
312 DepthToSpaceTest1<armnn::DataType::QSymmS16>(
317 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
318 DepthToSpaceTest2<armnn::DataType::QSymmS16>(
323 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
324 DepthToSpaceTest3<armnn::DataType::QSymmS16>(
329 template LayerTestResult<armnn::ResolveType<armnn::DataType::QSymmS16>, 4>
330 DepthToSpaceTest4<armnn::DataType::QSymmS16>(
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
LayerTestResult< T, 4 > DepthToSpaceTest3(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::DataLayout dataLayout)
LayerDescriptor m_Parameters
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
LayerTestResult< T, 4 > DepthToSpaceTest4(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::DataLayout dataLayout)
LayerTestResult< T, 4 > DepthToSpaceTest2(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::DataLayout dataLayout)
void SetQuantizationScale(float scale)
unsigned int m_BlockSize
Scalar specifying the input block size. It must be >= 1.
void SetQuantizationOffset(int32_t offset)
virtual std::unique_ptr< IWorkload > CreateDepthToSpace(const DepthToSpaceQueueDescriptor &descriptor, const WorkloadInfo &info) const
LayerTestResult< T, 4 > DepthToSpaceTest1(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, armnn::DataLayout dataLayout)