8 #include <DataTypeUtils.hpp> 15 template<
typename T,
size_t NumDims>
23 const std::vector<T>& inputData,
24 const std::vector<T>& outputExpectedData)
29 std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.
CreateTensorHandle(inputTensorInfo);
30 std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.
CreateTensorHandle(outputTensorInfo);
35 AddInputToWorkload(data, info, inputTensorInfo, inputHandle.get());
36 AddOutputToWorkload(data, info, outputTensorInfo, outputHandle.get());
38 std::unique_ptr<armnn::IWorkload> workload
41 inputHandle->Allocate();
42 outputHandle->Allocate();
52 outputHandle->GetShape(),
57 template<armnn::DataType ArmnnType,
typename T>
66 unsigned int inputShape[] = { 1,9,1,1 };
67 unsigned int outputShape[] = { 1,9,1,1 };
78 auto input = ConvertToDataType<ArmnnType>(
80 0.0f, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f
83 auto outputExpected = ConvertToDataType<ArmnnType>(
85 0.0f, 3.0f, 6.0f, 1.0f, 4.0f, 7.0f, 2.0f, 5.0f, 8.0f
89 return ChannelShuffleTestImpl<T, 4>(
100 template<armnn::DataType ArmnnType,
typename T>
109 unsigned int inputShape[] = { 3, 12 };
110 unsigned int outputShape[] = { 3, 12 };
121 auto input = ConvertToDataType<ArmnnType>(
123 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
124 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
125 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
129 auto outputExpected = ConvertToDataType<ArmnnType>(
131 0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11,
132 12, 16, 20, 13, 17, 21, 14, 18, 22, 15, 19, 23,
133 24, 28, 32, 25, 29, 33, 26, 30, 34, 27, 31, 35
137 return ChannelShuffleTestImpl<T, 2>(
148 template<armnn::DataType ArmnnType,
typename T>
157 unsigned int inputShape[] = { 2, 9, 1, 2 };
158 unsigned int outputShape[] = { 2, 9, 1, 2 };
169 auto input = ConvertToDataType<ArmnnType>(
197 auto outputExpected = ConvertToDataType<ArmnnType>(
221 return ChannelShuffleTestImpl<T, 4>(
237 SimpleChannelShuffleTest<armnn::DataType::Float32>(
243 SimpleChannelShuffleTest<armnn::DataType::QAsymmU8>(
249 SimpleChannelShuffleTest<armnn::DataType::QAsymmS8>(
254 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 2>
255 ChannelShuffle2DTest<armnn::DataType::Float32>(
260 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 2>
261 ChannelShuffle2DTest<armnn::DataType::QAsymmU8>(
266 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 2>
267 ChannelShuffle2DTest<armnn::DataType::QAsymmS8>(
272 template LayerTestResult<armnn::ResolveType<armnn::DataType::Float32>, 4>
273 ChannelShuffle4DTest<armnn::DataType::Float32>(
278 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmU8>, 4>
279 ChannelShuffle4DTest<armnn::DataType::QAsymmU8>(
284 template LayerTestResult<armnn::ResolveType<armnn::DataType::QAsymmS8>, 4>
285 ChannelShuffle4DTest<armnn::DataType::QAsymmS8>(
const TensorShape & GetShape() const
LayerTestResult< T, 4 > SimpleChannelShuffleTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
LayerTestResult< T, 2 > ChannelShuffle2DTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
void IgnoreUnused(Ts &&...)
LayerDescriptor m_Parameters
std::shared_ptr< IMemoryManager > IMemoryManagerSharedPtr
void CopyDataFromITensorHandle(void *mem, const armnn::ITensorHandle *tensorHandle)
void SetQuantizationScale(float scale)
LayerTestResult< T, 4 > ChannelShuffle4DTest(armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
uint32_t m_NumGroups
Number of groups for the channel shuffle operation.
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)
uint32_t m_Axis
Axis to apply channel shuffle operation on.
Contains information about TensorInfos of a layer.
A ChannelShuffleDescriptor for the ChannelShuffle operator.
virtual std::unique_ptr< IWorkload > CreateWorkload(LayerType type, const QueueDescriptor &descriptor, const WorkloadInfo &info) const
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
unsigned int GetNumElements() const