25 #include <boost/test/unit_test.hpp> 26 #include <boost/test/execution_monitor.hpp> 35 std::vector<float> expectedOutput =
37 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
38 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
41 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(
defaultBackends,
49 std::vector<float> expectedOutput =
51 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
52 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
55 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
63 std::vector<float> expectedOutput =
65 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
66 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
69 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(
defaultBackends,
87 using namespace armnn;
119 auto error = runtime->LoadNetwork(netId, std::move(optNet));
123 std::vector<uint8_t> inputData
127 std::vector<uint8_t> outputData(5);
135 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
139 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
142 BOOST_TEST(outputData[0] == 0);
143 BOOST_TEST(outputData[1] == 0);
144 BOOST_TEST(outputData[2] == 0);
145 BOOST_TEST(outputData[3] == 255);
146 BOOST_TEST(outputData[4] == 0);
153 using namespace armnn;
182 runtime->LoadNetwork(netId, std::move(optNet));
185 std::vector<float> input1Data
187 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
189 std::vector<float> input2Data
191 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
193 std::vector<float> outputData(12);
202 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
206 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
209 BOOST_TEST(outputData[0] == 101);
210 BOOST_TEST(outputData[1] == 202);
211 BOOST_TEST(outputData[2] == 303);
212 BOOST_TEST(outputData[3] == 404);
213 BOOST_TEST(outputData[4] == 505);
214 BOOST_TEST(outputData[5] == 606);
215 BOOST_TEST(outputData[6] == 707);
216 BOOST_TEST(outputData[7] == 808);
217 BOOST_TEST(outputData[8] == 909);
218 BOOST_TEST(outputData[9] == 1010);
219 BOOST_TEST(outputData[10] == 1111);
220 BOOST_TEST(outputData[11] == 1212);
225 using namespace armnn;
239 activation1Descriptor.
m_A = 1.f;
240 activation1Descriptor.
m_B = -1.f;
246 activation2Descriptor.
m_A = 6.0f;
252 activation3Descriptor.
m_A = 5.0f;
253 activation3Descriptor.
m_B = 2.0f;
280 runtime->LoadNetwork(netId, std::move(optNet));
283 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 };
285 std::vector<float> output1Data(inputData.size());
286 std::vector<float> output2Data(inputData.size());
287 std::vector<float> output3Data(inputData.size());
295 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
296 {1,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
297 {2,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
301 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
304 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 }));
305 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 }));
306 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 }));
311 using namespace armnn;
340 runtime->LoadNetwork(netId, std::move(optNet));
343 std::vector<float> input1Data
345 1.0f, 2.0f, 3.0f, 4.0f
347 std::vector<float> input2Data
349 2.0f, 1.0f, 5.0f, 2.0f
351 std::vector<float> outputData(4);
360 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
364 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
367 BOOST_TEST(outputData[0] == 1);
368 BOOST_TEST(outputData[1] == 1);
369 BOOST_TEST(outputData[2] == 3);
370 BOOST_TEST(outputData[3] == 2);
375 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
376 0, 0, 0, 0, 1, 1, 1, 1 });
385 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
386 0, 0, 0, 0, 0, 0, 0, 0 });
395 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
396 0, 0, 0, 0, 1, 1, 1, 1 });
405 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
406 0, 0, 0, 0, 0, 0, 0, 0 });
415 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
425 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
435 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
438 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
445 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
448 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
648 0.0f, 0.0f, 0.0f, 0.0f,
649 0.0f, 1.0f, 0.0f, 0.0f,
650 0.0f, -1.0f, 0.0f, 0.0f,
651 0.0f, 0.0f, 0.0f, 0.0f,
652 0.0f, 1.0f, 0.0f, 0.0f,
653 0.0f, 0.0f, 0.0f, 0.0f
655 std::vector<float>
scores({
664 0.5f, 0.5f, 1.0f, 1.0f,
665 0.5f, 0.5f, 1.0f, 1.0f,
666 0.5f, 0.5f, 1.0f, 1.0f,
667 0.5f, 10.5f, 1.0f, 1.0f,
668 0.5f, 10.5f, 1.0f, 1.0f,
669 0.5f, 100.5f, 1.0f, 1.0f
689 boxEncodingsInfo.SetQuantizationOffset(1);
696 0.0f, 0.0f, 0.0f, 0.0f,
697 0.0f, 1.0f, 0.0f, 0.0f,
698 0.0f, -1.0f, 0.0f, 0.0f,
699 0.0f, 0.0f, 0.0f, 0.0f,
700 0.0f, 1.0f, 0.0f, 0.0f,
701 0.0f, 0.0f, 0.0f, 0.0f
703 std::vector<float>
scores({
712 0.5f, 0.5f, 1.0f, 1.0f,
713 0.5f, 0.5f, 1.0f, 1.0f,
714 0.5f, 0.5f, 1.0f, 1.0f,
715 0.5f, 10.5f, 1.0f, 1.0f,
716 0.5f, 10.5f, 1.0f, 1.0f,
717 0.5f, 100.5f, 1.0f, 1.0f
728 1.0f, 1, 0.01f, 0, 0.5f, 0);
734 0.0f, 0.0f, 0.0f, 0.0f,
735 0.0f, 1.0f, 0.0f, 0.0f,
736 0.0f, -1.0f, 0.0f, 0.0f,
737 0.0f, 0.0f, 0.0f, 0.0f,
738 0.0f, 1.0f, 0.0f, 0.0f,
739 0.0f, 0.0f, 0.0f, 0.0f
741 std::vector<float>
scores({
750 0.5f, 0.5f, 1.0f, 1.0f,
751 0.5f, 0.5f, 1.0f, 1.0f,
752 0.5f, 0.5f, 1.0f, 1.0f,
753 0.5f, 10.5f, 1.0f, 1.0f,
754 0.5f, 10.5f, 1.0f, 1.0f,
755 0.5f, 100.5f, 1.0f, 1.0f
767 boxEncodingsInfo.SetQuantizationOffset(1);
774 0.0f, 0.0f, 0.0f, 0.0f,
775 0.0f, 1.0f, 0.0f, 0.0f,
776 0.0f, -1.0f, 0.0f, 0.0f,
777 0.0f, 0.0f, 0.0f, 0.0f,
778 0.0f, 1.0f, 0.0f, 0.0f,
779 0.0f, 0.0f, 0.0f, 0.0f
781 std::vector<float>
scores({
790 0.5f, 0.5f, 1.0f, 1.0f,
791 0.5f, 0.5f, 1.0f, 1.0f,
792 0.5f, 0.5f, 1.0f, 1.0f,
793 0.5f, 10.5f, 1.0f, 1.0f,
794 0.5f, 10.5f, 1.0f, 1.0f,
795 0.5f, 100.5f, 1.0f, 1.0f
806 1.0f, 1, 0.01f, 0, 0.5f, 0);
954 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
960 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
966 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
972 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
978 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
984 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1176 #if !defined(__ANDROID__) void SpaceToDepthNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
float m_A
Alpha upper bound value used by the activation functions. (BoundedReLu, Linear, TanH).
virtual const IInputSlot & GetInputSlot(unsigned int index) const =0
int32_t GetQuantizationOffset() const
std::vector< uint8_t > qScores(scores.size(), 0)
void SpaceToDepthNchwEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
A tensor defined by a TensorInfo (shape and data type) and an immutable backing store.
std::vector< std::pair< LayerBindingId, class Tensor > > OutputTensors
IOptimizedNetworkPtr Optimize(const INetwork &network, const std::vector< BackendId > &backendPreferences, const IDeviceSpec &deviceSpec, const OptimizerOptions &options=OptimizerOptions(), Optional< std::vector< std::string > &> messages=EmptyOptional())
BOOST_AUTO_TEST_CASE(RefAbsEndToEndTestFloat32)
BOOST_AUTO_TEST_CASE(CheckConvolution2dLayer)
An ActivationDescriptor for the ActivationLayer.
void InstanceNormalizationNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
void SpaceToDepthNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
void LogSoftmaxEndToEndTest(const std::vector< armnn::BackendId > &defaultBackends)
std::vector< uint8_t > qAnchors(anchors.size(), 0)
virtual void SetTensorInfo(const TensorInfo &tensorInfo)=0
armnn::TensorInfo scoresInfo({ 1, 6, 3 }, armnn::DataType::Float32)
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 })
A tensor defined by a TensorInfo (shape and data type) and a mutable backing store.
float m_B
Beta lower bound value used by the activation functions. (BoundedReLu, Linear, TanH).
std::vector< std::pair< LayerBindingId, class ConstTensor > > InputTensors
void SetQuantizationScale(float scale)
void SpaceToDepthNhwcEndToEndTest1(const std::vector< armnn::BackendId > &defaultBackends)
static INetworkPtr Create()
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 })
std::unique_ptr< INetwork, void(*)(INetwork *network)> INetworkPtr
CPU Execution: Reference C++ kernels.
static IRuntimePtr Create(const CreationOptions &options)
BOOST_AUTO_TEST_SUITE_END()
ActivationFunction m_Function
The activation function to use (Sigmoid, TanH, Linear, ReLu, BoundedReLu, SoftReLu, LeakyReLu, Abs, Sqrt, Square).
A SoftmaxDescriptor for the SoftmaxLayer.
std::vector< uint8_t > qBoxEncodings(boxEncodings.size(), 0)
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 })
unsigned int GetNumElements() const
Interface for a layer that is connectable to other layers via InputSlots and OutputSlots.
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
std::unique_ptr< IOptimizedNetwork, void(*)(IOptimizedNetwork *network)> IOptimizedNetworkPtr
std::vector< armnn::BackendId > defaultBackends
armnn::TensorInfo anchorsInfo({ 6, 4 }, armnn::DataType::Float32)
void InstanceNormalizationNchwEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
void SetQuantizationOffset(int32_t offset)
virtual int Connect(IInputSlot &destination)=0
armnn::Runtime::CreationOptions::ExternalProfilingOptions options
std::unique_ptr< IRuntime, void(*)(IRuntime *runtime)> IRuntimePtr
void InstanceNormalizationNhwcEndToEndTest2(const std::vector< armnn::BackendId > &defaultBackends)
virtual const IOutputSlot & GetOutputSlot(unsigned int index) const =0
float GetQuantizationScale() const
void QuantizeData(uint8_t *quant, const float *dequant, const TensorInfo &info)