31 #include <boost/test/unit_test.hpp> 32 #include <boost/test/execution_monitor.hpp> 41 std::vector<float> expectedOutput =
43 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
44 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
47 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(
defaultBackends,
55 std::vector<float> expectedOutput =
57 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
58 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
61 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
69 std::vector<float> expectedOutput =
71 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
72 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
75 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(
defaultBackends,
93 using namespace armnn;
125 auto error = runtime->LoadNetwork(netId, std::move(optNet));
129 std::vector<uint8_t> inputData
133 std::vector<uint8_t> outputData(5);
141 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
145 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
148 BOOST_TEST(outputData[0] == 0);
149 BOOST_TEST(outputData[1] == 0);
150 BOOST_TEST(outputData[2] == 0);
151 BOOST_TEST(outputData[3] == 255);
152 BOOST_TEST(outputData[4] == 0);
159 using namespace armnn;
188 runtime->LoadNetwork(netId, std::move(optNet));
191 std::vector<float> input1Data
193 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
195 std::vector<float> input2Data
197 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
199 std::vector<float> outputData(12);
208 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
212 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
215 BOOST_TEST(outputData[0] == 101);
216 BOOST_TEST(outputData[1] == 202);
217 BOOST_TEST(outputData[2] == 303);
218 BOOST_TEST(outputData[3] == 404);
219 BOOST_TEST(outputData[4] == 505);
220 BOOST_TEST(outputData[5] == 606);
221 BOOST_TEST(outputData[6] == 707);
222 BOOST_TEST(outputData[7] == 808);
223 BOOST_TEST(outputData[8] == 909);
224 BOOST_TEST(outputData[9] == 1010);
225 BOOST_TEST(outputData[10] == 1111);
226 BOOST_TEST(outputData[11] == 1212);
231 using namespace armnn;
245 activation1Descriptor.
m_A = 1.f;
246 activation1Descriptor.
m_B = -1.f;
252 activation2Descriptor.
m_A = 6.0f;
258 activation3Descriptor.
m_A = 5.0f;
259 activation3Descriptor.
m_B = 2.0f;
286 runtime->LoadNetwork(netId, std::move(optNet));
289 const std::vector<float> inputData{ 3.f, 5.f, 2.f, 3.f, 7.f, 0.f, -2.f, -1.f, 3.f, 3.f };
291 std::vector<float> output1Data(inputData.size());
292 std::vector<float> output2Data(inputData.size());
293 std::vector<float> output3Data(inputData.size());
301 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
302 {1,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
303 {2,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
307 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
310 BOOST_TEST(output1Data == std::vector<float>({ 1.f, 1.f, 1.f, 1.f, 1.f, 0.f, -1.f, -1.f, 1.f, 1.f }));
311 BOOST_TEST(output2Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 6.f, 0.f, 0.f, 0.f, 3.f, 3.f }));
312 BOOST_TEST(output3Data == std::vector<float>({ 3.f, 5.f, 2.f, 3.f, 5.f, 2.f, 2.f, 2.f, 3.f, 3.f }));
317 using namespace armnn;
346 runtime->LoadNetwork(netId, std::move(optNet));
349 std::vector<float> input1Data
351 1.0f, 2.0f, 3.0f, 4.0f
353 std::vector<float> input2Data
355 2.0f, 1.0f, 5.0f, 2.0f
357 std::vector<float> outputData(4);
366 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
370 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
373 BOOST_TEST(outputData[0] == 1);
374 BOOST_TEST(outputData[1] == 1);
375 BOOST_TEST(outputData[2] == 3);
376 BOOST_TEST(outputData[3] == 2);
381 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
382 0, 0, 0, 0, 1, 1, 1, 1 });
391 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
392 0, 0, 0, 0, 0, 0, 0, 0 });
401 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
402 0, 0, 0, 0, 1, 1, 1, 1 });
411 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
412 0, 0, 0, 0, 0, 0, 0, 0 });
421 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
431 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
441 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
444 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
451 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
454 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
606 FullyConnectedWithDynamicWeightsEndToEnd<armnn::DataType::Float32>(
defaultBackends);
704 0.0f, 0.0f, 0.0f, 0.0f,
705 0.0f, 1.0f, 0.0f, 0.0f,
706 0.0f, -1.0f, 0.0f, 0.0f,
707 0.0f, 0.0f, 0.0f, 0.0f,
708 0.0f, 1.0f, 0.0f, 0.0f,
709 0.0f, 0.0f, 0.0f, 0.0f
711 std::vector<float>
scores({
720 0.5f, 0.5f, 1.0f, 1.0f,
721 0.5f, 0.5f, 1.0f, 1.0f,
722 0.5f, 0.5f, 1.0f, 1.0f,
723 0.5f, 10.5f, 1.0f, 1.0f,
724 0.5f, 10.5f, 1.0f, 1.0f,
725 0.5f, 100.5f, 1.0f, 1.0f
745 boxEncodingsInfo.SetQuantizationOffset(1);
752 0.0f, 0.0f, 0.0f, 0.0f,
753 0.0f, 1.0f, 0.0f, 0.0f,
754 0.0f, -1.0f, 0.0f, 0.0f,
755 0.0f, 0.0f, 0.0f, 0.0f,
756 0.0f, 1.0f, 0.0f, 0.0f,
757 0.0f, 0.0f, 0.0f, 0.0f
759 std::vector<float>
scores({
768 0.5f, 0.5f, 1.0f, 1.0f,
769 0.5f, 0.5f, 1.0f, 1.0f,
770 0.5f, 0.5f, 1.0f, 1.0f,
771 0.5f, 10.5f, 1.0f, 1.0f,
772 0.5f, 10.5f, 1.0f, 1.0f,
773 0.5f, 100.5f, 1.0f, 1.0f
784 1.0f, 1, 0.01f, 0, 0.5f, 0);
790 0.0f, 0.0f, 0.0f, 0.0f,
791 0.0f, 1.0f, 0.0f, 0.0f,
792 0.0f, -1.0f, 0.0f, 0.0f,
793 0.0f, 0.0f, 0.0f, 0.0f,
794 0.0f, 1.0f, 0.0f, 0.0f,
795 0.0f, 0.0f, 0.0f, 0.0f
797 std::vector<float>
scores({
806 0.5f, 0.5f, 1.0f, 1.0f,
807 0.5f, 0.5f, 1.0f, 1.0f,
808 0.5f, 0.5f, 1.0f, 1.0f,
809 0.5f, 10.5f, 1.0f, 1.0f,
810 0.5f, 10.5f, 1.0f, 1.0f,
811 0.5f, 100.5f, 1.0f, 1.0f
823 boxEncodingsInfo.SetQuantizationOffset(1);
830 0.0f, 0.0f, 0.0f, 0.0f,
831 0.0f, 1.0f, 0.0f, 0.0f,
832 0.0f, -1.0f, 0.0f, 0.0f,
833 0.0f, 0.0f, 0.0f, 0.0f,
834 0.0f, 1.0f, 0.0f, 0.0f,
835 0.0f, 0.0f, 0.0f, 0.0f
837 std::vector<float>
scores({
846 0.5f, 0.5f, 1.0f, 1.0f,
847 0.5f, 0.5f, 1.0f, 1.0f,
848 0.5f, 0.5f, 1.0f, 1.0f,
849 0.5f, 10.5f, 1.0f, 1.0f,
850 0.5f, 10.5f, 1.0f, 1.0f,
851 0.5f, 100.5f, 1.0f, 1.0f
862 1.0f, 1, 0.01f, 0, 0.5f, 0);
1041 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1047 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1053 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1059 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1065 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1071 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1298 #if !defined(__ANDROID__) 1342 armnn::experimental::StridedSlicedEndToEndTest<armnn::DataType::Float32>(
defaultBackends);
1347 armnn::experimental::StridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(
defaultBackends);
1352 armnn::experimental::AsyncScheduledStridedSlicedEndToEndTest<armnn::DataType::Float32>(
defaultBackends);
1358 AsyncScheduledStridedSlicedMultiThreadedEndToEndTest<armnn::DataType::Float32>(
defaultBackends);
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
void SpaceToDepthNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
static IRuntimePtr Create(const CreationOptions &options)
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
CPU Execution: Reference C++ kernels.
void InstanceNormalizationNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
std::vector< armnn::BackendId > defaultBackends
void LogSoftmaxEndToEndTest(const std::vector< armnn::BackendId > &defaultBackends)
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32)
BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
void InstanceNormalizationNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
std::vector< float > boxEncodings({ 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f })
Copyright (c) 2021 ARM Limited and Contributors.
void QLstmEndToEnd(const std::vector< armnn::BackendId > &backends)
void SpaceToDepthNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
void SpaceToDepthNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
void SpaceToDepthNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
Create an optimized version of the network.
std::vector< uint8_t > qBoxEncodings(boxEncodings.size(), 0)
int32_t GetQuantizationOffset() const
float GetQuantizationScale() const
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
void SetQuantizationScale(float scale)
std::vector< uint8_t > qAnchors(anchors.size(), 0)
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
An ActivationDescriptor for the ActivationLayer.
min(a, max(b, input)) ReLu1 & ReLu6.
float m_A
Alpha upper bound value used by the activation functions. (BoundedReLu, Linear, TanH, Elu).
BOOST_AUTO_TEST_SUITE_END()
std::vector< float > scores({ 0.0f, 0.9f, 0.8f, 0.0f, 0.75f, 0.72f, 0.0f, 0.6f, 0.5f, 0.0f, 0.93f, 0.95f, 0.0f, 0.5f, 0.4f, 0.0f, 0.3f, 0.2f })
void QuantizeData(uint8_t *quant, const float *dequant, const TensorInfo &info)
std::vector< uint8_t > qScores(scores.size(), 0)
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
Get a const input slot handle by slot index.
armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
Get the const output slot handle by slot index.
void InstanceNormalizationNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
void SetQuantizationOffset(int32_t offset)
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
virtual int Connect(IInputSlot &destination)=0
static INetworkPtr Create(NetworkOptions networkOptions={})
float m_B
Beta lower bound value used by the activation functions. (BoundedReLu, Linear, TanH).
A SoftmaxDescriptor for the SoftmaxLayer.
ActivationFunction m_Function
The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square, Elu).
unsigned int GetNumElements() const
void InstanceNormalizationNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
std::vector< float > anchors({ 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 0.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 10.5f, 1.0f, 1.0f, 0.5f, 100.5f, 1.0f, 1.0f })