blob: 800edbdf46275b932d3adcacf8dd16752001f5c3 [file] [log] [blame]
Sadik Armagan66dedc72019-12-10 16:32:07 +00001//
Finn Williamsb49ed182021-06-29 15:50:08 +01002// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
Sadik Armagan66dedc72019-12-10 16:32:07 +00003// SPDX-License-Identifier: MIT
4//
5
Sadik Armagan66dedc72019-12-10 16:32:07 +00006#include "ParserFlatbuffersFixture.hpp"
Sadik Armagan66dedc72019-12-10 16:32:07 +00007
Sadik Armagan66dedc72019-12-10 16:32:07 +00008
Sadik Armagan1625efc2021-06-10 18:24:34 +01009TEST_SUITE("TensorflowLiteParser_Quantize")
10{
Sadik Armagan66dedc72019-12-10 16:32:07 +000011 struct QuantizeFixture : public ParserFlatbuffersFixture
12 {
Finn Williamsb49ed182021-06-29 15:50:08 +010013 explicit QuantizeFixture(const std::string& inputShape,
14 const std::string& outputShape,
15 const std::string& dataType,
16 const std::string& zeroPoint = "[ 0 ]")
Sadik Armagan66dedc72019-12-10 16:32:07 +000017 {
18 m_JsonString = R"(
19 {
20 "version": 3,
21 "operator_codes": [ { "builtin_code": "QUANTIZE" } ],
22 "subgraphs": [ {
23 "tensors": [
24 {
25 "shape": )" + inputShape + R"(,
26 "type": "FLOAT32",
27 "buffer": 0,
28 "name": "inputTensor",
29 "quantization": {
30 "min": [ 0.0 ],
31 "max": [ 255.0 ],
32 "scale": [ 1.0 ],
Finn Williamsb49ed182021-06-29 15:50:08 +010033 "zero_point": )" + zeroPoint + R"(,
Sadik Armagan66dedc72019-12-10 16:32:07 +000034 }
35 },
36 {
37 "shape": )" + outputShape + R"( ,
38 "type": )" + dataType + R"(,
39 "buffer": 1,
40 "name": "outputTensor",
41 "quantization": {
42 "min": [ 0.0 ],
43 "max": [ 255.0 ],
44 "scale": [ 1.5 ],
Finn Williamsb49ed182021-06-29 15:50:08 +010045 "zero_point": )" + zeroPoint + R"(,
Sadik Armagan66dedc72019-12-10 16:32:07 +000046 }
47 }
48 ],
49 "inputs": [ 0 ],
50 "outputs": [ 1 ],
51 "operators": [
52 {
53 "opcode_index": 0,
54 "inputs": [ 0 ],
55 "outputs": [ 1 ],
56 "builtin_options_type": "QuantizeOptions",
57 "builtin_options": {
58 },
59 "custom_options_format": "FLEXBUFFERS"
60 }
61 ],
62 } ],
63 "buffers" : [
64 { },
65 { },
66 ]
67 }
68 )";
69 SetupSingleInputSingleOutput("inputTensor", "outputTensor");
70 }
71 };
72
73 struct SimpleQuantizeFixtureQAsymm8 : QuantizeFixture
74 {
75 SimpleQuantizeFixtureQAsymm8() : QuantizeFixture("[ 1, 6 ]",
76 "[ 1, 6 ]",
77 "UINT8") {}
78 };
79
Finn Williamsb49ed182021-06-29 15:50:08 +010080 TEST_CASE_FIXTURE(SimpleQuantizeFixtureQAsymm8, "SimpleQuantizeFixtureQAsymm8")
Sadik Armagan66dedc72019-12-10 16:32:07 +000081 {
Finn Williamsb49ed182021-06-29 15:50:08 +010082 RunTest<2, armnn::DataType::Float32, armnn::DataType::QAsymmU8>(
Sadik Armagan66dedc72019-12-10 16:32:07 +000083 0,
84 {{"inputTensor", { 0.0f, 1.5f, 7.5f, 150.0f, 300.0f, 382.5f }}},
85 {{"outputTensor", { 0u, 1u, 5u, 100u, 200u, 255u }}});
86 }
87
88 struct SimpleQuantizeFixtureQSymm16 : QuantizeFixture
89 {
90 SimpleQuantizeFixtureQSymm16() : QuantizeFixture("[ 1, 6 ]",
91 "[ 1, 6 ]",
92 "INT16") {}
93 };
94
Sadik Armagan1625efc2021-06-10 18:24:34 +010095 TEST_CASE_FIXTURE(SimpleQuantizeFixtureQSymm16, "SimpleQuantizeQsymm16")
Sadik Armagan66dedc72019-12-10 16:32:07 +000096 {
Finn Williamsb49ed182021-06-29 15:50:08 +010097 RunTest<2, armnn::DataType::Float32, armnn::DataType::QSymmS16>(
Sadik Armagan66dedc72019-12-10 16:32:07 +000098 0,
99 {{"inputTensor", { 0.0f, 1.5f, 7.5f, 49150.5f, -1.5f,-49152.0f }}},
100 {{"outputTensor", { 0, 1, 5, 32767, -1, -32768 }}});
101 }
102
103 struct SimpleQuantizeFixtureQSymmS8 : QuantizeFixture
104 {
105 SimpleQuantizeFixtureQSymmS8() : QuantizeFixture("[ 1, 6 ]",
106 "[ 1, 6 ]",
Finn Williamsb49ed182021-06-29 15:50:08 +0100107 "INT8",
108 "[]") {}
Sadik Armagan66dedc72019-12-10 16:32:07 +0000109 };
110
Sadik Armagan1625efc2021-06-10 18:24:34 +0100111 TEST_CASE_FIXTURE(SimpleQuantizeFixtureQSymmS8, "SimpleQuantizeQSymmS8")
Sadik Armagan66dedc72019-12-10 16:32:07 +0000112 {
113 RunTest<2, armnn::DataType::Float32, armnn::DataType::QSymmS8>(
114 0,
115 {{"inputTensor", { 0.0f, 1.5f, 7.5f, 190.5f, -192.0f, -1.5f }}},
116 {{"outputTensor", { 0, 1, 5, 127, -128, -1 }}});
117 }
118
Sadik Armagan1625efc2021-06-10 18:24:34 +0100119}