ArmNN
 21.08
L2NormalizationTestImpl.cpp File Reference

Go to the source code of this file.

Functions

LayerTestResult< float, 4 > L2NormalizationDefaultEpsilonTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2NormalizationNonDefaultEpsilonTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2Normalization1dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization1dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization1dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2Normalization2dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization2dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization2dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< float, 2 > L2Normalization2dShapeTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory)
 
LayerTestResult< float, 4 > L2Normalization3dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization3dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization3dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2Normalization4dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization4dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization4dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::ITensorHandleFactory &tensorHandleFactory, const armnn::DataLayout layout)
 

Function Documentation

◆ L2Normalization1dInt16Test()

LayerTestResult<int16_t, 4> L2Normalization1dInt16Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 616 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

621 {
622  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
623  workloadFactory,
624  memoryManager,
625  tensorHandleFactory,
626  1.f,
627  0,
628  1.f,
629  0,
630  layout);
631 }

◆ L2Normalization1dTest()

LayerTestResult<float, 4> L2Normalization1dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 599 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

604 {
605  return L2Normalization1dTestCommon<armnn::DataType::Float32>(
606  workloadFactory,
607  memoryManager,
608  tensorHandleFactory,
609  0.f,
610  0,
611  0.f,
612  0,
613  layout);
614 }

◆ L2Normalization1dUint8Test()

LayerTestResult<uint8_t, 4> L2Normalization1dUint8Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 633 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

638 {
639  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
640  workloadFactory,
641  memoryManager,
642  tensorHandleFactory,
643  1.f,
644  0,
645  1.f / 128,
646  128,
647  layout);
648 }

◆ L2Normalization2dInt16Test()

LayerTestResult<int16_t, 4> L2Normalization2dInt16Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 667 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

672 {
673  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
674  workloadFactory,
675  memoryManager,
676  tensorHandleFactory,
677  1.f,
678  0,
679  1.f,
680  0,
681  layout);
682 }

◆ L2Normalization2dShapeTest()

LayerTestResult<float, 2> L2Normalization2dShapeTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory 
)

Definition at line 701 of file L2NormalizationTestImpl.cpp.

References CopyDataFromITensorHandle(), CopyDataToITensorHandle(), IWorkloadFactory::CreateL2Normalization(), ITensorHandleFactory::CreateTensorHandle(), armnn::Float32, TensorInfo::GetNumElements(), TensorInfo::GetShape(), L2NormalizationDescriptor::m_DataLayout, L2NormalizationDescriptor::m_Eps, QueueDescriptorWithParameters< LayerDescriptor >::m_Parameters, and armnn::NHWC.

Referenced by TEST_SUITE().

705 {
707  const armnn::TensorShape inputOutputTensorShape = armnn::TensorShape({ 5, 2 });
708 
709  std::vector<float> inputData
710  {
711  1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f
712  };
713  std::vector<float> expectedOutputData
714  {
715  1.0f * CalcInvL2Norm({ 1.0f, 2.0f }),
716  2.0f * CalcInvL2Norm({ 1.0f, 2.0f }),
717  3.0f * CalcInvL2Norm({ 3.0f, 4.0f }),
718  4.0f * CalcInvL2Norm({ 3.0f, 4.0f }),
719  5.0f * CalcInvL2Norm({ 5.0f, 6.0f }),
720  6.0f * CalcInvL2Norm({ 5.0f, 6.0f }),
721  7.0f * CalcInvL2Norm({ 7.0f, 8.0f }),
722  8.0f * CalcInvL2Norm({ 7.0f, 8.0f }),
723  9.0f * CalcInvL2Norm({ 9.0f, 10.0f }),
724  10.0f * CalcInvL2Norm({ 9.0f, 10.0f })
725  };
726 
727  const armnn::TensorInfo inputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32, 0.f, 0);
728  const armnn::TensorInfo outputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32, 0.f, 0);
729 
730  std::vector<float> actualOutput(outputTensorInfo.GetNumElements());
731 
732  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
733  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
734 
736  descriptor.m_Parameters.m_Eps = 1e-12f;
737  descriptor.m_Parameters.m_DataLayout = layout;
739 
740  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
741  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
742 
743  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateL2Normalization(descriptor, info);
744 
745  inputHandle->Allocate();
746  outputHandle->Allocate();
747 
748  CopyDataToITensorHandle(inputHandle.get(), inputData.data());
749 
750  workload->PostAllocationConfigure();
751  ExecuteWorkload(*workload, memoryManager);
752 
753  CopyDataFromITensorHandle(actualOutput.data(), outputHandle.get());
754 
755  return LayerTestResult<float, 2>(actualOutput,
756  expectedOutputData,
757  outputHandle->GetShape(),
758  outputTensorInfo.GetShape());
759 }
float m_Eps
Used to avoid dividing by zero.
virtual std::unique_ptr< IWorkload > CreateL2Normalization(const L2NormalizationQueueDescriptor &descriptor, const WorkloadInfo &info) const
DataLayout
Definition: Types.hpp:53
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
Contains information about TensorInfos of a layer.
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo) const =0
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)

