1 // 2 // Copyright © 2019 Arm Ltd. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include <boost/test/unit_test.hpp> 7 #include "ParserFlatbuffersFixture.hpp" 8 #include "../TfLiteParser.hpp" 9 10 #include <string> 11 #include <iostream> 12 13 BOOST_AUTO_TEST_SUITE(TensorflowLiteParser) 14 15 struct DequantizeFixture : public ParserFlatbuffersFixture 16 { DequantizeFixtureDequantizeFixture17 explicit DequantizeFixture(const std::string & inputShape, 18 const std::string & outputShape, 19 const std::string & dataType) 20 { 21 m_JsonString = R"( 22 { 23 "version": 3, 24 "operator_codes": [ { "builtin_code": "DEQUANTIZE" } ], 25 "subgraphs": [ { 26 "tensors": [ 27 { 28 "shape": )" + inputShape + R"(, 29 "type": )" + dataType + R"(, 30 "buffer": 0, 31 "name": "inputTensor", 32 "quantization": { 33 "min": [ 0.0 ], 34 "max": [ 255.0 ], 35 "scale": [ 1.5 ], 36 "zero_point": [ 0 ], 37 } 38 }, 39 { 40 "shape": )" + outputShape + R"( , 41 "type": "FLOAT32", 42 "buffer": 1, 43 "name": "outputTensor", 44 "quantization": { 45 "min": [ 0.0 ], 46 "max": [ 255.0 ], 47 "scale": [ 1.0 ], 48 "zero_point": [ 0 ], 49 } 50 } 51 ], 52 "inputs": [ 0 ], 53 "outputs": [ 1 ], 54 "operators": [ 55 { 56 "opcode_index": 0, 57 "inputs": [ 0 ], 58 "outputs": [ 1 ], 59 "builtin_options_type": "DequantizeOptions", 60 "builtin_options": { 61 }, 62 "custom_options_format": "FLEXBUFFERS" 63 } 64 ], 65 } ], 66 "buffers" : [ 67 { }, 68 { }, 69 ] 70 } 71 )"; 72 SetupSingleInputSingleOutput("inputTensor", "outputTensor"); 73 } 74 }; 75 76 struct SimpleDequantizeFixtureQAsymm8 : DequantizeFixture 77 { SimpleDequantizeFixtureQAsymm8SimpleDequantizeFixtureQAsymm878 SimpleDequantizeFixtureQAsymm8() : DequantizeFixture("[ 1, 6 ]", 79 "[ 1, 6 ]", 80 "UINT8") {} 81 }; 82 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQAsymm8,SimpleDequantizeFixtureQAsymm8)83 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQAsymm8, SimpleDequantizeFixtureQAsymm8) 84 { 85 RunTest<2, armnn::DataType::QAsymmU8 , armnn::DataType::Float32>( 86 0, 87 {{"inputTensor", { 0u, 1u, 5u, 100u, 200u, 255u }}}, 88 {{"outputTensor", { 0.0f, 1.5f, 7.5f, 150.0f, 300.0f, 382.5f }}}); 89 } 90 91 struct SimpleDequantizeFixtureQSymm16 : DequantizeFixture 92 { SimpleDequantizeFixtureQSymm16SimpleDequantizeFixtureQSymm1693 SimpleDequantizeFixtureQSymm16() : DequantizeFixture("[ 1, 6 ]", 94 "[ 1, 6 ]", 95 "INT16") {} 96 }; 97 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQsymm16,SimpleDequantizeFixtureQSymm16)98 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQsymm16, SimpleDequantizeFixtureQSymm16) 99 { 100 RunTest<2, armnn::DataType::QSymmS16 , armnn::DataType::Float32>( 101 0, 102 {{"inputTensor", { 0, 1, 5, 32767, -1, -32768 }}}, 103 {{"outputTensor", { 0.0f, 1.5f, 7.5f, 49150.5f, -1.5f,-49152.0f }}}); 104 } 105 106 struct SimpleDequantizeFixtureQAsymmS8 : DequantizeFixture 107 { SimpleDequantizeFixtureQAsymmS8SimpleDequantizeFixtureQAsymmS8108 SimpleDequantizeFixtureQAsymmS8() : DequantizeFixture("[ 1, 6 ]", 109 "[ 1, 6 ]", 110 "INT8") {} 111 }; 112 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQAsymmS8,SimpleDequantizeFixtureQAsymmS8)113 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQAsymmS8, SimpleDequantizeFixtureQAsymmS8) 114 { 115 RunTest<2, armnn::DataType::QAsymmS8 , armnn::DataType::Float32>( 116 0, 117 {{"inputTensor", { 0, 1, 5, 127, -128, -1 }}}, 118 {{"outputTensor", { 0.0f, 1.5f, 7.5f, 190.5f, -192.0f, -1.5f }}}); 119 } 120 121 BOOST_AUTO_TEST_SUITE_END() 122