From: narpra01 Date: Thu, 27 Sep 2018 15:46:14 +0000 (+0100) Subject: IVGCVSW-1919 - data layout parameter for Normalization X-Git-Tag: submit/tizen/20190109.005305~201 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=33cea4db0b2729c5dbd50f9c0985578c60baffdd;p=platform%2Fupstream%2Farmnn.git IVGCVSW-1919 - data layout parameter for Normalization Change-Id: I33dce72bb0f1e25425dc058d6213a7cdf56eecd2 --- diff --git a/include/armnn/Descriptors.hpp b/include/armnn/Descriptors.hpp index 893db69..bc1b59b 100644 --- a/include/armnn/Descriptors.hpp +++ b/include/armnn/Descriptors.hpp @@ -262,6 +262,7 @@ struct NormalizationDescriptor , m_Alpha(0.f) , m_Beta(0.f) , m_K(0.f) + , m_DataLayout(DataLayout::NCHW) {} NormalizationAlgorithmChannel m_NormChannelType; @@ -270,6 +271,7 @@ struct NormalizationDescriptor float m_Alpha; float m_Beta; float m_K; + DataLayout m_DataLayout; }; struct BatchNormalizationDescriptor diff --git a/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp b/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp index cf2cad1..d5863b4 100644 --- a/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp +++ b/src/backends/ClWorkloads/ClNormalizationFloatWorkload.cpp @@ -11,17 +11,19 @@ #include #include "ClWorkloadUtils.hpp" +using namespace armnn::armcomputetensorutils; + namespace armnn { -arm_compute::Status ClNormalizationWorkloadValidate(const TensorInfo& input, const TensorInfo& output, - const NormalizationDescriptor& descriptor) +arm_compute::Status ClNormalizationWorkloadValidate(const TensorInfo& input, + const TensorInfo& output, + const NormalizationDescriptor& descriptor) { - const arm_compute::TensorInfo aclInputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(input); - const arm_compute::TensorInfo aclOutputInfo = armcomputetensorutils::BuildArmComputeTensorInfo(output); + const arm_compute::TensorInfo aclInputInfo = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout); + const arm_compute::TensorInfo aclOutputInfo = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout); - arm_compute::NormalizationLayerInfo layerInfo = - armcomputetensorutils::BuildArmComputeNormalizationLayerInfo(descriptor); + arm_compute::NormalizationLayerInfo layerInfo = BuildArmComputeNormalizationLayerInfo(descriptor); return arm_compute::CLNormalizationLayer::validate(&aclInputInfo, &aclOutputInfo, layerInfo); } @@ -35,8 +37,7 @@ ClNormalizationFloatWorkload::ClNormalizationFloatWorkload(const NormalizationQu arm_compute::ICLTensor& input = static_cast(m_Data.m_Inputs[0])->GetTensor(); arm_compute::ICLTensor& output = static_cast(m_Data.m_Outputs[0])->GetTensor(); - arm_compute::NormalizationLayerInfo normalizationInfo = - armcomputetensorutils::BuildArmComputeNormalizationLayerInfo(m_Data.m_Parameters); + arm_compute::NormalizationLayerInfo normalizationInfo = BuildArmComputeNormalizationLayerInfo(m_Data.m_Parameters); m_NormalizationLayer.configure(&input, &output, normalizationInfo); }; diff --git a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp index 472c75f..9cd315e 100644 --- a/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp +++ b/src/backends/neon/workloads/NeonNormalizationFloatWorkload.cpp @@ -8,6 +8,8 @@ #include #include +using namespace armnn::armcomputetensorutils; + namespace armnn { @@ -15,11 +17,10 @@ arm_compute::Status NeonNormalizationWorkloadValidate(const TensorInfo& input, const TensorInfo& output, const NormalizationDescriptor& descriptor) { - const arm_compute::TensorInfo aclInput = armcomputetensorutils::BuildArmComputeTensorInfo(input); - const arm_compute::TensorInfo aclOutput = armcomputetensorutils::BuildArmComputeTensorInfo(output); + const arm_compute::TensorInfo aclInput = BuildArmComputeTensorInfo(input, descriptor.m_DataLayout); + const arm_compute::TensorInfo aclOutput = BuildArmComputeTensorInfo(output, descriptor.m_DataLayout); - arm_compute::NormalizationLayerInfo normalizationInfo = - armcomputetensorutils::BuildArmComputeNormalizationLayerInfo(descriptor); + arm_compute::NormalizationLayerInfo normalizationInfo = BuildArmComputeNormalizationLayerInfo(descriptor); return arm_compute::NENormalizationLayer::validate(&aclInput, &aclOutput, normalizationInfo); }