xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializeDepthwiseConv2d.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 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 "ParserFlatbuffersSerializeFixture.hpp"
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <armnnDeserializer/IDeserializer.hpp>
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker #include <doctest/doctest.h>
11*89c4ff92SAndroid Build Coastguard Worker 
12*89c4ff92SAndroid Build Coastguard Worker #include <string>
13*89c4ff92SAndroid Build Coastguard Worker 
14*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("Deserializer_DepthwiseConv2d")
15*89c4ff92SAndroid Build Coastguard Worker {
16*89c4ff92SAndroid Build Coastguard Worker struct DepthwiseConv2dFlatbufferVersion1FixtureOld : public ParserFlatbuffersSerializeFixture
17*89c4ff92SAndroid Build Coastguard Worker {
DepthwiseConv2dFlatbufferVersion1FixtureOldDepthwiseConv2dFlatbufferVersion1FixtureOld18*89c4ff92SAndroid Build Coastguard Worker     explicit DepthwiseConv2dFlatbufferVersion1FixtureOld()
19*89c4ff92SAndroid Build Coastguard Worker     {
20*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
21*89c4ff92SAndroid Build Coastguard Worker         {
22*89c4ff92SAndroid Build Coastguard Worker           "layers": [
23*89c4ff92SAndroid Build Coastguard Worker             {
24*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "InputLayer",
25*89c4ff92SAndroid Build Coastguard Worker               "layer": {
26*89c4ff92SAndroid Build Coastguard Worker                 "base": {
27*89c4ff92SAndroid Build Coastguard Worker                   "base": {
28*89c4ff92SAndroid Build Coastguard Worker                     "index": 0,
29*89c4ff92SAndroid Build Coastguard Worker                     "layerName": "Input",
30*89c4ff92SAndroid Build Coastguard Worker                     "layerType": "Input",
31*89c4ff92SAndroid Build Coastguard Worker                     "inputSlots": [
32*89c4ff92SAndroid Build Coastguard Worker 
33*89c4ff92SAndroid Build Coastguard Worker                     ],
34*89c4ff92SAndroid Build Coastguard Worker                     "outputSlots": [
35*89c4ff92SAndroid Build Coastguard Worker                       {
36*89c4ff92SAndroid Build Coastguard Worker                         "index": 0,
37*89c4ff92SAndroid Build Coastguard Worker                         "tensorInfo": {
38*89c4ff92SAndroid Build Coastguard Worker                           "dimensions": [
39*89c4ff92SAndroid Build Coastguard Worker                             1,
40*89c4ff92SAndroid Build Coastguard Worker                             3,
41*89c4ff92SAndroid Build Coastguard Worker                             3,
42*89c4ff92SAndroid Build Coastguard Worker                             3
43*89c4ff92SAndroid Build Coastguard Worker                           ],
44*89c4ff92SAndroid Build Coastguard Worker                           "dataType": "QAsymmS8",
45*89c4ff92SAndroid Build Coastguard Worker                           "quantizationScale": 1.0,
46*89c4ff92SAndroid Build Coastguard Worker                           "quantizationOffset": 0,
47*89c4ff92SAndroid Build Coastguard Worker                           "quantizationDim": 0,
48*89c4ff92SAndroid Build Coastguard Worker                           "dimensionality": 1,
49*89c4ff92SAndroid Build Coastguard Worker                           "dimensionSpecificity": [
50*89c4ff92SAndroid Build Coastguard Worker                             true,
51*89c4ff92SAndroid Build Coastguard Worker                             true,
52*89c4ff92SAndroid Build Coastguard Worker                             true,
53*89c4ff92SAndroid Build Coastguard Worker                             true
54*89c4ff92SAndroid Build Coastguard Worker                           ]
55*89c4ff92SAndroid Build Coastguard Worker                         }
56*89c4ff92SAndroid Build Coastguard Worker                       }
57*89c4ff92SAndroid Build Coastguard Worker                     ]
58*89c4ff92SAndroid Build Coastguard Worker                   },
59*89c4ff92SAndroid Build Coastguard Worker                   "layerBindingId": 0
60*89c4ff92SAndroid Build Coastguard Worker                 }
61*89c4ff92SAndroid Build Coastguard Worker               }
62*89c4ff92SAndroid Build Coastguard Worker             },
63*89c4ff92SAndroid Build Coastguard Worker             {
64*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "DepthwiseConvolution2dLayer",
65*89c4ff92SAndroid Build Coastguard Worker               "layer": {
66*89c4ff92SAndroid Build Coastguard Worker                 "base": {
67*89c4ff92SAndroid Build Coastguard Worker                   "index": 1,
68*89c4ff92SAndroid Build Coastguard Worker                   "layerName": "depwiseConvolution2dWithPerAxis",
69*89c4ff92SAndroid Build Coastguard Worker                   "layerType": "DepthwiseConvolution2d",
70*89c4ff92SAndroid Build Coastguard Worker                   "inputSlots": [
71*89c4ff92SAndroid Build Coastguard Worker                     {
72*89c4ff92SAndroid Build Coastguard Worker                       "index": 0,
73*89c4ff92SAndroid Build Coastguard Worker                       "connection": {
74*89c4ff92SAndroid Build Coastguard Worker                         "sourceLayerIndex": 0,
75*89c4ff92SAndroid Build Coastguard Worker                         "outputSlotIndex": 0
76*89c4ff92SAndroid Build Coastguard Worker                       }
77*89c4ff92SAndroid Build Coastguard Worker                     }
78*89c4ff92SAndroid Build Coastguard Worker                   ],
79*89c4ff92SAndroid Build Coastguard Worker                   "outputSlots": [
80*89c4ff92SAndroid Build Coastguard Worker                     {
81*89c4ff92SAndroid Build Coastguard Worker                       "index": 0,
82*89c4ff92SAndroid Build Coastguard Worker                       "tensorInfo": {
83*89c4ff92SAndroid Build Coastguard Worker                         "dimensions": [
84*89c4ff92SAndroid Build Coastguard Worker                           1,
85*89c4ff92SAndroid Build Coastguard Worker                           3,
86*89c4ff92SAndroid Build Coastguard Worker                           3,
87*89c4ff92SAndroid Build Coastguard Worker                           3
88*89c4ff92SAndroid Build Coastguard Worker                         ],
89*89c4ff92SAndroid Build Coastguard Worker                         "dataType": "QAsymmS8",
90*89c4ff92SAndroid Build Coastguard Worker                         "quantizationScale": 1.0,
91*89c4ff92SAndroid Build Coastguard Worker                         "quantizationOffset": 0,
92*89c4ff92SAndroid Build Coastguard Worker                         "quantizationDim": 0,
93*89c4ff92SAndroid Build Coastguard Worker                         "dimensionality": 1,
94*89c4ff92SAndroid Build Coastguard Worker                         "dimensionSpecificity": [
95*89c4ff92SAndroid Build Coastguard Worker                           true,
96*89c4ff92SAndroid Build Coastguard Worker                           true,
97*89c4ff92SAndroid Build Coastguard Worker                           true,
98*89c4ff92SAndroid Build Coastguard Worker                           true
99*89c4ff92SAndroid Build Coastguard Worker                         ]
100*89c4ff92SAndroid Build Coastguard Worker                       }
101*89c4ff92SAndroid Build Coastguard Worker                     }
102*89c4ff92SAndroid Build Coastguard Worker                   ]
103*89c4ff92SAndroid Build Coastguard Worker                 },
104*89c4ff92SAndroid Build Coastguard Worker                 "descriptor": {
105*89c4ff92SAndroid Build Coastguard Worker                   "padLeft": 1,
106*89c4ff92SAndroid Build Coastguard Worker                   "padRight": 1,
107*89c4ff92SAndroid Build Coastguard Worker                   "padTop": 1,
108*89c4ff92SAndroid Build Coastguard Worker                   "padBottom": 1,
109*89c4ff92SAndroid Build Coastguard Worker                   "strideX": 1,
110*89c4ff92SAndroid Build Coastguard Worker                   "strideY": 1,
111*89c4ff92SAndroid Build Coastguard Worker                   "dilationX": 1,
112*89c4ff92SAndroid Build Coastguard Worker                   "dilationY": 1,
113*89c4ff92SAndroid Build Coastguard Worker                   "biasEnabled": false,
114*89c4ff92SAndroid Build Coastguard Worker                   "dataLayout": "NHWC"
115*89c4ff92SAndroid Build Coastguard Worker                 },
116*89c4ff92SAndroid Build Coastguard Worker                 "weights": {
117*89c4ff92SAndroid Build Coastguard Worker                   "info": {
118*89c4ff92SAndroid Build Coastguard Worker                     "dimensions": [
119*89c4ff92SAndroid Build Coastguard Worker                       1,
120*89c4ff92SAndroid Build Coastguard Worker                       3,
121*89c4ff92SAndroid Build Coastguard Worker                       3,
122*89c4ff92SAndroid Build Coastguard Worker                       3
123*89c4ff92SAndroid Build Coastguard Worker                     ],
124*89c4ff92SAndroid Build Coastguard Worker                     "dataType": "QSymmS8",
125*89c4ff92SAndroid Build Coastguard Worker                     "quantizationScale": 0.25,
126*89c4ff92SAndroid Build Coastguard Worker                     "quantizationOffset": 0,
127*89c4ff92SAndroid Build Coastguard Worker                     "quantizationScales": [
128*89c4ff92SAndroid Build Coastguard Worker                       0.25,
129*89c4ff92SAndroid Build Coastguard Worker                       0.2,
130*89c4ff92SAndroid Build Coastguard Worker                       0.1
131*89c4ff92SAndroid Build Coastguard Worker                     ],
132*89c4ff92SAndroid Build Coastguard Worker                     "quantizationDim": 0,
133*89c4ff92SAndroid Build Coastguard Worker                     "dimensionality": 1,
134*89c4ff92SAndroid Build Coastguard Worker                     "dimensionSpecificity": [
135*89c4ff92SAndroid Build Coastguard Worker                       true,
136*89c4ff92SAndroid Build Coastguard Worker                       true,
137*89c4ff92SAndroid Build Coastguard Worker                       true,
138*89c4ff92SAndroid Build Coastguard Worker                       true
139*89c4ff92SAndroid Build Coastguard Worker                     ]
140*89c4ff92SAndroid Build Coastguard Worker                   },
141*89c4ff92SAndroid Build Coastguard Worker                   "data_type": "ByteData",
142*89c4ff92SAndroid Build Coastguard Worker                   "data": {
143*89c4ff92SAndroid Build Coastguard Worker                     "data": [
144*89c4ff92SAndroid Build Coastguard Worker                       4,
145*89c4ff92SAndroid Build Coastguard Worker                       20,
146*89c4ff92SAndroid Build Coastguard Worker                       0,
147*89c4ff92SAndroid Build Coastguard Worker                       8,
148*89c4ff92SAndroid Build Coastguard Worker                       20,
149*89c4ff92SAndroid Build Coastguard Worker                       30,
150*89c4ff92SAndroid Build Coastguard Worker                       4,
151*89c4ff92SAndroid Build Coastguard Worker                       0,
152*89c4ff92SAndroid Build Coastguard Worker                       10,
153*89c4ff92SAndroid Build Coastguard Worker                       12,
154*89c4ff92SAndroid Build Coastguard Worker                       0,
155*89c4ff92SAndroid Build Coastguard Worker                       40,
156*89c4ff92SAndroid Build Coastguard Worker                       0,
157*89c4ff92SAndroid Build Coastguard Worker                       5,
158*89c4ff92SAndroid Build Coastguard Worker                       30,
159*89c4ff92SAndroid Build Coastguard Worker                       16,
160*89c4ff92SAndroid Build Coastguard Worker                       10,
161*89c4ff92SAndroid Build Coastguard Worker                       40,
162*89c4ff92SAndroid Build Coastguard Worker                       12,
163*89c4ff92SAndroid Build Coastguard Worker                       0,
164*89c4ff92SAndroid Build Coastguard Worker                       30,
165*89c4ff92SAndroid Build Coastguard Worker                       16,
166*89c4ff92SAndroid Build Coastguard Worker                       20,
167*89c4ff92SAndroid Build Coastguard Worker                       0,
168*89c4ff92SAndroid Build Coastguard Worker                       12,
169*89c4ff92SAndroid Build Coastguard Worker                       20,
170*89c4ff92SAndroid Build Coastguard Worker                       20
171*89c4ff92SAndroid Build Coastguard Worker                     ]
172*89c4ff92SAndroid Build Coastguard Worker                   }
173*89c4ff92SAndroid Build Coastguard Worker                 }
174*89c4ff92SAndroid Build Coastguard Worker               }
175*89c4ff92SAndroid Build Coastguard Worker             },
176*89c4ff92SAndroid Build Coastguard Worker             {
177*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "OutputLayer",
178*89c4ff92SAndroid Build Coastguard Worker               "layer": {
179*89c4ff92SAndroid Build Coastguard Worker                 "base": {
180*89c4ff92SAndroid Build Coastguard Worker                   "base": {
181*89c4ff92SAndroid Build Coastguard Worker                     "index": 2,
182*89c4ff92SAndroid Build Coastguard Worker                     "layerName": "Output",
183*89c4ff92SAndroid Build Coastguard Worker                     "layerType": "Output",
184*89c4ff92SAndroid Build Coastguard Worker                     "inputSlots": [
185*89c4ff92SAndroid Build Coastguard Worker                       {
186*89c4ff92SAndroid Build Coastguard Worker                         "index": 0,
187*89c4ff92SAndroid Build Coastguard Worker                         "connection": {
188*89c4ff92SAndroid Build Coastguard Worker                           "sourceLayerIndex": 1,
189*89c4ff92SAndroid Build Coastguard Worker                           "outputSlotIndex": 0
190*89c4ff92SAndroid Build Coastguard Worker                         }
191*89c4ff92SAndroid Build Coastguard Worker                       }
192*89c4ff92SAndroid Build Coastguard Worker                     ],
193*89c4ff92SAndroid Build Coastguard Worker                     "outputSlots": [
194*89c4ff92SAndroid Build Coastguard Worker 
195*89c4ff92SAndroid Build Coastguard Worker                     ]
196*89c4ff92SAndroid Build Coastguard Worker                   },
197*89c4ff92SAndroid Build Coastguard Worker                   "layerBindingId": 0
198*89c4ff92SAndroid Build Coastguard Worker                 }
199*89c4ff92SAndroid Build Coastguard Worker               }
200*89c4ff92SAndroid Build Coastguard Worker             }
201*89c4ff92SAndroid Build Coastguard Worker           ],
202*89c4ff92SAndroid Build Coastguard Worker           "inputIds": [
203*89c4ff92SAndroid Build Coastguard Worker             0
204*89c4ff92SAndroid Build Coastguard Worker           ],
205*89c4ff92SAndroid Build Coastguard Worker           "outputIds": [
206*89c4ff92SAndroid Build Coastguard Worker             0
207*89c4ff92SAndroid Build Coastguard Worker           ],
208*89c4ff92SAndroid Build Coastguard Worker           "featureVersions": {
209*89c4ff92SAndroid Build Coastguard Worker             "bindingIdsScheme": 1
210*89c4ff92SAndroid Build Coastguard Worker           }
211*89c4ff92SAndroid Build Coastguard Worker         }
212*89c4ff92SAndroid Build Coastguard Worker         )";
213*89c4ff92SAndroid Build Coastguard Worker         SetupSingleInputSingleOutput("Input", "Output");
214*89c4ff92SAndroid Build Coastguard Worker     }
215*89c4ff92SAndroid Build Coastguard Worker };
216*89c4ff92SAndroid Build Coastguard Worker 
217*89c4ff92SAndroid Build Coastguard Worker struct DepthwiseConv2dFlatbufferVersion1Fixture : public ParserFlatbuffersSerializeFixture
218*89c4ff92SAndroid Build Coastguard Worker {
DepthwiseConv2dFlatbufferVersion1FixtureDepthwiseConv2dFlatbufferVersion1Fixture219*89c4ff92SAndroid Build Coastguard Worker     explicit DepthwiseConv2dFlatbufferVersion1Fixture()
220*89c4ff92SAndroid Build Coastguard Worker     {
221*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
222*89c4ff92SAndroid Build Coastguard Worker         {
223*89c4ff92SAndroid Build Coastguard Worker           "layers": [
224*89c4ff92SAndroid Build Coastguard Worker             {
225*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "InputLayer",
226*89c4ff92SAndroid Build Coastguard Worker               "layer": {
227*89c4ff92SAndroid Build Coastguard Worker                 "base": {
228*89c4ff92SAndroid Build Coastguard Worker                   "base": {
229*89c4ff92SAndroid Build Coastguard Worker                     "index": 0,
230*89c4ff92SAndroid Build Coastguard Worker                     "layerName": "InputLayer",
231*89c4ff92SAndroid Build Coastguard Worker                     "layerType": "Input",
232*89c4ff92SAndroid Build Coastguard Worker                     "inputSlots": [
233*89c4ff92SAndroid Build Coastguard Worker                     ],
234*89c4ff92SAndroid Build Coastguard Worker                     "outputSlots": [
235*89c4ff92SAndroid Build Coastguard Worker                       {
236*89c4ff92SAndroid Build Coastguard Worker                         "index": 0,
237*89c4ff92SAndroid Build Coastguard Worker                         "tensorInfo": {
238*89c4ff92SAndroid Build Coastguard Worker                           "dimensions": [
239*89c4ff92SAndroid Build Coastguard Worker                             1,
240*89c4ff92SAndroid Build Coastguard Worker                             3,
241*89c4ff92SAndroid Build Coastguard Worker                             3,
242*89c4ff92SAndroid Build Coastguard Worker                             3
243*89c4ff92SAndroid Build Coastguard Worker                           ],
244*89c4ff92SAndroid Build Coastguard Worker                           "dataType": "QAsymmS8",
245*89c4ff92SAndroid Build Coastguard Worker                           "quantizationScale": 1.0,
246*89c4ff92SAndroid Build Coastguard Worker                           "quantizationOffset": 0,
247*89c4ff92SAndroid Build Coastguard Worker                           "quantizationDim": 0,
248*89c4ff92SAndroid Build Coastguard Worker                           "dimensionality": 1,
249*89c4ff92SAndroid Build Coastguard Worker                           "dimensionSpecificity": [
250*89c4ff92SAndroid Build Coastguard Worker                             true,
251*89c4ff92SAndroid Build Coastguard Worker                             true,
252*89c4ff92SAndroid Build Coastguard Worker                             true,
253*89c4ff92SAndroid Build Coastguard Worker                             true
254*89c4ff92SAndroid Build Coastguard Worker                           ]
255*89c4ff92SAndroid Build Coastguard Worker                         }
256*89c4ff92SAndroid Build Coastguard Worker                       }
257*89c4ff92SAndroid Build Coastguard Worker                     ]
258*89c4ff92SAndroid Build Coastguard Worker                   },
259*89c4ff92SAndroid Build Coastguard Worker                   "layerBindingId": 0
260*89c4ff92SAndroid Build Coastguard Worker                 }
261*89c4ff92SAndroid Build Coastguard Worker               }
262*89c4ff92SAndroid Build Coastguard Worker             },
263*89c4ff92SAndroid Build Coastguard Worker             {
264*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "DepthwiseConvolution2dLayer",
265*89c4ff92SAndroid Build Coastguard Worker               "layer": {
266*89c4ff92SAndroid Build Coastguard Worker                 "base": {
267*89c4ff92SAndroid Build Coastguard Worker                   "index": 1,
268*89c4ff92SAndroid Build Coastguard Worker                   "layerName": "depthwiseConvolution2dWithPerAxis",
269*89c4ff92SAndroid Build Coastguard Worker                   "layerType": "DepthwiseConvolution2d",
270*89c4ff92SAndroid Build Coastguard Worker                   "inputSlots": [
271*89c4ff92SAndroid Build Coastguard Worker                     {
272*89c4ff92SAndroid Build Coastguard Worker                       "index": 0,
273*89c4ff92SAndroid Build Coastguard Worker                       "connection": {
274*89c4ff92SAndroid Build Coastguard Worker                         "sourceLayerIndex": 0,
275*89c4ff92SAndroid Build Coastguard Worker                         "outputSlotIndex": 0
276*89c4ff92SAndroid Build Coastguard Worker                       }
277*89c4ff92SAndroid Build Coastguard Worker                     },
278*89c4ff92SAndroid Build Coastguard Worker                     {
279*89c4ff92SAndroid Build Coastguard Worker                       "index": 1,
280*89c4ff92SAndroid Build Coastguard Worker                       "connection": {
281*89c4ff92SAndroid Build Coastguard Worker                         "sourceLayerIndex": 2,
282*89c4ff92SAndroid Build Coastguard Worker                         "outputSlotIndex": 0
283*89c4ff92SAndroid Build Coastguard Worker                       }
284*89c4ff92SAndroid Build Coastguard Worker                     }
285*89c4ff92SAndroid Build Coastguard Worker                   ],
286*89c4ff92SAndroid Build Coastguard Worker                   "outputSlots": [
287*89c4ff92SAndroid Build Coastguard Worker                     {
288*89c4ff92SAndroid Build Coastguard Worker                       "index": 0,
289*89c4ff92SAndroid Build Coastguard Worker                       "tensorInfo": {
290*89c4ff92SAndroid Build Coastguard Worker                         "dimensions": [
291*89c4ff92SAndroid Build Coastguard Worker                           1,
292*89c4ff92SAndroid Build Coastguard Worker                           3,
293*89c4ff92SAndroid Build Coastguard Worker                           3,
294*89c4ff92SAndroid Build Coastguard Worker                           3
295*89c4ff92SAndroid Build Coastguard Worker                         ],
296*89c4ff92SAndroid Build Coastguard Worker                         "dataType": "QAsymmS8",
297*89c4ff92SAndroid Build Coastguard Worker                         "quantizationScale": 1.0,
298*89c4ff92SAndroid Build Coastguard Worker                         "quantizationOffset": 0,
299*89c4ff92SAndroid Build Coastguard Worker                         "quantizationDim": 0,
300*89c4ff92SAndroid Build Coastguard Worker                         "dimensionality": 1,
301*89c4ff92SAndroid Build Coastguard Worker                         "dimensionSpecificity": [
302*89c4ff92SAndroid Build Coastguard Worker                           true,
303*89c4ff92SAndroid Build Coastguard Worker                           true,
304*89c4ff92SAndroid Build Coastguard Worker                           true,
305*89c4ff92SAndroid Build Coastguard Worker                           true
306*89c4ff92SAndroid Build Coastguard Worker                         ]
307*89c4ff92SAndroid Build Coastguard Worker                       }
308*89c4ff92SAndroid Build Coastguard Worker                     }
309*89c4ff92SAndroid Build Coastguard Worker                   ]
310*89c4ff92SAndroid Build Coastguard Worker                 },
311*89c4ff92SAndroid Build Coastguard Worker                 "descriptor": {
312*89c4ff92SAndroid Build Coastguard Worker                   "padLeft": 1,
313*89c4ff92SAndroid Build Coastguard Worker                   "padRight": 1,
314*89c4ff92SAndroid Build Coastguard Worker                   "padTop": 1,
315*89c4ff92SAndroid Build Coastguard Worker                   "padBottom": 1,
316*89c4ff92SAndroid Build Coastguard Worker                   "strideX": 1,
317*89c4ff92SAndroid Build Coastguard Worker                   "strideY": 1,
318*89c4ff92SAndroid Build Coastguard Worker                   "dilationX": 1,
319*89c4ff92SAndroid Build Coastguard Worker                   "dilationY": 1,
320*89c4ff92SAndroid Build Coastguard Worker                   "biasEnabled": false,
321*89c4ff92SAndroid Build Coastguard Worker                   "dataLayout": "NHWC"
322*89c4ff92SAndroid Build Coastguard Worker                 }
323*89c4ff92SAndroid Build Coastguard Worker               }
324*89c4ff92SAndroid Build Coastguard Worker             },
325*89c4ff92SAndroid Build Coastguard Worker             {
326*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "ConstantLayer",
327*89c4ff92SAndroid Build Coastguard Worker               "layer": {
328*89c4ff92SAndroid Build Coastguard Worker                 "base": {
329*89c4ff92SAndroid Build Coastguard Worker                   "index": 2,
330*89c4ff92SAndroid Build Coastguard Worker                   "layerName": "Weights",
331*89c4ff92SAndroid Build Coastguard Worker                   "layerType": "Constant",
332*89c4ff92SAndroid Build Coastguard Worker                   "inputSlots": [
333*89c4ff92SAndroid Build Coastguard Worker                   ],
334*89c4ff92SAndroid Build Coastguard Worker                   "outputSlots": [
335*89c4ff92SAndroid Build Coastguard Worker                     {
336*89c4ff92SAndroid Build Coastguard Worker                       "index": 0,
337*89c4ff92SAndroid Build Coastguard Worker                       "tensorInfo": {
338*89c4ff92SAndroid Build Coastguard Worker                         "dimensions": [
339*89c4ff92SAndroid Build Coastguard Worker                           1,
340*89c4ff92SAndroid Build Coastguard Worker                           3,
341*89c4ff92SAndroid Build Coastguard Worker                           3,
342*89c4ff92SAndroid Build Coastguard Worker                           3
343*89c4ff92SAndroid Build Coastguard Worker                         ],
344*89c4ff92SAndroid Build Coastguard Worker                         "dataType": "QSymmS8",
345*89c4ff92SAndroid Build Coastguard Worker                         "quantizationScale": 0.25,
346*89c4ff92SAndroid Build Coastguard Worker                         "quantizationOffset": 0,
347*89c4ff92SAndroid Build Coastguard Worker                         "quantizationDim": 0,
348*89c4ff92SAndroid Build Coastguard Worker                         "dimensionality": 1,
349*89c4ff92SAndroid Build Coastguard Worker                         "dimensionSpecificity": [
350*89c4ff92SAndroid Build Coastguard Worker                           true,
351*89c4ff92SAndroid Build Coastguard Worker                           true,
352*89c4ff92SAndroid Build Coastguard Worker                           true,
353*89c4ff92SAndroid Build Coastguard Worker                           true
354*89c4ff92SAndroid Build Coastguard Worker                         ],
355*89c4ff92SAndroid Build Coastguard Worker                         quantizationScales: [
356*89c4ff92SAndroid Build Coastguard Worker                               0.25,
357*89c4ff92SAndroid Build Coastguard Worker                               0.2,
358*89c4ff92SAndroid Build Coastguard Worker                               0.1
359*89c4ff92SAndroid Build Coastguard Worker                         ],
360*89c4ff92SAndroid Build Coastguard Worker                         "isConstant": true,
361*89c4ff92SAndroid Build Coastguard Worker                       }
362*89c4ff92SAndroid Build Coastguard Worker                     }
363*89c4ff92SAndroid Build Coastguard Worker                   ]
364*89c4ff92SAndroid Build Coastguard Worker                 },
365*89c4ff92SAndroid Build Coastguard Worker                 "input": {
366*89c4ff92SAndroid Build Coastguard Worker                   "info": {
367*89c4ff92SAndroid Build Coastguard Worker                     "dimensions": [
368*89c4ff92SAndroid Build Coastguard Worker                        1,
369*89c4ff92SAndroid Build Coastguard Worker                        3,
370*89c4ff92SAndroid Build Coastguard Worker                        3,
371*89c4ff92SAndroid Build Coastguard Worker                        3
372*89c4ff92SAndroid Build Coastguard Worker                     ],
373*89c4ff92SAndroid Build Coastguard Worker                     "dataType": "QSymmS8",
374*89c4ff92SAndroid Build Coastguard Worker                     "quantizationScale": 0.25,
375*89c4ff92SAndroid Build Coastguard Worker                     "quantizationOffset": 0,
376*89c4ff92SAndroid Build Coastguard Worker                     "quantizationDim": 0,
377*89c4ff92SAndroid Build Coastguard Worker                     "dimensionality": 1,
378*89c4ff92SAndroid Build Coastguard Worker                     "dimensionSpecificity": [
379*89c4ff92SAndroid Build Coastguard Worker                       true,
380*89c4ff92SAndroid Build Coastguard Worker                       true,
381*89c4ff92SAndroid Build Coastguard Worker                       true,
382*89c4ff92SAndroid Build Coastguard Worker                       true
383*89c4ff92SAndroid Build Coastguard Worker                     ],
384*89c4ff92SAndroid Build Coastguard Worker                     quantizationScales: [
385*89c4ff92SAndroid Build Coastguard Worker                       0.25,
386*89c4ff92SAndroid Build Coastguard Worker                       0.2,
387*89c4ff92SAndroid Build Coastguard Worker                       0.1
388*89c4ff92SAndroid Build Coastguard Worker                     ]
389*89c4ff92SAndroid Build Coastguard Worker                   },
390*89c4ff92SAndroid Build Coastguard Worker                   "data_type": "ByteData",
391*89c4ff92SAndroid Build Coastguard Worker                   "data": {
392*89c4ff92SAndroid Build Coastguard Worker                     "data": [
393*89c4ff92SAndroid Build Coastguard Worker                       4,
394*89c4ff92SAndroid Build Coastguard Worker                       20,
395*89c4ff92SAndroid Build Coastguard Worker                       0,
396*89c4ff92SAndroid Build Coastguard Worker                       8,
397*89c4ff92SAndroid Build Coastguard Worker                       20,
398*89c4ff92SAndroid Build Coastguard Worker                       30,
399*89c4ff92SAndroid Build Coastguard Worker                       4,
400*89c4ff92SAndroid Build Coastguard Worker                       0,
401*89c4ff92SAndroid Build Coastguard Worker                       10,
402*89c4ff92SAndroid Build Coastguard Worker                       12,
403*89c4ff92SAndroid Build Coastguard Worker                       0,
404*89c4ff92SAndroid Build Coastguard Worker                       40,
405*89c4ff92SAndroid Build Coastguard Worker                       0,
406*89c4ff92SAndroid Build Coastguard Worker                       5,
407*89c4ff92SAndroid Build Coastguard Worker                       30,
408*89c4ff92SAndroid Build Coastguard Worker                       16,
409*89c4ff92SAndroid Build Coastguard Worker                       10,
410*89c4ff92SAndroid Build Coastguard Worker                       40,
411*89c4ff92SAndroid Build Coastguard Worker                       12,
412*89c4ff92SAndroid Build Coastguard Worker                       0,
413*89c4ff92SAndroid Build Coastguard Worker                       30,
414*89c4ff92SAndroid Build Coastguard Worker                       16,
415*89c4ff92SAndroid Build Coastguard Worker                       20,
416*89c4ff92SAndroid Build Coastguard Worker                       0,
417*89c4ff92SAndroid Build Coastguard Worker                       12,
418*89c4ff92SAndroid Build Coastguard Worker                       20,
419*89c4ff92SAndroid Build Coastguard Worker                       20
420*89c4ff92SAndroid Build Coastguard Worker                     ]
421*89c4ff92SAndroid Build Coastguard Worker                   }
422*89c4ff92SAndroid Build Coastguard Worker                 }
423*89c4ff92SAndroid Build Coastguard Worker               }
424*89c4ff92SAndroid Build Coastguard Worker             },
425*89c4ff92SAndroid Build Coastguard Worker             {
426*89c4ff92SAndroid Build Coastguard Worker               "layer_type": "OutputLayer",
427*89c4ff92SAndroid Build Coastguard Worker               "layer": {
428*89c4ff92SAndroid Build Coastguard Worker                 "base": {
429*89c4ff92SAndroid Build Coastguard Worker                   "base": {
430*89c4ff92SAndroid Build Coastguard Worker                     "index": 3,
431*89c4ff92SAndroid Build Coastguard Worker                     "layerName": "OutputLayer",
432*89c4ff92SAndroid Build Coastguard Worker                     "layerType": "Output",
433*89c4ff92SAndroid Build Coastguard Worker                     "inputSlots": [
434*89c4ff92SAndroid Build Coastguard Worker                       {
435*89c4ff92SAndroid Build Coastguard Worker                         "index": 0,
436*89c4ff92SAndroid Build Coastguard Worker                         "connection": {
437*89c4ff92SAndroid Build Coastguard Worker                           "sourceLayerIndex": 1,
438*89c4ff92SAndroid Build Coastguard Worker                           "outputSlotIndex": 0
439*89c4ff92SAndroid Build Coastguard Worker                         }
440*89c4ff92SAndroid Build Coastguard Worker                       }
441*89c4ff92SAndroid Build Coastguard Worker                     ],
442*89c4ff92SAndroid Build Coastguard Worker                     "outputSlots": [
443*89c4ff92SAndroid Build Coastguard Worker                     ]
444*89c4ff92SAndroid Build Coastguard Worker                   },
445*89c4ff92SAndroid Build Coastguard Worker                   "layerBindingId": 0
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           "inputIds": [
451*89c4ff92SAndroid Build Coastguard Worker             0
452*89c4ff92SAndroid Build Coastguard Worker           ],
453*89c4ff92SAndroid Build Coastguard Worker           "outputIds": [
454*89c4ff92SAndroid Build Coastguard Worker             0
455*89c4ff92SAndroid Build Coastguard Worker           ],
456*89c4ff92SAndroid Build Coastguard Worker           "featureVersions": {
457*89c4ff92SAndroid Build Coastguard Worker             "bindingIdsScheme": 1,
458*89c4ff92SAndroid Build Coastguard Worker             "constantTensorsAsInputs": 1
459*89c4ff92SAndroid Build Coastguard Worker           }
460*89c4ff92SAndroid Build Coastguard Worker         }
461*89c4ff92SAndroid Build Coastguard Worker         )";
462*89c4ff92SAndroid Build Coastguard Worker         Setup();
463*89c4ff92SAndroid Build Coastguard Worker     }
464*89c4ff92SAndroid Build Coastguard Worker };
465*89c4ff92SAndroid Build Coastguard Worker 
466*89c4ff92SAndroid Build Coastguard Worker // This test uses a model that was created before weights layout scheme version was added to our flatbuffers
467*89c4ff92SAndroid Build Coastguard Worker // file. It ensures older models can still be read and executed
468*89c4ff92SAndroid Build Coastguard Worker // featureVersion weights layout scheme 1 indicates a change in the depthwise weights layout within
469*89c4ff92SAndroid Build Coastguard Worker // armm from [M,I,H,W] --> [1,H,W,I*M]
470*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(DepthwiseConv2dFlatbufferVersion1FixtureOld, "DepthwiseConv2d_FlatbufferVersion1Old")
471*89c4ff92SAndroid Build Coastguard Worker {
472*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::QAsymmS8>(
473*89c4ff92SAndroid Build Coastguard Worker         0,
474*89c4ff92SAndroid Build Coastguard Worker         { 3,2,0,0,4,3,0,1,2,
475*89c4ff92SAndroid Build Coastguard Worker           0,1,3,0,4,2,2,2,3,
476*89c4ff92SAndroid Build Coastguard Worker           2,4,3,2,0,4,3,4,0},
477*89c4ff92SAndroid Build Coastguard Worker         { 15,60,10,11,37,20, 0,18,17,
478*89c4ff92SAndroid Build Coastguard Worker           20,65,28,28,74,26,12,20,18,
479*89c4ff92SAndroid Build Coastguard Worker           25,36,12,37,42,25,29,14, 9});
480*89c4ff92SAndroid Build Coastguard Worker }
481*89c4ff92SAndroid Build Coastguard Worker 
482*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(DepthwiseConv2dFlatbufferVersion1Fixture,
483*89c4ff92SAndroid Build Coastguard Worker                   "DepthwiseConv2d_FlatbufferVersion1_WeightsAndBiasesAsConstantLayers")
484*89c4ff92SAndroid Build Coastguard Worker {
485*89c4ff92SAndroid Build Coastguard Worker     RunTest<4, armnn::DataType::QAsymmS8>(
486*89c4ff92SAndroid Build Coastguard Worker             0,
487*89c4ff92SAndroid Build Coastguard Worker             {{"InputLayer", { 3,2,0,0,4,3,0,1,2,
488*89c4ff92SAndroid Build Coastguard Worker                               0,1,3,0,4,2,2,2,3,
489*89c4ff92SAndroid Build Coastguard Worker                               2,4,3,2,0,4,3,4,0}}},
490*89c4ff92SAndroid Build Coastguard Worker             {{"OutputLayer", { 15,60,10,11,37,20, 0,18,17,
491*89c4ff92SAndroid Build Coastguard Worker                                20,65,28,28,74,26,12,20,18,
492*89c4ff92SAndroid Build Coastguard Worker                                25,36,12,37,42,25,29,14, 9}}});
493*89c4ff92SAndroid Build Coastguard Worker }
494*89c4ff92SAndroid Build Coastguard Worker 
495*89c4ff92SAndroid Build Coastguard Worker }