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