12 #include <boost/test/unit_test.hpp> 19 bool allConnected =
true;
23 allConnected &= inputConnected;
39 BOOST_TEST(inputId != addId);
40 BOOST_TEST(addId != outputId);
41 BOOST_TEST(inputId != outputId);
53 inet->AddInputLayer(0);
54 inet->AddAdditionLayer();
56 inet->AddOutputLayer(0);
73 BOOST_TEST(inputLayer);
75 unsigned int dims[] = { 10,1,1,1 };
76 std::vector<float> convWeightsData(10);
84 BOOST_TEST(convLayer);
93 BOOST_TEST(fullyConnectedLayer);
99 BOOST_TEST(poolingLayer);
105 BOOST_TEST(activationLayer);
111 BOOST_TEST(normalizationLayer);
117 BOOST_TEST(softmaxLayer);
124 std::vector<float> data(tensorInfo.GetNumBytes() /
sizeof(float));
133 BOOST_TEST(batchNormalizationLayer);
138 BOOST_TEST(additionLayer);
144 BOOST_TEST(multiplicationLayer);
150 BOOST_TEST(outputLayer);
170 auto checkOneOutputToOneInputConnection = []
173 int expectedSrcNumInputs = 1,
174 int expectedDstNumOutputs = 1)
178 BOOST_TEST(tgtLayer->GetNumInputSlots() == 1);
179 BOOST_TEST(tgtLayer->GetNumOutputSlots() == expectedDstNumOutputs);
185 auto checkOneOutputToTwoInputsConnections = []
188 int expectedSrcNumInputs,
189 int expectedDstNumOutputs = 1)
193 BOOST_TEST(tgtLayer->GetNumInputSlots() == 2);
194 BOOST_TEST(tgtLayer->GetNumOutputSlots() == expectedDstNumOutputs);
204 BOOST_TEST(AreAllLayerInputSlotsConnected(*convLayer));
205 BOOST_TEST(AreAllLayerInputSlotsConnected(*fullyConnectedLayer));
206 BOOST_TEST(AreAllLayerInputSlotsConnected(*poolingLayer));
207 BOOST_TEST(AreAllLayerInputSlotsConnected(*activationLayer));
208 BOOST_TEST(AreAllLayerInputSlotsConnected(*normalizationLayer));
209 BOOST_TEST(AreAllLayerInputSlotsConnected(*softmaxLayer));
210 BOOST_TEST(AreAllLayerInputSlotsConnected(*batchNormalizationLayer));
211 BOOST_TEST(AreAllLayerInputSlotsConnected(*additionLayer));
212 BOOST_TEST(AreAllLayerInputSlotsConnected(*multiplicationLayer));
213 BOOST_TEST(AreAllLayerInputSlotsConnected(*outputLayer));
216 checkOneOutputToOneInputConnection(inputLayer, convLayer, 0);
217 checkOneOutputToOneInputConnection(convLayer, fullyConnectedLayer);
218 checkOneOutputToOneInputConnection(fullyConnectedLayer, poolingLayer);
219 checkOneOutputToOneInputConnection(poolingLayer, activationLayer);
220 checkOneOutputToOneInputConnection(activationLayer, normalizationLayer);
221 checkOneOutputToOneInputConnection(normalizationLayer, softmaxLayer);
222 checkOneOutputToOneInputConnection(softmaxLayer, batchNormalizationLayer);
223 checkOneOutputToTwoInputsConnections(batchNormalizationLayer, additionLayer, 1);
224 checkOneOutputToTwoInputsConnections(additionLayer, multiplicationLayer, 2);
225 checkOneOutputToOneInputConnection(multiplicationLayer, outputLayer, 2, 0);
234 BOOST_TEST(inputLayer);
240 BOOST_TEST(splitterLayer);
247 BOOST_TEST(softmaxLayer1);
253 BOOST_TEST(softmaxLayer2);
261 BOOST_TEST(concatLayer);
268 BOOST_TEST(outputLayer);
297 BOOST_TEST(splitterLayer);
304 BOOST_TEST(softmax1Layer);
310 BOOST_TEST(softmax2Layer);
341 BOOST_TEST(splitterLayer);
348 BOOST_TEST(softmax1Layer);
354 BOOST_TEST(softmax2Layer);
383 std::string expectedName = std::string(
"quantize");
384 BOOST_TEST(std::string(layer->
GetName()) == expectedName);
385 BOOST_TEST(std::string(name) == expectedName);
397 bool m_Visited =
false;
403 auto input = graph->AddInputLayer(0,
"input");
404 auto quantize = graph->AddQuantizeLayer(
"quantize");
405 auto output = graph->AddOutputLayer(1,
"output");
407 input->GetOutputSlot(0).Connect(quantize->GetInputSlot(0));
408 quantize->GetOutputSlot(0).Connect(output->GetInputSlot(0));
411 input->GetOutputSlot(0).SetTensorInfo(infoIn);
414 quantize->GetOutputSlot(0).SetTensorInfo(infoOut);
417 graph->Accept(testQuantize);
419 BOOST_TEST(testQuantize.m_Visited ==
true);
433 std::string expectedName = std::string(
"merge");
434 BOOST_TEST(std::string(layer->
GetName()) == expectedName);
435 BOOST_TEST(std::string(name) == expectedName);
450 bool m_Visited =
false;
470 network->Accept(testMerge);
472 BOOST_TEST(testMerge.m_Visited ==
true);
496 floor->GetOutputSlot(0).Connect(standIn->GetInputSlot(0));
498 standIn->GetOutputSlot(0).Connect(output->GetInputSlot(0));
503 BOOST_TEST(input->GetOutputSlot(0).GetConnection(0) == &floor->GetInputSlot(0));
504 BOOST_TEST(floor->GetOutputSlot(0).GetConnection(0) == &standIn->GetInputSlot(0));
505 BOOST_TEST(standIn->GetOutputSlot(0).GetConnection(0) == &output->GetInputSlot(0));
530 standIn->GetOutputSlot(0).Connect(output0->GetInputSlot(0));
531 standIn->GetOutputSlot(1).Connect(output1->GetInputSlot(0));
536 BOOST_TEST(input->GetOutputSlot(0).GetConnection(0) == &standIn->GetInputSlot(0));
537 BOOST_TEST(standIn->GetOutputSlot(0).GetConnection(0) == &output0->GetInputSlot(0));
538 BOOST_TEST(standIn->GetOutputSlot(1).GetConnection(0) == &output1->GetInputSlot(0));
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
virtual unsigned int GetNumOutputSlots() const =0
Returns the number of connectable output slots.
void VisitMergeLayer(const IConnectableLayer *, const char *) override
Function that a merge layer should call back to when its Accept(ILayerVisitor&) function is invoked...
A ViewsDescriptor for the SplitterLayer.
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.
IConnectableLayer * AddAdditionLayer(const char *name=nullptr)
IConnectableLayer * AddPooling2dLayer(const Pooling2dDescriptor &pooling2dDescriptor, const char *name=nullptr)
A Convolution2dDescriptor for the Convolution2dLayer.
IConnectableLayer * AddNormalizationLayer(const NormalizationDescriptor &normalizationDescriptor, const char *name=nullptr)
bool GraphHasNamedLayer(const armnn::Graph &graph, const std::string &name)
IConnectableLayer * AddActivationLayer(const ActivationDescriptor &activationDescriptor, const char *name=nullptr)
virtual const IInputSlot * GetConnection(unsigned int index) const =0
void VisitQuantizeLayer(const IConnectableLayer *, const char *) override
Function a quantize layer should call back to when its Accept(ILayerVisitor&) function is invoked...
Private implementation of INetwork.
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
uint32_t m_NumOutputs
Number of output tensors.
IConnectableLayer * AddFloorLayer(const char *name=nullptr)
IConnectableLayer * AddMultiplicationLayer(const char *name=nullptr)
IConnectableLayer * AddInputLayer(LayerBindingId id, const char *name=nullptr)
DataType GetDataType() const
An OriginsDescriptor for the ConcatLayer.
A FullyConnectedDescriptor for the FullyConnectedLayer.
virtual LayerGuid GetGuid() const =0
Returns the unique id of the layer.
IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &fullyConnectedDescriptor, const Optional< ConstTensor > &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
IConnectableLayer * AddOutputLayer(LayerBindingId id, const char *name=nullptr)
IConnectableLayer * AddConcatLayer(const ConcatDescriptor &concatDescriptor, const char *name=nullptr)
A StandInDescriptor for the StandIn layer.
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
An ActivationDescriptor for the ActivationLayer.
Visitor base class with empty implementations.
IConnectableLayer * AddStandInLayer(const StandInDescriptor &descriptor, const char *name=nullptr)
BOOST_AUTO_TEST_SUITE_END()
EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...
BOOST_AUTO_TEST_CASE(LayerGuids)
IConnectableLayer * AddSoftmaxLayer(const SoftmaxDescriptor &softmaxDescriptor, const char *name=nullptr)
uint32_t m_NumInputs
Number of input tensors.
const Graph & GetGraph() const
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
virtual const TensorInfo & GetTensorInfo() const =0
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
virtual unsigned int GetNumConnections() const =0
virtual const char * GetName() const =0
Returns the name of the layer.
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr)
virtual int Connect(IInputSlot &destination)=0
A Pooling2dDescriptor for the Pooling2dLayer.
A NormalizationDescriptor for the NormalizationLayer.
size_t GetNumLayers() const
IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr)
IConnectableLayer * AddSplitterLayer(const ViewsDescriptor &splitterDescriptor, const char *name=nullptr)
static INetworkPtr Create(NetworkOptions networkOptions={})
A SoftmaxDescriptor for the SoftmaxLayer.
A BatchNormalizationDescriptor for the BatchNormalizationLayer.