ArmNN
 20.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::DataLayout layout)
 
LayerTestResult< float, 4 > L2NormalizationNonDefaultEpsilonTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2Normalization1dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization1dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization1dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2Normalization2dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization2dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization2dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< float, 2 > L2Normalization2dShapeTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager)
 
LayerTestResult< float, 4 > L2Normalization3dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization3dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization3dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< float, 4 > L2Normalization4dTest (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< int16_t, 4 > L2Normalization4dInt16Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 
LayerTestResult< uint8_t, 4 > L2Normalization4dUint8Test (armnn::IWorkloadFactory &workloadFactory, const armnn::IBackendInternal::IMemoryManagerSharedPtr &memoryManager, const armnn::DataLayout layout)
 

Function Documentation

◆ L2Normalization1dInt16Test()

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

Definition at line 599 of file L2NormalizationTestImpl.cpp.

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

◆ L2Normalization1dTest()

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

Definition at line 584 of file L2NormalizationTestImpl.cpp.

588 {
589  return L2Normalization1dTestCommon<armnn::DataType::Float32>(
590  workloadFactory,
591  memoryManager,
592  0.f,
593  0,
594  0.f,
595  0,
596  layout);
597 }

◆ L2Normalization1dUint8Test()

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

Definition at line 614 of file L2NormalizationTestImpl.cpp.

618 {
619  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
620  workloadFactory,
621  memoryManager,
622  1.f,
623  0,
624  1.f / 128,
625  128,
626  layout);
627 }

◆ L2Normalization2dInt16Test()

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

Definition at line 644 of file L2NormalizationTestImpl.cpp.

648 {
649  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
650  workloadFactory,
651  memoryManager,
652  1.f,
653  0,
654  1.f,
655  0,
656  layout);
657 }

◆ L2Normalization2dShapeTest()

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

Definition at line 674 of file L2NormalizationTestImpl.cpp.

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

677 {
679  const armnn::TensorShape inputOutputTensorShape = armnn::TensorShape({ 5, 2 });
680 
681  std::vector<float> inputData
682  {
683  1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f
684  };
685  std::vector<float> expectedOutputData
686  {
687  1.0f * CalcInvL2Norm({ 1.0f, 2.0f }),
688  2.0f * CalcInvL2Norm({ 1.0f, 2.0f }),
689  3.0f * CalcInvL2Norm({ 3.0f, 4.0f }),
690  4.0f * CalcInvL2Norm({ 3.0f, 4.0f }),
691  5.0f * CalcInvL2Norm({ 5.0f, 6.0f }),
692  6.0f * CalcInvL2Norm({ 5.0f, 6.0f }),
693  7.0f * CalcInvL2Norm({ 7.0f, 8.0f }),
694  8.0f * CalcInvL2Norm({ 7.0f, 8.0f }),
695  9.0f * CalcInvL2Norm({ 9.0f, 10.0f }),
696  10.0f * CalcInvL2Norm({ 9.0f, 10.0f })
697  };
698 
699  const armnn::TensorInfo inputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32, 0.f, 0);
700  const armnn::TensorInfo outputTensorInfo(inputOutputTensorShape, armnn::DataType::Float32, 0.f, 0);
701 
702  auto inputTensor = MakeTensor<float, 2>(inputTensorInfo, inputData);
703 
704  LayerTestResult<float, 2> result(outputTensorInfo);
705  result.outputExpected = MakeTensor<float, 2>(outputTensorInfo, expectedOutputData);
706 
708  std::unique_ptr<armnn::ITensorHandle> inputHandle = workloadFactory.CreateTensorHandle(inputTensorInfo);
709  std::unique_ptr<armnn::ITensorHandle> outputHandle = workloadFactory.CreateTensorHandle(outputTensorInfo);
711 
713  descriptor.m_Parameters.m_Eps = 1e-12f;
714  descriptor.m_Parameters.m_DataLayout = layout;
716 
717  AddInputToWorkload(descriptor, info, inputTensorInfo, inputHandle.get());
718  AddOutputToWorkload(descriptor, info, outputTensorInfo, outputHandle.get());
719 
720  std::unique_ptr<armnn::IWorkload> workload = workloadFactory.CreateL2Normalization(descriptor, info);
721 
722  inputHandle->Allocate();
723  outputHandle->Allocate();
724 
725  CopyDataToITensorHandle(inputHandle.get(), &inputTensor[0][0]);
726 
727  workload->PostAllocationConfigure();
728  ExecuteWorkload(*workload, memoryManager);
729 
730  CopyDataFromITensorHandle(&result.output[0][0], outputHandle.get());
731 
732  return result;
733 }
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:49
#define ARMNN_NO_DEPRECATE_WARN_BEGIN
Definition: Deprecated.hpp:33
#define ARMNN_NO_DEPRECATE_WARN_END
Definition: Deprecated.hpp:34
void CopyDataFromITensorHandle(void *memory, const armnn::ITensorHandle *tensorHandle)
virtual std::unique_ptr< ITensorHandle > CreateTensorHandle(const TensorInfo &tensorInfo, const bool IsMemoryManaged=true) const =0
Contains information about inputs and outputs to a layer.
void CopyDataToITensorHandle(armnn::ITensorHandle *tensorHandle, const void *memory)

