ArmNN
 21.02
L2NormalizationTestImpl.hpp 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 614 of file L2NormalizationTestImpl.cpp.

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

◆ L2Normalization1dTest()

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

Definition at line 597 of file L2NormalizationTestImpl.cpp.

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

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

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

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

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

◆ L2Normalization2dShapeTest()

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

Definition at line 699 of file L2NormalizationTestImpl.cpp.

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

703 {
705  const armnn::TensorShape inputOutputTensorShape = armnn::TensorShape({ 5, 2 });
706 
707  std::vector<float> inputData
708  {
709  1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f
710  };
711  std::vector<float> expectedOutputData
712  {
713  1.0f * CalcInvL2Norm({ 1.0f, 2.0f }),
714  2.0f * CalcInvL2Norm({ 1.0f, 2.0f }),
715  3.0f * CalcInvL2Norm({ 3.0f, 4.0f }),
716  4.0f * CalcInvL2Norm({ 3.0f, 4.0f }),
717  5.0f * CalcInvL2Norm({ 5.0f, 6.0f }),
718  6.0f * CalcInvL2Norm({ 5.0f, 6.0f }),
719  7.0f * CalcInvL2Norm({ 7.0f, 8.0f }),
720  8.0f * CalcInvL2Norm({ 7.0f, 8.0f }),
721  9.0f * CalcInvL2Norm({ 9.0f, 10.0f }),
722  10.0f * CalcInvL2Norm({ 9.0f, 10.0f })
723  };
724 
725  const armnn::TensorInfo inputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32, 0.f, 0);
726  const armnn::TensorInfo outputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32, 0.f, 0);
727 
728  auto inputTensor = MakeTensor<float, 2>(inputTensorInfo, inputData);
729 
730  LayerTestResult<float, 2> result(outputTensorInfo);
731  result.outputExpected = MakeTensor<float, 2>(outputTensorInfo, expectedOutputData);
732 
733  std::unique_ptr<armnn::ITensorHandle> inputHandle = tensorHandleFactory.CreateTensorHandle(inputTensorInfo);
734  std::unique_ptr<armnn::ITensorHandle> outputHandle = tensorHandleFactory.CreateTensorHandle(outputTensorInfo);
735 
737  descriptor.m_Parameters.m_Eps = 1e-12f;
738  descriptor.m_Parameters.m_DataLayout = layout;
740 
741  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
742  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
743 
744  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateL2Normalization(descriptor, info);
745 
746  inputHandle->Allocate();
747  outputHandle->Allocate();
748 
749  CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0]);
750 
751  workload->PostAllocationConfigure();
752  ExecuteWorkload(*workload, memoryManager);
753 
754  CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
755 
756  return result;
757 }
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:50
DataLayout m_DataLayout
The data layout to be used (NCHW, NHWC).
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
Contains information about inputs and outputs to 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 648 of file L2NormalizationTestImpl.cpp.

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

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

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

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

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

◆ L2Normalization3dTest()

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

Definition at line 759 of file L2NormalizationTestImpl.cpp.

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

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

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

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

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

◆ L2Normalization4dTest()

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

Definition at line 810 of file L2NormalizationTestImpl.cpp.

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

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

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

◆ L2NormalizationDefaultEpsilonTest()

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

Definition at line 558 of file L2NormalizationTestImpl.cpp.

References L2NormalizationDescriptor::m_Eps.

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

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