blob: 79dfe2e26a498b41ef0c4d270b91bf2d171f7eda [file] [log] [blame]
Finn Williamsed66d142019-12-06 09:55:55 +00001//
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
13BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
14
15 struct DequantizeFixture : public ParserFlatbuffersFixture
16 {
17 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 {
78 SimpleDequantizeFixtureQAsymm8() : DequantizeFixture("[ 1, 6 ]",
79 "[ 1, 6 ]",
80 "UINT8") {}
81 };
82
83 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQAsymm8, SimpleDequantizeFixtureQAsymm8)
84 {
Derek Lambertif90c56d2020-01-10 17:14:08 +000085 RunTest<2, armnn::DataType::QAsymmU8 , armnn::DataType::Float32>(
Finn Williamsed66d142019-12-06 09:55:55 +000086 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 {
93 SimpleDequantizeFixtureQSymm16() : DequantizeFixture("[ 1, 6 ]",
94 "[ 1, 6 ]",
95 "INT16") {}
96 };
97
98 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQsymm16, SimpleDequantizeFixtureQSymm16)
99 {
Derek Lambertif90c56d2020-01-10 17:14:08 +0000100 RunTest<2, armnn::DataType::QSymmS16 , armnn::DataType::Float32>(
Finn Williamsed66d142019-12-06 09:55:55 +0000101 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 SimpleDequantizeFixtureQSymmS8 : DequantizeFixture
107 {
108 SimpleDequantizeFixtureQSymmS8() : DequantizeFixture("[ 1, 6 ]",
109 "[ 1, 6 ]",
110 "INT8") {}
111 };
112
113 BOOST_FIXTURE_TEST_CASE(SimpleDequantizeQSymmS8, SimpleDequantizeFixtureQSymmS8)
114 {
115 RunTest<2, armnn::DataType::QSymmS8 , 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
121BOOST_AUTO_TEST_SUITE_END()