blob: 37af71612ba3f831c707c832dcf1825da2988e03 [file] [log] [blame]
Finn Williamsed66d142019-12-06 09:55:55 +00001//
Finn Williamsb49ed182021-06-29 15:50:08 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Finn Williamsed66d142019-12-06 09:55:55 +00003// SPDX-License-Identifier: MIT
4//
5
Finn Williamsed66d142019-12-06 09:55:55 +00006#include "ParserFlatbuffersFixture.hpp"
Finn Williamsed66d142019-12-06 09:55:55 +00007
Finn Williamsed66d142019-12-06 09:55:55 +00008
Sadik Armagan1625efc2021-06-10 18:24:34 +01009TEST_SUITE("TensorflowLiteParser_Dequantize")
10{
Finn Williamsed66d142019-12-06 09:55:55 +000011 struct DequantizeFixture : public ParserFlatbuffersFixture
12 {
13 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 {
74 SimpleDequantizeFixtureQAsymm8() : DequantizeFixture("[ 1, 6 ]",
75 "[ 1, 6 ]",
76 "UINT8") {}
77 };
78
Sadik Armagan1625efc2021-06-10 18:24:34 +010079 TEST_CASE_FIXTURE(SimpleDequantizeFixtureQAsymm8, "SimpleDequantizeQAsymm8")
Finn Williamsed66d142019-12-06 09:55:55 +000080 {
Derek Lambertif90c56d2020-01-10 17:14:08 +000081 RunTest<2, armnn::DataType::QAsymmU8 , armnn::DataType::Float32>(
Finn Williamsed66d142019-12-06 09:55:55 +000082 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 {
89 SimpleDequantizeFixtureQSymm16() : DequantizeFixture("[ 1, 6 ]",
90 "[ 1, 6 ]",
91 "INT16") {}
92 };
93
Sadik Armagan1625efc2021-06-10 18:24:34 +010094 TEST_CASE_FIXTURE(SimpleDequantizeFixtureQSymm16, "SimpleDequantizeQsymm16")
Finn Williamsed66d142019-12-06 09:55:55 +000095 {
Derek Lambertif90c56d2020-01-10 17:14:08 +000096 RunTest<2, armnn::DataType::QSymmS16 , armnn::DataType::Float32>(
Finn Williamsed66d142019-12-06 09:55:55 +000097 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
Keith Davis67e6c542020-02-19 10:08:33 +0000102 struct SimpleDequantizeFixtureQAsymmS8 : DequantizeFixture
Finn Williamsed66d142019-12-06 09:55:55 +0000103 {
Keith Davis67e6c542020-02-19 10:08:33 +0000104 SimpleDequantizeFixtureQAsymmS8() : DequantizeFixture("[ 1, 6 ]",
Finn Williamsed66d142019-12-06 09:55:55 +0000105 "[ 1, 6 ]",
106 "INT8") {}
107 };
108
Sadik Armagan1625efc2021-06-10 18:24:34 +0100109 TEST_CASE_FIXTURE(SimpleDequantizeFixtureQAsymmS8, "SimpleDequantizeQAsymmS8")
Finn Williamsed66d142019-12-06 09:55:55 +0000110 {
Keith Davis67e6c542020-02-19 10:08:33 +0000111 RunTest<2, armnn::DataType::QAsymmS8 , armnn::DataType::Float32>(
Finn Williamsed66d142019-12-06 09:55:55 +0000112 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
Sadik Armagan1625efc2021-06-10 18:24:34 +0100117}