7 #include "../TfLiteParser.hpp" 16 #include <boost/test/unit_test.hpp> 24 using namespace armnn;
29 StandInLayerVerifier(
const std::vector<TensorInfo>& inputInfos,
30 const std::vector<TensorInfo>& outputInfos)
32 , m_InputInfos(inputInfos)
33 , m_OutputInfos(outputInfos) {}
51 const StandInLayer* standInLayer = PolymorphicDowncast<const StandInLayer*>(layer);
52 for (
unsigned int i = 0u; i < numInputs; ++i)
54 const OutputSlot* connectedSlot = standInLayer->GetInputSlot(i).GetConnectedOutputSlot();
55 BOOST_CHECK(connectedSlot !=
nullptr);
58 BOOST_CHECK(inputInfo == m_InputInfos[i]);
61 for (
unsigned int i = 0u; i < numOutputs; ++i)
64 BOOST_CHECK(outputInfo == m_OutputInfos[i]);
69 std::vector<TensorInfo> m_InputInfos;
70 std::vector<TensorInfo> m_OutputInfos;
76 explicit DummyCustomFixture(
const std::vector<TensorInfo>& inputInfos,
77 const std::vector<TensorInfo>& outputInfos)
79 , m_StandInLayerVerifier(inputInfos, outputInfos)
91 "builtin_code": "CUSTOM", 92 "custom_code": "DummyCustomOperator" 98 for (
unsigned int i = 0u; i < numInputs; ++i)
103 "shape": )" + GetTensorShapeAsString(inputInfo.GetShape()) + R"(, 104 "type": )" + GetDataTypeAsString(inputInfo.GetDataType()) + R"(, 106 "name": "inputTensor)" + std::to_string(i) + R"(", 117 for (
unsigned int i = 0u; i < numOutputs; ++i)
119 const TensorInfo& outputInfo = outputInfos[i];
122 "shape": )" + GetTensorShapeAsString(outputInfo.GetShape()) + R"(, 123 "type": )" + GetDataTypeAsString(outputInfo.GetDataType()) + R"(, 125 "name": "outputTensor)" + std::to_string(i) + R"(", 134 if (i + 1 < numOutputs)
140 const std::string inputIndices = GetIndicesAsString(0u, numInputs - 1u);
141 const std::string outputIndices = GetIndicesAsString(numInputs, numInputs + numOutputs - 1u);
144 m_JsonString += R
"(], 145 "inputs": )" + inputIndices + R"(, 146 "outputs": )" + outputIndices + R"(, 150 "inputs": )" + inputIndices + R"(, 151 "outputs": )" + outputIndices + R"(, 152 "builtin_options_type": 0, 153 "custom_options": [ ], 154 "custom_options_format": "FLEXBUFFERS" 165 ReadStringToBinary(); 170 INetworkPtr network = m_Parser->CreateNetworkFromBinary(m_GraphBinary);
171 network->Accept(m_StandInLayerVerifier);
175 static std::string GetTensorShapeAsString(
const TensorShape& tensorShape)
177 std::stringstream stream;
181 stream << tensorShape[i];
182 if (i + 1 < tensorShape.GetNumDimensions())
193 static std::string GetDataTypeAsString(
DataType dataType)
199 default:
return "UNKNOWN";
203 static std::string GetIndicesAsString(
unsigned int first,
unsigned int last)
205 std::stringstream stream;
207 for (
unsigned int i = first; i <= last ; ++i)
221 StandInLayerVerifier m_StandInLayerVerifier;
224 class DummyCustom1Input1OutputFixture :
public DummyCustomFixture
227 DummyCustom1Input1OutputFixture()
232 class DummyCustom2Inputs1OutputFixture :
public DummyCustomFixture
235 DummyCustom2Inputs1OutputFixture()
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
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
BOOST_FIXTURE_TEST_CASE(UnsupportedCustomOperator1Input1Output, DummyCustom1Input1OutputFixture)
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.
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.
BOOST_AUTO_TEST_SUITE_END()
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