20 using namespace armnn;
25 StandInLayerVerifier(
const std::vector<TensorInfo>& inputInfos,
26 const std::vector<TensorInfo>& outputInfos)
28 , m_InputInfos(inputInfos)
29 , m_OutputInfos(outputInfos) {}
47 const StandInLayer* standInLayer = PolymorphicDowncast<const StandInLayer*>(layer);
48 for (
unsigned int i = 0u; i < numInputs; ++i)
50 const OutputSlot* connectedSlot = standInLayer->GetInputSlot(i).GetConnectedOutputSlot();
51 CHECK(connectedSlot !=
nullptr);
54 CHECK(inputInfo == m_InputInfos[i]);
57 for (
unsigned int i = 0u; i < numOutputs; ++i)
60 CHECK(outputInfo == m_OutputInfos[i]);
65 std::vector<TensorInfo> m_InputInfos;
66 std::vector<TensorInfo> m_OutputInfos;
72 explicit DummyCustomFixture(
const std::vector<TensorInfo>& inputInfos,
73 const std::vector<TensorInfo>& outputInfos)
75 , m_StandInLayerVerifier(inputInfos, outputInfos)
87 "builtin_code": "CUSTOM", 88 "custom_code": "DummyCustomOperator" 94 for (
unsigned int i = 0u; i < numInputs; ++i)
99 "shape": )" + GetTensorShapeAsString(inputInfo.GetShape()) + R"(, 100 "type": )" + GetDataTypeAsString(inputInfo.GetDataType()) + R"(, 102 "name": "inputTensor)" + std::to_string(i) + R"(", 113 for (
unsigned int i = 0u; i < numOutputs; ++i)
115 const TensorInfo& outputInfo = outputInfos[i];
118 "shape": )" + GetTensorShapeAsString(outputInfo.GetShape()) + R"(, 119 "type": )" + GetDataTypeAsString(outputInfo.GetDataType()) + R"(, 121 "name": "outputTensor)" + std::to_string(i) + R"(", 130 if (i + 1 < numOutputs)
136 const std::string inputIndices = GetIndicesAsString(0u, numInputs - 1u);
137 const std::string outputIndices = GetIndicesAsString(numInputs, numInputs + numOutputs - 1u);
140 m_JsonString += R
"(], 141 "inputs": )" + inputIndices + R"(, 142 "outputs": )" + outputIndices + R"(, 146 "inputs": )" + inputIndices + R"(, 147 "outputs": )" + outputIndices + R"(, 148 "builtin_options_type": 0, 149 "custom_options": [ ], 150 "custom_options_format": "FLEXBUFFERS" 161 ReadStringToBinary(); 166 INetworkPtr network = m_Parser->CreateNetworkFromBinary(m_GraphBinary);
167 network->Accept(m_StandInLayerVerifier);
171 static std::string GetTensorShapeAsString(
const TensorShape& tensorShape)
173 std::stringstream stream;
177 stream << tensorShape[i];
178 if (i + 1 < tensorShape.GetNumDimensions())
189 static std::string GetDataTypeAsString(
DataType dataType)
195 default:
return "UNKNOWN";
199 static std::string GetIndicesAsString(
unsigned int first,
unsigned int last)
201 std::stringstream stream;
203 for (
unsigned int i = first; i <= last ; ++i)
217 StandInLayerVerifier m_StandInLayerVerifier;
220 class DummyCustom1Input1OutputFixture :
public DummyCustomFixture
223 DummyCustom1Input1OutputFixture()
228 class DummyCustom2Inputs1OutputFixture :
public DummyCustomFixture
231 DummyCustom2Inputs1OutputFixture()
236 TEST_CASE_FIXTURE(DummyCustom1Input1OutputFixture,
"UnsupportedCustomOperator1Input1Output")
241 TEST_CASE_FIXTURE(DummyCustom2Inputs1OutputFixture,
"UnsupportedCustomOperator2Inputs1Output")
virtual unsigned int GetNumOutputSlots() const =0
Returns the number of connectable output slots.
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
virtual unsigned int GetNumInputSlots() const =0
Returns the number of connectable input slots.
const TensorShape & GetShape() const
This layer represents an unknown operation in the input graph.
Copyright (c) 2021 ARM Limited and Contributors.
int LayerBindingId
Type of identifiers for bindable layers (inputs, outputs).
uint32_t m_NumOutputs
Number of output tensors.
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
int32_t GetQuantizationOffset() const
float GetQuantizationScale() const
DataType GetDataType() const
#define ARMNN_ASSERT(COND)
A StandInDescriptor for the StandIn layer.
Visitor base class with empty implementations.
unsigned int GetNumDimensions() const
Function that returns the tensor rank.
uint32_t m_NumInputs
Number of input tensors.
std::enable_if_t< std::is_unsigned< Source >::value &&std::is_unsigned< Dest >::value, Dest > numeric_cast(Source source)
virtual const TensorInfo & GetTensorInfo() const =0
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
const TensorInfo & GetTensorInfo() const override