◆ L2Normalization2dTest()

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

Definition at line 629 of file L2NormalizationTestImpl.cpp.

633 {
634  return L2Normalization2dTestCommon<armnn::DataType::Float32>(
635  workloadFactory,
636  memoryManager,
637  0.f,
638  0,
639  0.f,
640  0,
641  layout);
642 }

◆ L2Normalization2dUint8Test()

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

Definition at line 659 of file L2NormalizationTestImpl.cpp.

663 {
664  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
665  workloadFactory,
666  memoryManager,
667  1.f,
668  0,
669  1.f / 128,
670  128,
671  layout);
672 }

◆ L2Normalization3dInt16Test()

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

Definition at line 750 of file L2NormalizationTestImpl.cpp.

754 {
755  return L2Normalization1dTestCommon<armnn::DataType::QSymmS16>(
756  workloadFactory,
757  memoryManager,
758  1.f,
759  0,
760  1.f,
761  0,
762  layout);
763 }

◆ L2Normalization3dTest()

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

Definition at line 735 of file L2NormalizationTestImpl.cpp.

739 {
740  return L2Normalization3dTestCommon<armnn::DataType::Float32>(
741  workloadFactory,
742  memoryManager,
743  0.f,
744  0,
745  0.f,
746  0,
747  layout);
748 }

◆ L2Normalization3dUint8Test()

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

Definition at line 765 of file L2NormalizationTestImpl.cpp.

769 {
770  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
771  workloadFactory,
772  memoryManager,
773  1.f,
774  0,
775  1.f / 128,
776  128,
777  layout);
778 }

◆ L2Normalization4dInt16Test()

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

Definition at line 795 of file L2NormalizationTestImpl.cpp.

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

◆ L2Normalization4dTest()

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

Definition at line 780 of file L2NormalizationTestImpl.cpp.

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

◆ L2Normalization4dUint8Test()

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

Definition at line 810 of file L2NormalizationTestImpl.cpp.

814 {
815  return L2Normalization1dTestCommon<armnn::DataType::QAsymmU8>(
816  workloadFactory,
817  memoryManager,
818  1.f,
819  0,
820  1.f / 128,
821  128,
822  layout);
823 }

◆ L2NormalizationDefaultEpsilonTest()

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

Definition at line 549 of file L2NormalizationTestImpl.cpp.

References L2NormalizationDescriptor::m_Eps.

553 {
554  // Dummy descriptor to get the default value of epsilon.
556 
557  return L2NormalizationEpsilonTestCommon<armnn::DataType::Float32>(
558  workloadFactory,
559  memoryManager,
560  0.f,
561  0,
562  0.f,
563  0,
564  layout,
565  descriptor.m_Eps);
566 }
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::DataLayout  layout 
)

Definition at line 568 of file L2NormalizationTestImpl.cpp.

572 {
573  return L2NormalizationEpsilonTestCommon<armnn::DataType::Float32>(
574  workloadFactory,
575  memoryManager,
576  0.f,
577  0,
578  0.f,
579  0,
580  layout,
581  1e-9f);
582 }