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);
74 BOOST_TEST(inputLayer);
76 unsigned int dims[] = { 10,1,1,1 };
77 std::vector<float> convWeightsData(10);
85 BOOST_TEST(convLayer);
94 BOOST_TEST(fullyConnectedLayer);
100 BOOST_TEST(poolingLayer);
106 BOOST_TEST(activationLayer);
112 BOOST_TEST(normalizationLayer);
118 BOOST_TEST(softmaxLayer);
125 std::vector<float> data(tensorInfo.GetNumBytes() /
sizeof(float));
134 BOOST_TEST(batchNormalizationLayer);
139 BOOST_TEST(additionLayer);
145 BOOST_TEST(multiplicationLayer);
151 BOOST_TEST(outputLayer);
171 auto checkOneOutputToOneInputConnection = []
174 int expectedSrcNumInputs = 1,
175 int expectedDstNumOutputs = 1)
179 BOOST_TEST(tgtLayer->GetNumInputSlots() == 1);
180 BOOST_TEST(tgtLayer->GetNumOutputSlots() == expectedDstNumOutputs);
186 auto checkOneOutputToTwoInputsConnections = []
189 int expectedSrcNumInputs,
190 int expectedDstNumOutputs = 1)
194 BOOST_TEST(tgtLayer->GetNumInputSlots() == 2);
195 BOOST_TEST(tgtLayer->GetNumOutputSlots() == expectedDstNumOutputs);
205 BOOST_TEST(AreAllLayerInputSlotsConnected(*convLayer));
206 BOOST_TEST(AreAllLayerInputSlotsConnected(*fullyConnectedLayer));
207 BOOST_TEST(AreAllLayerInputSlotsConnected(*poolingLayer));
208 BOOST_TEST(AreAllLayerInputSlotsConnected(*activationLayer));
209 BOOST_TEST(AreAllLayerInputSlotsConnected(*normalizationLayer));
210 BOOST_TEST(AreAllLayerInputSlotsConnected(*softmaxLayer));
211 BOOST_TEST(AreAllLayerInputSlotsConnected(*batchNormalizationLayer));
212 BOOST_TEST(AreAllLayerInputSlotsConnected(*additionLayer));
213 BOOST_TEST(AreAllLayerInputSlotsConnected(*multiplicationLayer));
214 BOOST_TEST(AreAllLayerInputSlotsConnected(*outputLayer));
217 checkOneOutputToOneInputConnection(inputLayer, convLayer, 0);
218 checkOneOutputToOneInputConnection(convLayer, fullyConnectedLayer);
219 checkOneOutputToOneInputConnection(fullyConnectedLayer, poolingLayer);
220 checkOneOutputToOneInputConnection(poolingLayer, activationLayer);
221 checkOneOutputToOneInputConnection(activationLayer, normalizationLayer);
222 checkOneOutputToOneInputConnection(normalizationLayer, softmaxLayer);
223 checkOneOutputToOneInputConnection(softmaxLayer, batchNormalizationLayer);
224 checkOneOutputToTwoInputsConnections(batchNormalizationLayer, additionLayer, 1);
225 checkOneOutputToTwoInputsConnections(additionLayer, multiplicationLayer, 2);
226 checkOneOutputToOneInputConnection(multiplicationLayer, outputLayer, 2, 0);
235 BOOST_TEST(inputLayer);
241 BOOST_TEST(splitterLayer);
248 BOOST_TEST(softmaxLayer1);
254 BOOST_TEST(softmaxLayer2);
262 BOOST_TEST(concatLayer);
269 BOOST_TEST(outputLayer);
298 BOOST_TEST(splitterLayer);
305 BOOST_TEST(softmax1Layer);
311 BOOST_TEST(softmax2Layer);
342 BOOST_TEST(splitterLayer);
349 BOOST_TEST(softmax1Layer);
355 BOOST_TEST(softmax2Layer);
384 std::string expectedName = std::string(
"quantize");
385 BOOST_TEST(std::string(layer->
GetName()) == expectedName);
386 BOOST_TEST(std::string(name) == expectedName);
398 bool m_Visited =
false;
404 auto input = graph->AddInputLayer(0,
"input");
405 auto quantize = graph->AddQuantizeLayer(
"quantize");
406 auto output = graph->AddOutputLayer(1,
"output");
408 input->GetOutputSlot(0).Connect(quantize->GetInputSlot(0));
409 quantize->GetOutputSlot(0).Connect(output->GetInputSlot(0));
412 input->GetOutputSlot(0).SetTensorInfo(infoIn);
415 quantize->GetOutputSlot(0).SetTensorInfo(infoOut);
418 graph->Accept(testQuantize);
420 BOOST_TEST(testQuantize.m_Visited ==
true);
434 std::string expectedName = std::string(
"merge");
435 BOOST_TEST(std::string(layer->
GetName()) == expectedName);
436 BOOST_TEST(std::string(name) == expectedName);
451 bool m_Visited =
false;
471 network->Accept(testMerge);
473 BOOST_TEST(testMerge.m_Visited ==
true);
497 floor->GetOutputSlot(0).Connect(standIn->GetInputSlot(0));
499 standIn->GetOutputSlot(0).Connect(output->GetInputSlot(0));
504 BOOST_TEST(input->GetOutputSlot(0).GetConnection(0) == &floor->GetInputSlot(0));
505 BOOST_TEST(floor->GetOutputSlot(0).GetConnection(0) == &standIn->GetInputSlot(0));
506 BOOST_TEST(standIn->GetOutputSlot(0).GetConnection(0) == &output->GetInputSlot(0));
531 standIn->GetOutputSlot(0).Connect(output0->GetInputSlot(0));
532 standIn->GetOutputSlot(1).Connect(output1->GetInputSlot(0));
537 BOOST_TEST(input->GetOutputSlot(0).GetConnection(0) == &standIn->GetInputSlot(0));
538 BOOST_TEST(standIn->GetOutputSlot(0).GetConnection(0) == &output0->GetInputSlot(0));
539 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.
IConnectableLayer * AddPooling2dLayer(const Pooling2dDescriptor &pooling2dDescriptor, const char *name=nullptr) override
Adds a pooling layer to the network.
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.
IConnectableLayer * AddOutputLayer(LayerBindingId id, const char *name=nullptr) override
Adds an output layer to the network.
virtual unsigned int GetNumInputSlots() const =0
Returns the number of connectable input slots.
A Convolution2dDescriptor for the Convolution2dLayer.
const Graph & GetGraph() const
IConnectableLayer * AddFloorLayer(const char *name=nullptr) override
Adds a floor layer to the network.
virtual IConnectableLayer * AddActivationLayer(const ActivationDescriptor &activationDescriptor, const char *name=nullptr)=0
Adds an activation layer to the network.
bool GraphHasNamedLayer(const armnn::Graph &graph, const std::string &name)
IConnectableLayer * AddInputLayer(LayerBindingId id, const char *name=nullptr) override
Adds an input layer to the network.
Main network class which provides the interface for building up a neural network. ...
virtual const IInputSlot * GetConnection(unsigned int index) const =0
IConnectableLayer * AddFullyConnectedLayer(const FullyConnectedDescriptor &fullyConnectedDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Adds a fully connected layer to the network.
void VisitQuantizeLayer(const IConnectableLayer *, const char *) override
Function a quantize layer should call back to when its Accept(ILayerVisitor&) function is invoked...
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
uint32_t m_NumOutputs
Number of output tensors.
IConnectableLayer * AddConvolution2dLayer(const Convolution2dDescriptor &convolution2dDescriptor, const ConstTensor &weights, const Optional< ConstTensor > &biases, const char *name=nullptr) override
Adds a 2D convolution layer to the network.
virtual IConnectableLayer * AddOutputLayer(LayerBindingId id, const char *name=nullptr)=0
Adds an output layer to the network.
virtual IConnectableLayer * AddAdditionLayer(const char *name=nullptr)=0
Adds an addition layer to the network.
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.
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
IConnectableLayer * AddConcatLayer(const ConcatDescriptor &concatDescriptor, const char *name=nullptr) override
Adds a concatenation layer to the network.
IConnectableLayer * AddStandInLayer(const StandInDescriptor &descriptor, const char *name=nullptr) override
Add a stand-in layer for a type unknown to the Arm NN framework.
A StandInDescriptor for the StandIn layer.
IConnectableLayer * AddActivationLayer(const ActivationDescriptor &activationDescriptor, const char *name=nullptr) override
Adds an activation layer to the network.
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
An ActivationDescriptor for the ActivationLayer.
Visitor base class with empty implementations.
IConnectableLayer * AddSplitterLayer(const ViewsDescriptor &splitterDescriptor, const char *name=nullptr) override
Adds a splitter layer to the network.
Status PrintGraph() override
Private implementation of INetwork.
BOOST_AUTO_TEST_SUITE_END()
EmptyOptional is used to initialize the Optional class in case we want to have default value for an O...
IConnectableLayer * AddBatchNormalizationLayer(const BatchNormalizationDescriptor &desc, const ConstTensor &mean, const ConstTensor &variance, const ConstTensor &beta, const ConstTensor &gamma, const char *name=nullptr) override
Adds a batch normalization layer to the network.
BOOST_AUTO_TEST_CASE(LayerGuids)
IConnectableLayer * AddAdditionLayer(const char *name=nullptr) override
Adds an addition layer to the network.
uint32_t m_NumInputs
Number of input tensors.
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
IConnectableLayer * AddMultiplicationLayer(const char *name=nullptr) override
Adds a multiplication layer to the network.
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 * AddNormalizationLayer(const NormalizationDescriptor &normalizationDescriptor, const char *name=nullptr) override
Adds a normalization layer to the network.
virtual int Connect(IInputSlot &destination)=0
A Pooling2dDescriptor for the Pooling2dLayer.
A NormalizationDescriptor for the NormalizationLayer.
size_t GetNumLayers() const
IConnectableLayer * AddSoftmaxLayer(const SoftmaxDescriptor &softmaxDescriptor, const char *name=nullptr) override
Adds a softmax layer to the network.
virtual IConnectableLayer * AddInputLayer(LayerBindingId id, const char *name=nullptr)=0
Adds an input layer to the network.
A SoftmaxDescriptor for the SoftmaxLayer.
static INetworkPtr Create()
A BatchNormalizationDescriptor for the BatchNormalizationLayer.