xref: /aosp_15_r20/external/armnn/src/armnnTfLiteParser/test/TransposeConv.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd and Contributors. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker 
6*89c4ff92SAndroid Build Coastguard Worker #include "ParserFlatbuffersFixture.hpp"
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("TensorflowLiteParser_TransposeConv")
9*89c4ff92SAndroid Build Coastguard Worker {
10*89c4ff92SAndroid Build Coastguard Worker struct TransposeConvFixture : public ParserFlatbuffersFixture
11*89c4ff92SAndroid Build Coastguard Worker {
TransposeConvFixtureTransposeConvFixture12*89c4ff92SAndroid Build Coastguard Worker     explicit TransposeConvFixture(const std::string& inputShape,
13*89c4ff92SAndroid Build Coastguard Worker                                   const std::string& outputShape,
14*89c4ff92SAndroid Build Coastguard Worker                                   const std::string& filterShape,
15*89c4ff92SAndroid Build Coastguard Worker                                   const std::string& filterData,
16*89c4ff92SAndroid Build Coastguard Worker                                   const std::string& strideX,
17*89c4ff92SAndroid Build Coastguard Worker                                   const std::string& strideY,
18*89c4ff92SAndroid Build Coastguard Worker                                   const std::string& dataType)
19*89c4ff92SAndroid Build Coastguard Worker     {
20*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
21*89c4ff92SAndroid Build Coastguard Worker             {
22*89c4ff92SAndroid Build Coastguard Worker                 "version": 3,
23*89c4ff92SAndroid Build Coastguard Worker                 "operator_codes": [ { "builtin_code": "TRANSPOSE_CONV" } ],
24*89c4ff92SAndroid Build Coastguard Worker                 "subgraphs": [ {
25*89c4ff92SAndroid Build Coastguard Worker                     "tensors": [
26*89c4ff92SAndroid Build Coastguard Worker                         {
27*89c4ff92SAndroid Build Coastguard Worker                             "shape": [ 4 ],
28*89c4ff92SAndroid Build Coastguard Worker                             "type": "UINT8",
29*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 0,
30*89c4ff92SAndroid Build Coastguard Worker                             "name": "outputShapeTensor",
31*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
32*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
33*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
34*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
35*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
36*89c4ff92SAndroid Build Coastguard Worker                             }
37*89c4ff92SAndroid Build Coastguard Worker                         },
38*89c4ff92SAndroid Build Coastguard Worker                         {
39*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + filterShape + R"(,
40*89c4ff92SAndroid Build Coastguard Worker                             "type": ")" + dataType + R"(",
41*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 1,
42*89c4ff92SAndroid Build Coastguard Worker                             "name": "filterTensor",
43*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
44*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
45*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
46*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
47*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
48*89c4ff92SAndroid Build Coastguard Worker                             }
49*89c4ff92SAndroid Build Coastguard Worker                         },
50*89c4ff92SAndroid Build Coastguard Worker                         {
51*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + inputShape + R"(,
52*89c4ff92SAndroid Build Coastguard Worker                             "type": ")" + dataType + R"(",
53*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 2,
54*89c4ff92SAndroid Build Coastguard Worker                             "name": "inputTensor",
55*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
56*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
57*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
58*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
59*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
60*89c4ff92SAndroid Build Coastguard Worker                             }
61*89c4ff92SAndroid Build Coastguard Worker                         },
62*89c4ff92SAndroid Build Coastguard Worker                         {
63*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + outputShape + R"(,
64*89c4ff92SAndroid Build Coastguard Worker                             "type": ")" + dataType + R"(",
65*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 3,
66*89c4ff92SAndroid Build Coastguard Worker                             "name": "outputTensor",
67*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
68*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
69*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
70*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
71*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
72*89c4ff92SAndroid Build Coastguard Worker                             }
73*89c4ff92SAndroid Build Coastguard Worker                         }
74*89c4ff92SAndroid Build Coastguard Worker                     ],
75*89c4ff92SAndroid Build Coastguard Worker                     "inputs": [ 2 ],
76*89c4ff92SAndroid Build Coastguard Worker                     "outputs": [ 3 ],
77*89c4ff92SAndroid Build Coastguard Worker                     "operators": [
78*89c4ff92SAndroid Build Coastguard Worker                         {
79*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 0,
80*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [ 0, 1, 2 ],
81*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [ 3 ],
82*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "TransposeConvOptions",
83*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
84*89c4ff92SAndroid Build Coastguard Worker                                 "padding": "VALID",
85*89c4ff92SAndroid Build Coastguard Worker                                 "stride_w": )" + strideX + R"(,
86*89c4ff92SAndroid Build Coastguard Worker                                 "stride_h": )" + strideY + R"(
87*89c4ff92SAndroid Build Coastguard Worker                             },
88*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
89*89c4ff92SAndroid Build Coastguard Worker                         }
90*89c4ff92SAndroid Build Coastguard Worker                     ],
91*89c4ff92SAndroid Build Coastguard Worker                 } ],
92*89c4ff92SAndroid Build Coastguard Worker                 "buffers" : [
93*89c4ff92SAndroid Build Coastguard Worker                     { "data": )" + outputShape + R"( },
94*89c4ff92SAndroid Build Coastguard Worker                     { "data": )" + filterData + R"( },
95*89c4ff92SAndroid Build Coastguard Worker                     { },
96*89c4ff92SAndroid Build Coastguard Worker                     { }
97*89c4ff92SAndroid Build Coastguard Worker                 ]
98*89c4ff92SAndroid Build Coastguard Worker             }
99*89c4ff92SAndroid Build Coastguard Worker         )";
100*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("inputTensor", "outputTensor");
101*89c4ff92SAndroid Build Coastguard Worker     }
102*89c4ff92SAndroid Build Coastguard Worker };
103*89c4ff92SAndroid Build Coastguard Worker 
104*89c4ff92SAndroid Build Coastguard Worker struct SimpleTransposeConvFixture : TransposeConvFixture
105*89c4ff92SAndroid Build Coastguard Worker {
SimpleTransposeConvFixtureSimpleTransposeConvFixture106*89c4ff92SAndroid Build Coastguard Worker     SimpleTransposeConvFixture()
107*89c4ff92SAndroid Build Coastguard Worker     : TransposeConvFixture("[ 1, 2, 2, 1 ]",  // inputShape
108*89c4ff92SAndroid Build Coastguard Worker                            "[ 1, 3, 3, 1 ]",  // outputShape
109*89c4ff92SAndroid Build Coastguard Worker                            "[ 1, 2, 2, 1 ]",  // filterShape
110*89c4ff92SAndroid Build Coastguard Worker                            "[ 0, 1, 2, 4 ]",  // filterData
111*89c4ff92SAndroid Build Coastguard Worker                            "1",               // strideX
112*89c4ff92SAndroid Build Coastguard Worker                            "1",               // strideY
113*89c4ff92SAndroid Build Coastguard Worker                            "UINT8")           // dataType
114*89c4ff92SAndroid Build Coastguard Worker     {}
115*89c4ff92SAndroid Build Coastguard Worker };
116*89c4ff92SAndroid Build Coastguard Worker 
117*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleTransposeConvFixture, "ParseSimpleTransposeConv")
118*89c4ff92SAndroid Build Coastguard Worker {
119*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::QAsymmU8>(
120*89c4ff92SAndroid Build Coastguard Worker         0,
121*89c4ff92SAndroid Build Coastguard Worker         {
122*89c4ff92SAndroid Build Coastguard Worker             1, 2,
123*89c4ff92SAndroid Build Coastguard Worker             3, 4
124*89c4ff92SAndroid Build Coastguard Worker         },
125*89c4ff92SAndroid Build Coastguard Worker         {
126*89c4ff92SAndroid Build Coastguard Worker             0, 1,  2,
127*89c4ff92SAndroid Build Coastguard Worker             2, 11, 12,
128*89c4ff92SAndroid Build Coastguard Worker             6, 20, 16
129*89c4ff92SAndroid Build Coastguard Worker         });
130*89c4ff92SAndroid Build Coastguard Worker }
131*89c4ff92SAndroid Build Coastguard Worker 
132*89c4ff92SAndroid Build Coastguard Worker struct TransposeConvFixtureWithBias : public ParserFlatbuffersFixture
133*89c4ff92SAndroid Build Coastguard Worker {
TransposeConvFixtureWithBiasTransposeConvFixtureWithBias134*89c4ff92SAndroid Build Coastguard Worker     explicit TransposeConvFixtureWithBias(const std::string& inputShape,
135*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& outputShape,
136*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& filterShape,
137*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& filterData,
138*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& strideX,
139*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& strideY,
140*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& dataType,
141*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& biasShape,
142*89c4ff92SAndroid Build Coastguard Worker                                           const std::string& biasData)
143*89c4ff92SAndroid Build Coastguard Worker     {
144*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
145*89c4ff92SAndroid Build Coastguard Worker             {
146*89c4ff92SAndroid Build Coastguard Worker                 "version": 3,
147*89c4ff92SAndroid Build Coastguard Worker                 "operator_codes": [ { "builtin_code": "TRANSPOSE_CONV" } ],
148*89c4ff92SAndroid Build Coastguard Worker                 "subgraphs": [ {
149*89c4ff92SAndroid Build Coastguard Worker                     "tensors": [
150*89c4ff92SAndroid Build Coastguard Worker                         {
151*89c4ff92SAndroid Build Coastguard Worker                             "shape": [ 4 ],
152*89c4ff92SAndroid Build Coastguard Worker                             "type": "UINT8",
153*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 0,
154*89c4ff92SAndroid Build Coastguard Worker                             "name": "outputShapeTensor",
155*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
156*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
157*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
158*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
159*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
160*89c4ff92SAndroid Build Coastguard Worker                             }
161*89c4ff92SAndroid Build Coastguard Worker                         },
162*89c4ff92SAndroid Build Coastguard Worker                         {
163*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + filterShape + R"(,
164*89c4ff92SAndroid Build Coastguard Worker                             "type": ")" + dataType + R"(",
165*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 1,
166*89c4ff92SAndroid Build Coastguard Worker                             "name": "filterTensor",
167*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
168*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
169*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
170*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
171*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
172*89c4ff92SAndroid Build Coastguard Worker                             }
173*89c4ff92SAndroid Build Coastguard Worker                         },
174*89c4ff92SAndroid Build Coastguard Worker                         {
175*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + inputShape + R"(,
176*89c4ff92SAndroid Build Coastguard Worker                             "type": ")" + dataType + R"(",
177*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 2,
178*89c4ff92SAndroid Build Coastguard Worker                             "name": "inputTensor",
179*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
180*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
181*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
182*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
183*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
184*89c4ff92SAndroid Build Coastguard Worker                             }
185*89c4ff92SAndroid Build Coastguard Worker                         },
186*89c4ff92SAndroid Build Coastguard Worker                         {
187*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + biasShape + R"( ,
188*89c4ff92SAndroid Build Coastguard Worker                             "type": "INT32",
189*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 3,
190*89c4ff92SAndroid Build Coastguard Worker                             "name": "biasTensor",
191*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
192*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
193*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
194*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
195*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
196*89c4ff92SAndroid Build Coastguard Worker                             }
197*89c4ff92SAndroid Build Coastguard Worker                         },
198*89c4ff92SAndroid Build Coastguard Worker                         {
199*89c4ff92SAndroid Build Coastguard Worker                             "shape": )" + outputShape + R"(,
200*89c4ff92SAndroid Build Coastguard Worker                             "type": ")" + dataType + R"(",
201*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 4,
202*89c4ff92SAndroid Build Coastguard Worker                             "name": "outputTensor",
203*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
204*89c4ff92SAndroid Build Coastguard Worker                                 "min": [ 0.0 ],
205*89c4ff92SAndroid Build Coastguard Worker                                 "max": [ 255.0 ],
206*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [ 1.0 ],
207*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [ 0 ],
208*89c4ff92SAndroid Build Coastguard Worker                             }
209*89c4ff92SAndroid Build Coastguard Worker                         }
210*89c4ff92SAndroid Build Coastguard Worker                     ],
211*89c4ff92SAndroid Build Coastguard Worker                     "inputs": [ 2 ],
212*89c4ff92SAndroid Build Coastguard Worker                     "outputs": [ 4 ],
213*89c4ff92SAndroid Build Coastguard Worker                     "operators": [
214*89c4ff92SAndroid Build Coastguard Worker                         {
215*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 0,
216*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [ 0, 1, 2, 3],
217*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [ 4 ],
218*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "TransposeConvOptions",
219*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
220*89c4ff92SAndroid Build Coastguard Worker                                 "padding": "VALID",
221*89c4ff92SAndroid Build Coastguard Worker                                 "stride_w": )" + strideX + R"(,
222*89c4ff92SAndroid Build Coastguard Worker                                 "stride_h": )" + strideY + R"(
223*89c4ff92SAndroid Build Coastguard Worker                             },
224*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
225*89c4ff92SAndroid Build Coastguard Worker                         }
226*89c4ff92SAndroid Build Coastguard Worker                     ],
227*89c4ff92SAndroid Build Coastguard Worker                 } ],
228*89c4ff92SAndroid Build Coastguard Worker                 "buffers" : [
229*89c4ff92SAndroid Build Coastguard Worker                     { "data": )" + outputShape + R"( },
230*89c4ff92SAndroid Build Coastguard Worker                     { "data": )" + filterData + R"( },
231*89c4ff92SAndroid Build Coastguard Worker                     { },
232*89c4ff92SAndroid Build Coastguard Worker                     { "data": )" + biasData + R"( },
233*89c4ff92SAndroid Build Coastguard Worker                     { }
234*89c4ff92SAndroid Build Coastguard Worker                 ]
235*89c4ff92SAndroid Build Coastguard Worker             }
236*89c4ff92SAndroid Build Coastguard Worker         )";
237*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("inputTensor", "outputTensor");
238*89c4ff92SAndroid Build Coastguard Worker     }
239*89c4ff92SAndroid Build Coastguard Worker };
240*89c4ff92SAndroid Build Coastguard Worker 
241*89c4ff92SAndroid Build Coastguard Worker struct SimpleTransposeConvFixtureWithBias : TransposeConvFixtureWithBias
242*89c4ff92SAndroid Build Coastguard Worker {
SimpleTransposeConvFixtureWithBiasSimpleTransposeConvFixtureWithBias243*89c4ff92SAndroid Build Coastguard Worker     SimpleTransposeConvFixtureWithBias()
244*89c4ff92SAndroid Build Coastguard Worker     : TransposeConvFixtureWithBias("[ 1, 2, 2, 1 ]",  // inputShape
245*89c4ff92SAndroid Build Coastguard Worker                                    "[ 1, 3, 3, 1 ]",  // outputShape
246*89c4ff92SAndroid Build Coastguard Worker                                    "[ 1, 2, 2, 1 ]",  // filterShape
247*89c4ff92SAndroid Build Coastguard Worker                                    "[ 0, 1, 2, 4 ]",  // filterData
248*89c4ff92SAndroid Build Coastguard Worker                                    "1",               // strideX
249*89c4ff92SAndroid Build Coastguard Worker                                    "1",               // strideY
250*89c4ff92SAndroid Build Coastguard Worker                                    "UINT8",           // dataType
251*89c4ff92SAndroid Build Coastguard Worker                                    "[ 1 ]",           // bias shape
252*89c4ff92SAndroid Build Coastguard Worker                                    "[ 10, 0, 0, 0 ]") // bias data
253*89c4ff92SAndroid Build Coastguard Worker     {}
254*89c4ff92SAndroid Build Coastguard Worker };
255*89c4ff92SAndroid Build Coastguard Worker 
256*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleTransposeConvFixtureWithBias, "ParseSimpleTransposeConvWithBias")
257*89c4ff92SAndroid Build Coastguard Worker {
258*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::QAsymmU8>(
259*89c4ff92SAndroid Build Coastguard Worker         0,
260*89c4ff92SAndroid Build Coastguard Worker         {
261*89c4ff92SAndroid Build Coastguard Worker             1, 2,
262*89c4ff92SAndroid Build Coastguard Worker             3, 4
263*89c4ff92SAndroid Build Coastguard Worker         },
264*89c4ff92SAndroid Build Coastguard Worker         {
265*89c4ff92SAndroid Build Coastguard Worker             10, 11, 12,
266*89c4ff92SAndroid Build Coastguard Worker             12, 21, 22,
267*89c4ff92SAndroid Build Coastguard Worker             16, 30, 26
268*89c4ff92SAndroid Build Coastguard Worker         });
269*89c4ff92SAndroid Build Coastguard Worker }
270*89c4ff92SAndroid Build Coastguard Worker 
271*89c4ff92SAndroid Build Coastguard Worker 
272*89c4ff92SAndroid Build Coastguard Worker struct TransposeConvPerChannelFixture : public ParserFlatbuffersFixture
273*89c4ff92SAndroid Build Coastguard Worker {
TransposeConvPerChannelFixtureTransposeConvPerChannelFixture274*89c4ff92SAndroid Build Coastguard Worker     explicit TransposeConvPerChannelFixture()
275*89c4ff92SAndroid Build Coastguard Worker     {
276*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
277*89c4ff92SAndroid Build Coastguard Worker         {
278*89c4ff92SAndroid Build Coastguard Worker             "version": 3,
279*89c4ff92SAndroid Build Coastguard Worker             "operator_codes": [
280*89c4ff92SAndroid Build Coastguard Worker                 {
281*89c4ff92SAndroid Build Coastguard Worker                     "builtin_code": "TRANSPOSE_CONV",
282*89c4ff92SAndroid Build Coastguard Worker                     "version": 2
283*89c4ff92SAndroid Build Coastguard Worker                 }
284*89c4ff92SAndroid Build Coastguard Worker             ],
285*89c4ff92SAndroid Build Coastguard Worker             "subgraphs": [
286*89c4ff92SAndroid Build Coastguard Worker                 {
287*89c4ff92SAndroid Build Coastguard Worker                     "tensors": [
288*89c4ff92SAndroid Build Coastguard Worker                         {
289*89c4ff92SAndroid Build Coastguard Worker                             "shape": [
290*89c4ff92SAndroid Build Coastguard Worker                                 1,
291*89c4ff92SAndroid Build Coastguard Worker                                 4,
292*89c4ff92SAndroid Build Coastguard Worker                                 4,
293*89c4ff92SAndroid Build Coastguard Worker                                 2
294*89c4ff92SAndroid Build Coastguard Worker                             ],
295*89c4ff92SAndroid Build Coastguard Worker                             "type": "INT8",
296*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 1,
297*89c4ff92SAndroid Build Coastguard Worker                             "name": "input",
298*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
299*89c4ff92SAndroid Build Coastguard Worker                                 "min": [
300*89c4ff92SAndroid Build Coastguard Worker                                     -50.0
301*89c4ff92SAndroid Build Coastguard Worker                                 ],
302*89c4ff92SAndroid Build Coastguard Worker                                 "max": [
303*89c4ff92SAndroid Build Coastguard Worker                                     49.0
304*89c4ff92SAndroid Build Coastguard Worker                                 ],
305*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [
306*89c4ff92SAndroid Build Coastguard Worker                                     0.388235
307*89c4ff92SAndroid Build Coastguard Worker                                 ],
308*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [
309*89c4ff92SAndroid Build Coastguard Worker                                     1
310*89c4ff92SAndroid Build Coastguard Worker                                 ],
311*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": "NONE",
312*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
313*89c4ff92SAndroid Build Coastguard Worker                             },
314*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
315*89c4ff92SAndroid Build Coastguard Worker                         },
316*89c4ff92SAndroid Build Coastguard Worker                         {
317*89c4ff92SAndroid Build Coastguard Worker                             "shape": [
318*89c4ff92SAndroid Build Coastguard Worker                                 4
319*89c4ff92SAndroid Build Coastguard Worker                             ],
320*89c4ff92SAndroid Build Coastguard Worker                             "type": "INT32",
321*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 2,
322*89c4ff92SAndroid Build Coastguard Worker                             "name": "model/conv2d_transpose/stack",
323*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
324*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": "NONE",
325*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
326*89c4ff92SAndroid Build Coastguard Worker                             },
327*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
328*89c4ff92SAndroid Build Coastguard Worker                         },
329*89c4ff92SAndroid Build Coastguard Worker                         {
330*89c4ff92SAndroid Build Coastguard Worker                             "shape": [
331*89c4ff92SAndroid Build Coastguard Worker                                 8,
332*89c4ff92SAndroid Build Coastguard Worker                                 2,
333*89c4ff92SAndroid Build Coastguard Worker                                 2,
334*89c4ff92SAndroid Build Coastguard Worker                                 2
335*89c4ff92SAndroid Build Coastguard Worker                             ],
336*89c4ff92SAndroid Build Coastguard Worker                             "type": "INT8",
337*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 3,
338*89c4ff92SAndroid Build Coastguard Worker                             "name": "model/conv2d_transpose/conv2d_transpose",
339*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
340*89c4ff92SAndroid Build Coastguard Worker                                 "min": [
341*89c4ff92SAndroid Build Coastguard Worker                                     -0.081948,
342*89c4ff92SAndroid Build Coastguard Worker                                     -0.379918,
343*89c4ff92SAndroid Build Coastguard Worker                                     -0.223632,
344*89c4ff92SAndroid Build Coastguard Worker                                     -0.098629,
345*89c4ff92SAndroid Build Coastguard Worker                                     -0.386369,
346*89c4ff92SAndroid Build Coastguard Worker                                     -0.351057,
347*89c4ff92SAndroid Build Coastguard Worker                                     -0.348749,
348*89c4ff92SAndroid Build Coastguard Worker                                     -0.264848
349*89c4ff92SAndroid Build Coastguard Worker                                 ],
350*89c4ff92SAndroid Build Coastguard Worker                                 "max": [
351*89c4ff92SAndroid Build Coastguard Worker                                     0.35091,
352*89c4ff92SAndroid Build Coastguard Worker                                     0.229681,
353*89c4ff92SAndroid Build Coastguard Worker                                     0.368384,
354*89c4ff92SAndroid Build Coastguard Worker                                     0.176761,
355*89c4ff92SAndroid Build Coastguard Worker                                     0.353717,
356*89c4ff92SAndroid Build Coastguard Worker                                     0.377565,
357*89c4ff92SAndroid Build Coastguard Worker                                     0.373713,
358*89c4ff92SAndroid Build Coastguard Worker                                     0.30141
359*89c4ff92SAndroid Build Coastguard Worker                                 ],
360*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [
361*89c4ff92SAndroid Build Coastguard Worker                                     0.002763,
362*89c4ff92SAndroid Build Coastguard Worker                                     0.002991,
363*89c4ff92SAndroid Build Coastguard Worker                                     0.002901,
364*89c4ff92SAndroid Build Coastguard Worker                                     0.001392,
365*89c4ff92SAndroid Build Coastguard Worker                                     0.003042,
366*89c4ff92SAndroid Build Coastguard Worker                                     0.002973,
367*89c4ff92SAndroid Build Coastguard Worker                                     0.002943,
368*89c4ff92SAndroid Build Coastguard Worker                                     0.002373
369*89c4ff92SAndroid Build Coastguard Worker                                 ],
370*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [
371*89c4ff92SAndroid Build Coastguard Worker                                     0,
372*89c4ff92SAndroid Build Coastguard Worker                                     0,
373*89c4ff92SAndroid Build Coastguard Worker                                     0,
374*89c4ff92SAndroid Build Coastguard Worker                                     0,
375*89c4ff92SAndroid Build Coastguard Worker                                     0,
376*89c4ff92SAndroid Build Coastguard Worker                                     0,
377*89c4ff92SAndroid Build Coastguard Worker                                     0,
378*89c4ff92SAndroid Build Coastguard Worker                                     0
379*89c4ff92SAndroid Build Coastguard Worker                                 ],
380*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": "NONE",
381*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
382*89c4ff92SAndroid Build Coastguard Worker                             },
383*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
384*89c4ff92SAndroid Build Coastguard Worker                         },
385*89c4ff92SAndroid Build Coastguard Worker                         {
386*89c4ff92SAndroid Build Coastguard Worker                             "shape": [
387*89c4ff92SAndroid Build Coastguard Worker                                 1,
388*89c4ff92SAndroid Build Coastguard Worker                                 4,
389*89c4ff92SAndroid Build Coastguard Worker                                 4,
390*89c4ff92SAndroid Build Coastguard Worker                                 8
391*89c4ff92SAndroid Build Coastguard Worker                             ],
392*89c4ff92SAndroid Build Coastguard Worker                             "type": "INT8",
393*89c4ff92SAndroid Build Coastguard Worker                             "buffer": 4,
394*89c4ff92SAndroid Build Coastguard Worker                             "name": "Identity",
395*89c4ff92SAndroid Build Coastguard Worker                             "quantization": {
396*89c4ff92SAndroid Build Coastguard Worker                                 "min": [
397*89c4ff92SAndroid Build Coastguard Worker                                     -63.578175
398*89c4ff92SAndroid Build Coastguard Worker                                 ],
399*89c4ff92SAndroid Build Coastguard Worker                                 "max": [
400*89c4ff92SAndroid Build Coastguard Worker                                     69.305023
401*89c4ff92SAndroid Build Coastguard Worker                                 ],
402*89c4ff92SAndroid Build Coastguard Worker                                 "scale": [
403*89c4ff92SAndroid Build Coastguard Worker                                     0.521111
404*89c4ff92SAndroid Build Coastguard Worker                                 ],
405*89c4ff92SAndroid Build Coastguard Worker                                 "zero_point": [
406*89c4ff92SAndroid Build Coastguard Worker                                     -6
407*89c4ff92SAndroid Build Coastguard Worker                                 ],
408*89c4ff92SAndroid Build Coastguard Worker                                 "details_type": "NONE",
409*89c4ff92SAndroid Build Coastguard Worker                                 "quantized_dimension": 0
410*89c4ff92SAndroid Build Coastguard Worker                             },
411*89c4ff92SAndroid Build Coastguard Worker                             "is_variable": false
412*89c4ff92SAndroid Build Coastguard Worker                         }
413*89c4ff92SAndroid Build Coastguard Worker                     ],
414*89c4ff92SAndroid Build Coastguard Worker                     "inputs": [
415*89c4ff92SAndroid Build Coastguard Worker                         0
416*89c4ff92SAndroid Build Coastguard Worker                     ],
417*89c4ff92SAndroid Build Coastguard Worker                     "outputs": [
418*89c4ff92SAndroid Build Coastguard Worker                         3
419*89c4ff92SAndroid Build Coastguard Worker                     ],
420*89c4ff92SAndroid Build Coastguard Worker                     "operators": [
421*89c4ff92SAndroid Build Coastguard Worker                         {
422*89c4ff92SAndroid Build Coastguard Worker                             "opcode_index": 0,
423*89c4ff92SAndroid Build Coastguard Worker                             "inputs": [
424*89c4ff92SAndroid Build Coastguard Worker                                 1,
425*89c4ff92SAndroid Build Coastguard Worker                                 2,
426*89c4ff92SAndroid Build Coastguard Worker                                 0
427*89c4ff92SAndroid Build Coastguard Worker                             ],
428*89c4ff92SAndroid Build Coastguard Worker                             "outputs": [
429*89c4ff92SAndroid Build Coastguard Worker                                 3
430*89c4ff92SAndroid Build Coastguard Worker                             ],
431*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options_type": "TransposeConvOptions",
432*89c4ff92SAndroid Build Coastguard Worker                             "builtin_options": {
433*89c4ff92SAndroid Build Coastguard Worker                                 "padding": "SAME",
434*89c4ff92SAndroid Build Coastguard Worker                                 "stride_w": 1,
435*89c4ff92SAndroid Build Coastguard Worker                                 "stride_h": 1
436*89c4ff92SAndroid Build Coastguard Worker                             },
437*89c4ff92SAndroid Build Coastguard Worker                             "custom_options_format": "FLEXBUFFERS"
438*89c4ff92SAndroid Build Coastguard Worker                         }
439*89c4ff92SAndroid Build Coastguard Worker                     ],
440*89c4ff92SAndroid Build Coastguard Worker                     "name": "main"
441*89c4ff92SAndroid Build Coastguard Worker                 }
442*89c4ff92SAndroid Build Coastguard Worker             ],
443*89c4ff92SAndroid Build Coastguard Worker             "description": "MLIR Converted.",
444*89c4ff92SAndroid Build Coastguard Worker             "buffers": [
445*89c4ff92SAndroid Build Coastguard Worker                 {
446*89c4ff92SAndroid Build Coastguard Worker                 },
447*89c4ff92SAndroid Build Coastguard Worker                 {
448*89c4ff92SAndroid Build Coastguard Worker                 },
449*89c4ff92SAndroid Build Coastguard Worker                 {
450*89c4ff92SAndroid Build Coastguard Worker                     "data": [
451*89c4ff92SAndroid Build Coastguard Worker                         1,
452*89c4ff92SAndroid Build Coastguard Worker                         0,
453*89c4ff92SAndroid Build Coastguard Worker                         0,
454*89c4ff92SAndroid Build Coastguard Worker                         0,
455*89c4ff92SAndroid Build Coastguard Worker                         4,
456*89c4ff92SAndroid Build Coastguard Worker                         0,
457*89c4ff92SAndroid Build Coastguard Worker                         0,
458*89c4ff92SAndroid Build Coastguard Worker                         0,
459*89c4ff92SAndroid Build Coastguard Worker                         4,
460*89c4ff92SAndroid Build Coastguard Worker                         0,
461*89c4ff92SAndroid Build Coastguard Worker                         0,
462*89c4ff92SAndroid Build Coastguard Worker                         0,
463*89c4ff92SAndroid Build Coastguard Worker                         8,
464*89c4ff92SAndroid Build Coastguard Worker                         0,
465*89c4ff92SAndroid Build Coastguard Worker                         0,
466*89c4ff92SAndroid Build Coastguard Worker                         0
467*89c4ff92SAndroid Build Coastguard Worker                     ]
468*89c4ff92SAndroid Build Coastguard Worker                 },
469*89c4ff92SAndroid Build Coastguard Worker                 {
470*89c4ff92SAndroid Build Coastguard Worker                     "data": [
471*89c4ff92SAndroid Build Coastguard Worker                         13,
472*89c4ff92SAndroid Build Coastguard Worker                         239,
473*89c4ff92SAndroid Build Coastguard Worker                         7,
474*89c4ff92SAndroid Build Coastguard Worker                         125,
475*89c4ff92SAndroid Build Coastguard Worker                         35,
476*89c4ff92SAndroid Build Coastguard Worker                         127,
477*89c4ff92SAndroid Build Coastguard Worker                         55,
478*89c4ff92SAndroid Build Coastguard Worker                         226,
479*89c4ff92SAndroid Build Coastguard Worker                         77,
480*89c4ff92SAndroid Build Coastguard Worker                         150,
481*89c4ff92SAndroid Build Coastguard Worker                         159,
482*89c4ff92SAndroid Build Coastguard Worker                         192,
483*89c4ff92SAndroid Build Coastguard Worker                         180,
484*89c4ff92SAndroid Build Coastguard Worker                         129,
485*89c4ff92SAndroid Build Coastguard Worker                         51,
486*89c4ff92SAndroid Build Coastguard Worker                         48,
487*89c4ff92SAndroid Build Coastguard Worker                         108,
488*89c4ff92SAndroid Build Coastguard Worker                         9,
489*89c4ff92SAndroid Build Coastguard Worker                         21,
490*89c4ff92SAndroid Build Coastguard Worker                         179,
491*89c4ff92SAndroid Build Coastguard Worker                         12,
492*89c4ff92SAndroid Build Coastguard Worker                         39,
493*89c4ff92SAndroid Build Coastguard Worker                         127,
494*89c4ff92SAndroid Build Coastguard Worker                         107,
495*89c4ff92SAndroid Build Coastguard Worker                         44,
496*89c4ff92SAndroid Build Coastguard Worker                         206,
497*89c4ff92SAndroid Build Coastguard Worker                         127,
498*89c4ff92SAndroid Build Coastguard Worker                         185,
499*89c4ff92SAndroid Build Coastguard Worker                         108,
500*89c4ff92SAndroid Build Coastguard Worker                         82,
501*89c4ff92SAndroid Build Coastguard Worker                         86,
502*89c4ff92SAndroid Build Coastguard Worker                         218,
503*89c4ff92SAndroid Build Coastguard Worker                         38,
504*89c4ff92SAndroid Build Coastguard Worker                         149,
505*89c4ff92SAndroid Build Coastguard Worker                         16,
506*89c4ff92SAndroid Build Coastguard Worker                         1,
507*89c4ff92SAndroid Build Coastguard Worker                         129,
508*89c4ff92SAndroid Build Coastguard Worker                         163,
509*89c4ff92SAndroid Build Coastguard Worker                         116,
510*89c4ff92SAndroid Build Coastguard Worker                         136,
511*89c4ff92SAndroid Build Coastguard Worker                         138,
512*89c4ff92SAndroid Build Coastguard Worker                         43,
513*89c4ff92SAndroid Build Coastguard Worker                         65,
514*89c4ff92SAndroid Build Coastguard Worker                         186,
515*89c4ff92SAndroid Build Coastguard Worker                         154,
516*89c4ff92SAndroid Build Coastguard Worker                         138,
517*89c4ff92SAndroid Build Coastguard Worker                         64,
518*89c4ff92SAndroid Build Coastguard Worker                         127,
519*89c4ff92SAndroid Build Coastguard Worker                         120,
520*89c4ff92SAndroid Build Coastguard Worker                         127,
521*89c4ff92SAndroid Build Coastguard Worker                         207,
522*89c4ff92SAndroid Build Coastguard Worker                         70,
523*89c4ff92SAndroid Build Coastguard Worker                         43,
524*89c4ff92SAndroid Build Coastguard Worker                         33,
525*89c4ff92SAndroid Build Coastguard Worker                         141,
526*89c4ff92SAndroid Build Coastguard Worker                         137,
527*89c4ff92SAndroid Build Coastguard Worker                         93,
528*89c4ff92SAndroid Build Coastguard Worker                         215,
529*89c4ff92SAndroid Build Coastguard Worker                         65,
530*89c4ff92SAndroid Build Coastguard Worker                         92,
531*89c4ff92SAndroid Build Coastguard Worker                         122,
532*89c4ff92SAndroid Build Coastguard Worker                         144,
533*89c4ff92SAndroid Build Coastguard Worker                         120,
534*89c4ff92SAndroid Build Coastguard Worker                         127
535*89c4ff92SAndroid Build Coastguard Worker                     ]
536*89c4ff92SAndroid Build Coastguard Worker                 },
537*89c4ff92SAndroid Build Coastguard Worker                 {
538*89c4ff92SAndroid Build Coastguard Worker                 },
539*89c4ff92SAndroid Build Coastguard Worker                 {
540*89c4ff92SAndroid Build Coastguard Worker                     "data": [
541*89c4ff92SAndroid Build Coastguard Worker                         49,
542*89c4ff92SAndroid Build Coastguard Worker                         46,
543*89c4ff92SAndroid Build Coastguard Worker                         57,
544*89c4ff92SAndroid Build Coastguard Worker                         46,
545*89c4ff92SAndroid Build Coastguard Worker                         48,
546*89c4ff92SAndroid Build Coastguard Worker                         0,
547*89c4ff92SAndroid Build Coastguard Worker                         0,
548*89c4ff92SAndroid Build Coastguard Worker                         0,
549*89c4ff92SAndroid Build Coastguard Worker                         0,
550*89c4ff92SAndroid Build Coastguard Worker                         0,
551*89c4ff92SAndroid Build Coastguard Worker                         0,
552*89c4ff92SAndroid Build Coastguard Worker                         0,
553*89c4ff92SAndroid Build Coastguard Worker                         0,
554*89c4ff92SAndroid Build Coastguard Worker                         0,
555*89c4ff92SAndroid Build Coastguard Worker                         0,
556*89c4ff92SAndroid Build Coastguard Worker                         0
557*89c4ff92SAndroid Build Coastguard Worker                     ]
558*89c4ff92SAndroid Build Coastguard Worker                 }
559*89c4ff92SAndroid Build Coastguard Worker               ],
560*89c4ff92SAndroid Build Coastguard Worker             "metadata": [
561*89c4ff92SAndroid Build Coastguard Worker                 {
562*89c4ff92SAndroid Build Coastguard Worker                     "name": "min_runtime_version",
563*89c4ff92SAndroid Build Coastguard Worker                     "buffer": 5
564*89c4ff92SAndroid Build Coastguard Worker                 }
565*89c4ff92SAndroid Build Coastguard Worker             ]
566*89c4ff92SAndroid Build Coastguard Worker         }
567*89c4ff92SAndroid Build Coastguard Worker         )";
568*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("input", "Identity");
569*89c4ff92SAndroid Build Coastguard Worker     }
570*89c4ff92SAndroid Build Coastguard Worker };
571*89c4ff92SAndroid Build Coastguard Worker 
572*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(TransposeConvPerChannelFixture, "ParseTransposeConvPerChannel")
573*89c4ff92SAndroid Build Coastguard Worker {
574*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::QAsymmS8>(
575*89c4ff92SAndroid Build Coastguard Worker         0,
576*89c4ff92SAndroid Build Coastguard Worker         {
577*89c4ff92SAndroid Build Coastguard Worker             -11, 40,-26, 11,-28,  8,  0, -8,
578*89c4ff92SAndroid Build Coastguard Worker             -10, 34, 47,  0,-33,-14, 28, 35,
579*89c4ff92SAndroid Build Coastguard Worker               6,-28,-26,  8, 13, 33,-31,-41,
580*89c4ff92SAndroid Build Coastguard Worker              31,-20,-31,-16,  8,-18,-44,  0
581*89c4ff92SAndroid Build Coastguard Worker         },
582*89c4ff92SAndroid Build Coastguard Worker         {
583*89c4ff92SAndroid Build Coastguard Worker             -8,-17, -8, -9,-16,  1,  2,-11,
584*89c4ff92SAndroid Build Coastguard Worker              3,-16,-19,-12,-11, -6, -3, -6,
585*89c4ff92SAndroid Build Coastguard Worker             -5, -8,-16,-12,-11, -3, -7,-13,
586*89c4ff92SAndroid Build Coastguard Worker             -4,  1, -9,-10, -5,-12, -5, -8,
587*89c4ff92SAndroid Build Coastguard Worker              2,-25, -5, -6,-20, -7,  2,-21,
588*89c4ff92SAndroid Build Coastguard Worker              1,  4,  5,-13,-10,-12,  3,  4,
589*89c4ff92SAndroid Build Coastguard Worker            -10,-17,-17, -6, -7, 12,-22,-17,
590*89c4ff92SAndroid Build Coastguard Worker            -17,  0, -5,-14,-21,-12, 17,-13,
591*89c4ff92SAndroid Build Coastguard Worker              3, -6, -3, -3, -2,-16,-11,-12,
592*89c4ff92SAndroid Build Coastguard Worker            -15,-14, -1, -2,-35,  5,-18,  0,
593*89c4ff92SAndroid Build Coastguard Worker             -6,  8,  5,-12, 12,  7, -6, -3,
594*89c4ff92SAndroid Build Coastguard Worker             11,-28,-28, -3,-18,-29, -5,-13,
595*89c4ff92SAndroid Build Coastguard Worker            -12, 11, -2, -5,  6, -9, -6,  7,
596*89c4ff92SAndroid Build Coastguard Worker             -9,-11,-14, -2, 12,  5,-21,-23,
597*89c4ff92SAndroid Build Coastguard Worker             -4, -4, -6, -6,-21,-25,  0,-18,
598*89c4ff92SAndroid Build Coastguard Worker            -26, 10, -7,-13,  3, 39,-39, -4
599*89c4ff92SAndroid Build Coastguard Worker         });
600*89c4ff92SAndroid Build Coastguard Worker }
601*89c4ff92SAndroid Build Coastguard Worker 
602*89c4ff92SAndroid Build Coastguard Worker }
603