ArmNN
 22.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 618 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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

◆ L2Normalization1dTest()

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

Definition at line 601 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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

◆ 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 635 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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

◆ 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 669 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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

◆ L2Normalization2dShapeTest()

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

Definition at line 703 of file L2NormalizationTestImpl.cpp.

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

Referenced by TEST_SUITE().

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

◆ L2Normalization2dTest()

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

Definition at line 652 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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

◆ 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 686 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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

◆ 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 782 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

787 {
788  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
789  workloadFactory,
790  memoryManager,
791  tensorHandleFactory,
792  1.f,
793  0,
794  1.f,
795  0,
796  layout);
797 }

◆ L2Normalization3dTest()

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

Definition at line 765 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

770 {
771  return L2Normalization3dTestCommon<armnn::DataType::Float32>(
772  workloadFactory,
773  memoryManager,
774  tensorHandleFactory,
775  0.f,
776  0,
777  0.f,
778  0,
779  layout);
780 }

◆ 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 799 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

804 {
805  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
806  workloadFactory,
807  memoryManager,
808  tensorHandleFactory,
809  1.f,
810  0,
811  1.f / 128,
812  128,
813  layout);
814 }

◆ 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 833 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

838 {
839  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
840  workloadFactory,
841  memoryManager,
842  tensorHandleFactory,
843  1.f,
844  0,
845  1.f,
846  0,
847  layout);
848 }

◆ L2Normalization4dTest()

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

Definition at line 816 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

821 {
822  return L2Normalization4dTestCommon<armnn::DataType::Float32>(
823  workloadFactory,
824  memoryManager,
825  tensorHandleFactory,
826  0.f,
827  0,
828  0.f,
829  0,
830  layout);
831 }

◆ 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 850 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

855 {
856  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
857  workloadFactory,
858  memoryManager,
859  tensorHandleFactory,
860  1.f,
861  0,
862  1.f / 128,
863  128,
864  layout);
865 }

◆ L2NormalizationDefaultEpsilonTest()

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

Definition at line 562 of file L2NormalizationTestImpl.cpp.

References L2NormalizationDescriptor::m_Eps.

Referenced by TEST_SUITE().

567 {
568  // Dummy descriptor to get the default value of epsilon.
570 
571  return L2NormalizationEpsilonTestCommon<armnn::DataType::Float32>(
572  workloadFactory,
573  memoryManager,
574  tensorHandleFactory,
575  0.f,
576  0,
577  0.f,
578  0,
579  layout,
580  descriptor.m_Eps);
581 }
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 583 of file L2NormalizationTestImpl.cpp.

Referenced by TEST_SUITE().

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