ArmNN
 22.02
LayerVerifierBase Class Reference

#include <SerializerTestUtils.hpp>

Inheritance diagram for LayerVerifierBase:
IStrategy LayerVerifierBaseWithDescriptor< Descriptor > LayerVerifierBaseWithDescriptorAndConstants< Descriptor >

Public Member Functions

 LayerVerifierBase (const std::string &layerName, const std::vector< armnn::TensorInfo > &inputInfos, const std::vector< armnn::TensorInfo > &outputInfos)
 
void ExecuteStrategy (const armnn::IConnectableLayer *layer, const armnn::BaseDescriptor &descriptor, const std::vector< armnn::ConstTensor > &constants, const char *name, const armnn::LayerBindingId id=0) override
 
- Public Member Functions inherited from IStrategy
virtual void ExecuteStrategy (const armnn::IConnectableLayer *layer, const armnn::BaseDescriptor &descriptor, const std::vector< armnn::ConstTensor > &constants, const char *name, const armnn::LayerBindingId id=0)=0
 
virtual void FinishStrategy ()
 

Protected Member Functions

void VerifyNameAndConnections (const armnn::IConnectableLayer *layer, const char *name)
 
void VerifyConstTensors (const std::string &tensorName, const armnn::ConstTensor *expectedPtr, const armnn::ConstTensor *actualPtr)
 
- Protected Member Functions inherited from IStrategy
 IStrategy ()
 
virtual ~IStrategy ()
 

Detailed Description

Definition at line 24 of file SerializerTestUtils.hpp.

Constructor & Destructor Documentation

◆ LayerVerifierBase()

LayerVerifierBase ( const std::string &  layerName,
const std::vector< armnn::TensorInfo > &  inputInfos,
const std::vector< armnn::TensorInfo > &  outputInfos 
)

Definition at line 13 of file SerializerTestUtils.cpp.

Referenced by TEST_SUITE().

16  : m_LayerName(layerName)
17  , m_InputTensorInfos(inputInfos)
18  , m_OutputTensorInfos(outputInfos)
19 {}

Member Function Documentation

◆ ExecuteStrategy()

void ExecuteStrategy ( const armnn::IConnectableLayer layer,
const armnn::BaseDescriptor descriptor,
const std::vector< armnn::ConstTensor > &  constants,
const char *  name,
const armnn::LayerBindingId  id = 0 
)
override

Definition at line 21 of file SerializerTestUtils.cpp.

References IConnectableLayer::GetType(), armnn::IgnoreUnused(), armnn::Input, armnn::Output, and VerifyNameAndConnections().

Referenced by TEST_SUITE().

26 {
27  armnn::IgnoreUnused(descriptor, constants, id);
28  switch (layer->GetType())
29  {
30  case armnn::LayerType::Input: break;
31  case armnn::LayerType::Output: break;
32  default:
33  {
34  VerifyNameAndConnections(layer, name);
35  }
36  }
37 }
void IgnoreUnused(Ts &&...)
void VerifyNameAndConnections(const armnn::IConnectableLayer *layer, const char *name)
virtual LayerType GetType() const =0
Returns the armnn::LayerType of this layer.

◆ VerifyConstTensors()

void VerifyConstTensors ( const std::string &  tensorName,
const armnn::ConstTensor expectedPtr,
const armnn::ConstTensor actualPtr 
)
protected

Definition at line 72 of file SerializerTestUtils.cpp.

References TensorInfo::GetDataType(), armnn::GetDataTypeName(), BaseTensor< MemoryType >::GetInfo(), BaseTensor< MemoryType >::GetMemoryArea(), BaseTensor< MemoryType >::GetNumBytes(), and TensorInfo::GetShape().

Referenced by TEST_SUITE().

