27 #include <boost/test/unit_test.hpp> 28 #include <boost/test/execution_monitor.hpp> 37 std::vector<float> expectedOutput =
39 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
40 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
43 ElementwiseUnarySimpleEndToEnd<armnn::DataType::Float32>(
defaultBackends,
51 std::vector<float> expectedOutput =
53 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
54 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
57 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
65 std::vector<float> expectedOutput =
67 1.f, 1.f, 1.f, 1.f, 5.f, 5.f, 5.f, 5.f,
68 3.f, 3.f, 3.f, 3.f, 4.f, 4.f, 4.f, 4.f
71 ElementwiseUnarySimpleEndToEnd<armnn::DataType::QSymmS16>(
defaultBackends,
89 using namespace armnn;
121 auto error = runtime->LoadNetwork(netId, std::move(optNet));
125 std::vector<uint8_t> inputData
129 std::vector<uint8_t> outputData(5);
137 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
141 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
144 BOOST_TEST(outputData[0] == 0);
145 BOOST_TEST(outputData[1] == 0);
146 BOOST_TEST(outputData[2] == 0);
147 BOOST_TEST(outputData[3] == 255);
148 BOOST_TEST(outputData[4] == 0);
155 using namespace armnn;
184 runtime->LoadNetwork(netId, std::move(optNet));
187 std::vector<float> input1Data
189 1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f
191 std::vector<float> input2Data
193 100.f, 200.f, 300.f, 400.f, 500.f, 600.f, 700.f, 800.f, 900.f, 1000.f, 1100.f, 1200.f
195 std::vector<float> outputData(12);
204 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
208 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
211 BOOST_TEST(outputData[0] == 101);
212 BOOST_TEST(outputData[1] == 202);
213 BOOST_TEST(outputData[2] == 303);
214 BOOST_TEST(outputData[3] == 404);
215 BOOST_TEST(outputData[4] == 505);
216 BOOST_TEST(outputData[5] == 606);
217 BOOST_TEST(outputData[6] == 707);
218 BOOST_TEST(outputData[7] == 808);
219 BOOST_TEST(outputData[8] == 909);
220 BOOST_TEST(outputData[9] == 1010);
221 BOOST_TEST(outputData[10] == 1111);
222 BOOST_TEST(outputData[11] == 1212);
227 using namespace armnn;
241 activation1Descriptor.
m_A = 1.f;
242 activation1Descriptor.
m_B = -1.f;
248 activation2Descriptor.
m_A = 6.0f;
254 activation3Descriptor.
m_A = 5.0f;
255 activation3Descriptor.
m_B = 2.0f;
282 runtime->LoadNetwork(netId, std::move(optNet));
285 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 };
287 std::vector<float> output1Data(inputData.size());
288 std::vector<float> output2Data(inputData.size());
289 std::vector<float> output3Data(inputData.size());
297 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), output1Data.data())},
298 {1,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 1), output2Data.data())},
299 {2,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 2), output3Data.data())}
303 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
306 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 }));
307 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 }));
308 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 }));
313 using namespace armnn;
342 runtime->LoadNetwork(netId, std::move(optNet));
345 std::vector<float> input1Data
347 1.0f, 2.0f, 3.0f, 4.0f
349 std::vector<float> input2Data
351 2.0f, 1.0f, 5.0f, 2.0f
353 std::vector<float> outputData(4);
362 {0,
armnn::Tensor(runtime->GetOutputTensorInfo(netId, 0), outputData.data())}
366 runtime->EnqueueWorkload(netId, inputTensors, outputTensors);
369 BOOST_TEST(outputData[0] == 1);
370 BOOST_TEST(outputData[1] == 1);
371 BOOST_TEST(outputData[2] == 3);
372 BOOST_TEST(outputData[3] == 2);
377 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
378 0, 0, 0, 0, 1, 1, 1, 1 });
387 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
388 0, 0, 0, 0, 0, 0, 0, 0 });
397 const std::vector<uint8_t> expectedOutput({ 1, 1, 1, 1, 0, 0, 0, 0,
398 0, 0, 0, 0, 1, 1, 1, 1 });
407 const std::vector<uint8_t> expectedOutput({ 0, 0, 0, 0, 1, 1, 1, 1,
408 0, 0, 0, 0, 0, 0, 0, 0 });
417 const std::vector<uint8_t> expectedOutput({ 1, 0, 1, 1, 0, 0,
427 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
437 const std::vector<uint8_t > expectedOutput({ 1, 0, 1, 1, 0, 0,
440 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
447 const std::vector<uint8_t> expectedOutput({ 0, 1, 0, 0, 0, 1,
450 ComparisonBroadcastEndToEnd<armnn::DataType::QAsymmU8>(
defaultBackends,
680 0.0f, 0.0f, 0.0f, 0.0f,
681 0.0f, 1.0f, 0.0f, 0.0f,
682 0.0f, -1.0f, 0.0f, 0.0f,
683 0.0f, 0.0f, 0.0f, 0.0f,
684 0.0f, 1.0f, 0.0f, 0.0f,
685 0.0f, 0.0f, 0.0f, 0.0f
687 std::vector<float>
scores({
696 0.5f, 0.5f, 1.0f, 1.0f,
697 0.5f, 0.5f, 1.0f, 1.0f,
698 0.5f, 0.5f, 1.0f, 1.0f,
699 0.5f, 10.5f, 1.0f, 1.0f,
700 0.5f, 10.5f, 1.0f, 1.0f,
701 0.5f, 100.5f, 1.0f, 1.0f
721 boxEncodingsInfo.SetQuantizationOffset(1);
728 0.0f, 0.0f, 0.0f, 0.0f,
729 0.0f, 1.0f, 0.0f, 0.0f,
730 0.0f, -1.0f, 0.0f, 0.0f,
731 0.0f, 0.0f, 0.0f, 0.0f,
732 0.0f, 1.0f, 0.0f, 0.0f,
733 0.0f, 0.0f, 0.0f, 0.0f
735 std::vector<float>
scores({
744 0.5f, 0.5f, 1.0f, 1.0f,
745 0.5f, 0.5f, 1.0f, 1.0f,
746 0.5f, 0.5f, 1.0f, 1.0f,
747 0.5f, 10.5f, 1.0f, 1.0f,
748 0.5f, 10.5f, 1.0f, 1.0f,
749 0.5f, 100.5f, 1.0f, 1.0f
760 1.0f, 1, 0.01f, 0, 0.5f, 0);
766 0.0f, 0.0f, 0.0f, 0.0f,
767 0.0f, 1.0f, 0.0f, 0.0f,
768 0.0f, -1.0f, 0.0f, 0.0f,
769 0.0f, 0.0f, 0.0f, 0.0f,
770 0.0f, 1.0f, 0.0f, 0.0f,
771 0.0f, 0.0f, 0.0f, 0.0f
773 std::vector<float>
scores({
782 0.5f, 0.5f, 1.0f, 1.0f,
783 0.5f, 0.5f, 1.0f, 1.0f,
784 0.5f, 0.5f, 1.0f, 1.0f,
785 0.5f, 10.5f, 1.0f, 1.0f,
786 0.5f, 10.5f, 1.0f, 1.0f,
787 0.5f, 100.5f, 1.0f, 1.0f
799 boxEncodingsInfo.SetQuantizationOffset(1);
806 0.0f, 0.0f, 0.0f, 0.0f,
807 0.0f, 1.0f, 0.0f, 0.0f,
808 0.0f, -1.0f, 0.0f, 0.0f,
809 0.0f, 0.0f, 0.0f, 0.0f,
810 0.0f, 1.0f, 0.0f, 0.0f,
811 0.0f, 0.0f, 0.0f, 0.0f
813 std::vector<float>
scores({
822 0.5f, 0.5f, 1.0f, 1.0f,
823 0.5f, 0.5f, 1.0f, 1.0f,
824 0.5f, 0.5f, 1.0f, 1.0f,
825 0.5f, 10.5f, 1.0f, 1.0f,
826 0.5f, 10.5f, 1.0f, 1.0f,
827 0.5f, 100.5f, 1.0f, 1.0f
838 1.0f, 1, 0.01f, 0, 0.5f, 0);
1017 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1023 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1029 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1035 TransposeConvolution2dEndToEnd<armnn::DataType::Float32, armnn::DataType::Float32>(
1041 TransposeConvolution2dEndToEnd<armnn::DataType::QAsymmU8, armnn::DataType::Signed32>(
1047 TransposeConvolution2dEndToEnd<armnn::DataType::QSymmS16, armnn::DataType::Signed32>(
1244 #if !defined(__ANDROID__) 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) 2020 ARM Limited.
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
armnn::Runtime::CreationOptions::ExternalProfilingOptions options
float m_B
Beta lower bound value used by the activation functions. (BoundedReLu, Linear, TanH).
A SoftmaxDescriptor for the SoftmaxLayer.
static INetworkPtr Create()
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 })