• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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