75 {
76  if (expectedPtr == nullptr)
77  {
78  CHECK_MESSAGE(actualPtr == nullptr, (tensorName + " should not exist"));
79  }
80  else
81  {
82  CHECK_MESSAGE(actualPtr != nullptr, (tensorName + " should have been set"));
83  if (actualPtr != nullptr)
84  {
85  const armnn::TensorInfo& expectedInfo = expectedPtr->GetInfo();
86  const armnn::TensorInfo& actualInfo = actualPtr->GetInfo();
87 
88  CHECK_MESSAGE(expectedInfo.GetShape() == actualInfo.GetShape(),
89  (tensorName + " shapes don't match"));
90  CHECK_MESSAGE(
91  GetDataTypeName(expectedInfo.GetDataType()) == GetDataTypeName(actualInfo.GetDataType()),
92  (tensorName + " data types don't match"));
93 
94  CHECK_MESSAGE(expectedPtr->GetNumBytes() == actualPtr->GetNumBytes(),
95  (tensorName + " (GetNumBytes) data sizes do not match"));
96  if (expectedPtr->GetNumBytes() == actualPtr->GetNumBytes())
97  {
98  //check the data is identical
99  const char* expectedData = static_cast<const char*>(expectedPtr->GetMemoryArea());
100  const char* actualData = static_cast<const char*>(actualPtr->GetMemoryArea());
101  bool same = true;
102  for (unsigned int i = 0; i < expectedPtr->GetNumBytes(); ++i)
103  {
104  same = expectedData[i] == actualData[i];
105  if (!same)
106  {
107  break;
108  }
109  }
110  CHECK_MESSAGE(same, (tensorName + " data does not match"));
111  }
112  }
113  }
114 }
const TensorShape & GetShape() const
Definition: Tensor.hpp:191
MemoryType GetMemoryArea() const
Definition: Tensor.hpp:305
constexpr const char * GetDataTypeName(DataType dataType)
Definition: TypesUtils.hpp:202
DataType GetDataType() const
Definition: Tensor.hpp:198
const TensorInfo & GetInfo() const
Definition: Tensor.hpp:295
unsigned int GetNumBytes() const
Definition: Tensor.hpp:302

◆ VerifyNameAndConnections()

void VerifyNameAndConnections ( const armnn::IConnectableLayer layer,
const char *  name 
)
protected

Definition at line 40 of file SerializerTestUtils.cpp.

References IInputSlot::GetConnection(), TensorInfo::GetDataType(), armnn::GetDataTypeName(), IConnectableLayer::GetInputSlot(), IConnectableLayer::GetNumInputSlots(), IConnectableLayer::GetNumOutputSlots(), IConnectableLayer::GetOutputSlot(), TensorInfo::GetQuantizationOffset(), TensorInfo::GetQuantizationScale(), TensorInfo::GetShape(), and IOutputSlot::GetTensorInfo().

Referenced by ExecuteStrategy(), LayerVerifierBaseWithDescriptor< Descriptor >::ExecuteStrategy(), LayerVerifierBaseWithDescriptorAndConstants< Descriptor >::ExecuteStrategy(), and TEST_SUITE().

41 {
42  CHECK(std::string(name) == m_LayerName.c_str());
43 
44  CHECK(layer->GetNumInputSlots() == m_InputTensorInfos.size());
45  CHECK(layer->GetNumOutputSlots() == m_OutputTensorInfos.size());
46 
47  for (unsigned int i = 0; i < m_InputTensorInfos.size(); i++)
48  {
49  const armnn::IOutputSlot* connectedOutput = layer->GetInputSlot(i).GetConnection();
50  CHECK(connectedOutput);
51 
52  const armnn::TensorInfo& connectedInfo = connectedOutput->GetTensorInfo();
53  CHECK(connectedInfo.GetShape() == m_InputTensorInfos[i].GetShape());
54  CHECK(
55  GetDataTypeName(connectedInfo.GetDataType()) == GetDataTypeName(m_InputTensorInfos[i].GetDataType()));
56 
57  CHECK(connectedInfo.GetQuantizationScale() == m_InputTensorInfos[i].GetQuantizationScale());
58  CHECK(connectedInfo.GetQuantizationOffset() == m_InputTensorInfos[i].GetQuantizationOffset());
59  }
60 
61  for (unsigned int i = 0; i < m_OutputTensorInfos.size(); i++)
62  {
63  const armnn::TensorInfo& outputInfo = layer->GetOutputSlot(i).GetTensorInfo();
64  CHECK(outputInfo.GetShape() == m_OutputTensorInfos[i].GetShape());
65  CHECK(GetDataTypeName(outputInfo.GetDataType()) == GetDataTypeName(m_OutputTensorInfos[i].GetDataType()));
66 
67  CHECK(outputInfo.GetQuantizationScale() == m_OutputTensorInfos[i].GetQuantizationScale());
68  CHECK(outputInfo.GetQuantizationOffset() == m_OutputTensorInfos[i].GetQuantizationOffset());
69  }
70 }
virtual unsigned int GetNumOutputSlots() const =0
Returns the number of connectable output slots.
virtual unsigned int GetNumInputSlots() const =0
Returns the number of connectable input slots.
const TensorShape & GetShape() const
Definition: Tensor.hpp:191
constexpr const char * GetDataTypeName(DataType dataType)
Definition: TypesUtils.hpp:202
An output connection slot for a layer.
Definition: INetwork.hpp:40
int32_t GetQuantizationOffset() const
Definition: Tensor.cpp:480
float GetQuantizationScale() const
Definition: Tensor.cpp:463
DataType GetDataType() const
Definition: Tensor.hpp:198
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
virtual const IOutputSlot * GetConnection() const =0
virtual const TensorInfo & GetTensorInfo() const =0
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.

The documentation for this class was generated from the following files: