20 using namespace armnn;
22 class StandInLayerVerifier :
public StrategyBase<NoThrowStrategy>
25 StandInLayerVerifier(
const std::vector<TensorInfo>& inputInfos,
26 const std::vector<TensorInfo>& outputInfos)
27 : m_InputInfos(inputInfos)
28 , m_OutputInfos(outputInfos) {}
32 const std::vector<armnn::ConstTensor>& constants,
43 CHECK(standInDescriptor.m_NumInputs == numInputs);
47 CHECK(standInDescriptor.m_NumOutputs == numOutputs);
50 const StandInLayer* standInLayer = PolymorphicDowncast<const StandInLayer*>(layer);
51 for (
unsigned int i = 0u; i < numInputs; ++i)
53 const OutputSlot* connectedSlot = standInLayer->GetInputSlot(i).GetConnectedOutputSlot();
54 CHECK(connectedSlot !=
nullptr);
57 CHECK(inputInfo == m_InputInfos[i]);
60 for (
unsigned int i = 0u; i < numOutputs; ++i)
63 CHECK(outputInfo == m_OutputInfos[i]);
75 std::vector<TensorInfo> m_InputInfos;
76 std::vector<TensorInfo> m_OutputInfos;
82 explicit DummyCustomFixture(
const std::vector<TensorInfo>& inputInfos,
83 const std::vector<TensorInfo>& outputInfos)
85 , m_StandInLayerVerifier(inputInfos, outputInfos)
97 "builtin_code": "CUSTOM", 98 "custom_code": "DummyCustomOperator" 104 for (
unsigned int i = 0u; i < numInputs; ++i)
109 "shape": )" + GetTensorShapeAsString(inputInfo.GetShape()) + R"(, 110 "type": )" + GetDataTypeAsString(inputInfo.GetDataType()) + R"(, 112 "name": "inputTensor)" + std::to_string(i) + R"(", 123 for (
unsigned int i = 0u; i < numOutputs; ++i)
125 const TensorInfo& outputInfo = outputInfos[i];
128 "shape": )" + GetTensorShapeAsString(outputInfo.GetShape()) + R"(, 129 "type": )" + GetDataTypeAsString(outputInfo.GetDataType()) + R"(, 131 "name": "outputTensor)" + std::to_string(i) + R"(", 140 if (i + 1 < numOutputs)
146 const std::string inputIndices = GetIndicesAsString(0u, numInputs - 1u);
147 const std::string outputIndices = GetIndicesAsString(numInputs, numInputs + numOutputs - 1u);
150 m_JsonString += R
"(], 151 "inputs": )" + inputIndices + R"(, 152 "outputs": )" + outputIndices + R"(, 156 "inputs": )" + inputIndices + R"(, 157 "outputs": )" + outputIndices + R"(, 158 "builtin_options_type": 0, 159 "custom_options": [ ], 160 "custom_options_format": "FLEXBUFFERS" 171 ReadStringToBinary(); 176 INetworkPtr network = m_Parser->CreateNetworkFromBinary(m_GraphBinary);
177 network->ExecuteStrategy(m_StandInLayerVerifier);
181 static std::string GetTensorShapeAsString(
const TensorShape& tensorShape)
183 std::stringstream stream;
187 stream << tensorShape[i];
188 if (i + 1 < tensorShape.GetNumDimensions())
199 static std::string GetDataTypeAsString(
DataType dataType)
205 default:
return "UNKNOWN";
209 static std::string GetIndicesAsString(
unsigned int first,
unsigned int last)
211 std::stringstream stream;
213 for (
unsigned int i = first; i <= last ; ++i)
227 StandInLayerVerifier m_StandInLayerVerifier;
230 class DummyCustom1Input1OutputFixture :
public DummyCustomFixture
233 DummyCustom1Input1OutputFixture()
238 class DummyCustom2Inputs1OutputFixture :
public DummyCustomFixture
241 DummyCustom2Inputs1OutputFixture()
246 TEST_CASE_FIXTURE(DummyCustom1Input1OutputFixture,
"UnsupportedCustomOperator1Input1Output")
251 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.
void IgnoreUnused(Ts &&...)
TEST_SUITE("TensorflowLiteParser_Unsupported")
int LayerBindingId
Type of identifiers for bindable layers (inputs, outputs).
Base class for all descriptors.
Strategy base class with empty implementations.
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.
virtual LayerType GetType() const =0
Returns the armnn::LayerType of this layer.
unsigned int GetNumDimensions() const
Function that returns the tensor rank.
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
const char * GetLayerTypeAsCString(LayerType type)