◆ L2Normalization2dTest()

LayerTestResult<float, 4> L2Normalization2dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 650 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

655 {
656  return L2Normalization2dTestCommon<armnn::DataType::Float32>(
657  workloadFactory,
658  memoryManager,
659  tensorHandleFactory,
660  0.f,
661  0,
662  0.f,
663  0,
664  layout);
665 }

◆ L2Normalization2dUint8Test()

LayerTestResult<uint8_t, 4> L2Normalization2dUint8Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 684 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

689 {
690  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
691  workloadFactory,
692  memoryManager,
693  tensorHandleFactory,
694  1.f,
695  0,
696  1.f / 128,
697  128,
698  layout);
699 }

◆ L2Normalization3dInt16Test()

LayerTestResult<int16_t, 4> L2Normalization3dInt16Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 778 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

783 {
784  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
785  workloadFactory,
786  memoryManager,
787  tensorHandleFactory,
788  1.f,
789  0,
790  1.f,
791  0,
792  layout);
793 }

◆ L2Normalization3dTest()

LayerTestResult<float, 4> L2Normalization3dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 761 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

766 {
767  return L2Normalization3dTestCommon<armnn::DataType::Float32>(
768  workloadFactory,
769  memoryManager,
770  tensorHandleFactory,
771  0.f,
772  0,
773  0.f,
774  0,
775  layout);
776 }

◆ L2Normalization3dUint8Test()

LayerTestResult<uint8_t, 4> L2Normalization3dUint8Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 795 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

800 {
801  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
802  workloadFactory,
803  memoryManager,
804  tensorHandleFactory,
805  1.f,
806  0,
807  1.f / 128,
808  128,
809  layout);
810 }

◆ L2Normalization4dInt16Test()

LayerTestResult<int16_t, 4> L2Normalization4dInt16Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 829 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

834 {
835  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
836  workloadFactory,
837  memoryManager,
838  tensorHandleFactory,
839  1.f,
840  0,
841  1.f,
842  0,
843  layout);
844 }

◆ L2Normalization4dTest()

LayerTestResult<float, 4> L2Normalization4dTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 812 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

817 {
818  return L2Normalization4dTestCommon<armnn::DataType::Float32>(
819  workloadFactory,
820  memoryManager,
821  tensorHandleFactory,
822  0.f,
823  0,
824  0.f,
825  0,
826  layout);
827 }

◆ L2Normalization4dUint8Test()

LayerTestResult<uint8_t, 4> L2Normalization4dUint8Test ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 846 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

851 {
852  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
853  workloadFactory,
854  memoryManager,
855  tensorHandleFactory,
856  1.f,
857  0,
858  1.f / 128,
859  128,
860  layout);
861 }

◆ L2NormalizationDefaultEpsilonTest()

LayerTestResult<float, 4> L2NormalizationDefaultEpsilonTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 560 of file L2NormalizationTestImpl.cpp.

References L2NormalizationDescriptor::m_Eps.

Referenced by TEST_SUITE().

565 {
566  // Dummy descriptor to get the default value of epsilon.
568 
569  return L2NormalizationEpsilonTestCommon<armnn::DataType::Float32>(
570  workloadFactory,
571  memoryManager,
572  tensorHandleFactory,
573  0.f,
574  0,
575  0.f,
576  0,
577  layout,
578  descriptor.m_Eps);
579 }
float m_Eps
Used to avoid dividing by zero.
A L2NormalizationDescriptor for the L2NormalizationLayer.

◆ L2NormalizationNonDefaultEpsilonTest()

LayerTestResult<float, 4> L2NormalizationNonDefaultEpsilonTest ( armnn::IWorkloadFactory workloadFactory,
const armnn::IBackendInternal::IMemoryManagerSharedPtr memoryManager,
const armnn::ITensorHandleFactory tensorHandleFactory,
const armnn::DataLayout  layout 
)

Definition at line 581 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

586 {
587  return L2NormalizationEpsilonTestCommon<armnn::DataType::Float32>(
588  workloadFactory,
589  memoryManager,
590  tensorHandleFactory,
591  0.f,
592  0,
593  0.f,
594  0,
595  layout,
596  1e-9f);
597 }