xref: /aosp_15_r20/external/armnn/src/armnnDeserializer/test/DeserializeFullyConnected.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017 Arm Ltd. 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 #include <armnnDeserializer/IDeserializer.hpp>
8*89c4ff92SAndroid Build Coastguard Worker 
9*89c4ff92SAndroid Build Coastguard Worker #include <string>
10*89c4ff92SAndroid Build Coastguard Worker 
11*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("DeserializeParser_FullyConnected")
12*89c4ff92SAndroid Build Coastguard Worker {
13*89c4ff92SAndroid Build Coastguard Worker struct FullyConnectedFixture : public ParserFlatbuffersSerializeFixture
14*89c4ff92SAndroid Build Coastguard Worker {
FullyConnectedFixtureFullyConnectedFixture15*89c4ff92SAndroid Build Coastguard Worker     explicit FullyConnectedFixture(const std::string & inputShape1,
16*89c4ff92SAndroid Build Coastguard Worker                                    const std::string & outputShape,
17*89c4ff92SAndroid Build Coastguard Worker                                    const std::string & weightsShape,
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             inputIds: [0],
23*89c4ff92SAndroid Build Coastguard Worker             outputIds: [2],
24*89c4ff92SAndroid Build Coastguard Worker             layers: [{
25*89c4ff92SAndroid Build Coastguard Worker                 layer_type: "InputLayer",
26*89c4ff92SAndroid Build Coastguard Worker                 layer: {
27*89c4ff92SAndroid Build Coastguard Worker                     base: {
28*89c4ff92SAndroid Build Coastguard Worker                         layerBindingId: 0,
29*89c4ff92SAndroid Build Coastguard Worker                         base: {
30*89c4ff92SAndroid Build Coastguard Worker                             index: 0,
31*89c4ff92SAndroid Build Coastguard Worker                             layerName: "InputLayer",
32*89c4ff92SAndroid Build Coastguard Worker                             layerType: "Input",
33*89c4ff92SAndroid Build Coastguard Worker                             inputSlots: [{
34*89c4ff92SAndroid Build Coastguard Worker                                 index: 0,
35*89c4ff92SAndroid Build Coastguard Worker                                 connection: {sourceLayerIndex:0, outputSlotIndex:0 },
36*89c4ff92SAndroid Build Coastguard Worker                                 }],
37*89c4ff92SAndroid Build Coastguard Worker                             outputSlots: [{
38*89c4ff92SAndroid Build Coastguard Worker                                 index: 0,
39*89c4ff92SAndroid Build Coastguard Worker                                 tensorInfo: {
40*89c4ff92SAndroid Build Coastguard Worker                                     dimensions: )" + inputShape1 + R"(,
41*89c4ff92SAndroid Build Coastguard Worker                                     dataType: )" + dataType + R"(,
42*89c4ff92SAndroid Build Coastguard Worker                                     quantizationScale: 1.0,
43*89c4ff92SAndroid Build Coastguard Worker                                     quantizationOffset: 0
44*89c4ff92SAndroid Build Coastguard Worker                                     },
45*89c4ff92SAndroid Build Coastguard Worker                                 }]
46*89c4ff92SAndroid Build Coastguard Worker                             },
47*89c4ff92SAndroid Build Coastguard Worker                         }
48*89c4ff92SAndroid Build Coastguard Worker                     },
49*89c4ff92SAndroid Build Coastguard Worker                 },
50*89c4ff92SAndroid Build Coastguard Worker             {
51*89c4ff92SAndroid Build Coastguard Worker             layer_type: "FullyConnectedLayer",
52*89c4ff92SAndroid Build Coastguard Worker             layer : {
53*89c4ff92SAndroid Build Coastguard Worker                 base: {
54*89c4ff92SAndroid Build Coastguard Worker                     index:1,
55*89c4ff92SAndroid Build Coastguard Worker                     layerName: "FullyConnectedLayer",
56*89c4ff92SAndroid Build Coastguard Worker                     layerType: "FullyConnected",
57*89c4ff92SAndroid Build Coastguard Worker                     inputSlots: [{
58*89c4ff92SAndroid Build Coastguard Worker                             index: 0,
59*89c4ff92SAndroid Build Coastguard Worker                             connection: {sourceLayerIndex:0, outputSlotIndex:0 },
60*89c4ff92SAndroid Build Coastguard Worker                         }],
61*89c4ff92SAndroid Build Coastguard Worker                     outputSlots: [{
62*89c4ff92SAndroid Build Coastguard Worker                         index: 0,
63*89c4ff92SAndroid Build Coastguard Worker                         tensorInfo: {
64*89c4ff92SAndroid Build Coastguard Worker                             dimensions: )" + outputShape + R"(,
65*89c4ff92SAndroid Build Coastguard Worker                             dataType: )" + dataType + R"(,
66*89c4ff92SAndroid Build Coastguard Worker                             quantizationScale: 2.0,
67*89c4ff92SAndroid Build Coastguard Worker                             quantizationOffset: 0
68*89c4ff92SAndroid Build Coastguard Worker                         },
69*89c4ff92SAndroid Build Coastguard Worker                         }],
70*89c4ff92SAndroid Build Coastguard Worker                     },
71*89c4ff92SAndroid Build Coastguard Worker                 descriptor: {
72*89c4ff92SAndroid Build Coastguard Worker                     biasEnabled: false,
73*89c4ff92SAndroid Build Coastguard Worker                     transposeWeightsMatrix: true
74*89c4ff92SAndroid Build Coastguard Worker                     },
75*89c4ff92SAndroid Build Coastguard Worker                 weights: {
76*89c4ff92SAndroid Build Coastguard Worker                     info: {
77*89c4ff92SAndroid Build Coastguard Worker                              dimensions: )" + weightsShape + R"(,
78*89c4ff92SAndroid Build Coastguard Worker                              dataType: )" + dataType + R"(,
79*89c4ff92SAndroid Build Coastguard Worker                              quantizationScale: 1.0,
80*89c4ff92SAndroid Build Coastguard Worker                              quantizationOffset: 0
81*89c4ff92SAndroid Build Coastguard Worker                          },
82*89c4ff92SAndroid Build Coastguard Worker                     data_type: ByteData,
83*89c4ff92SAndroid Build Coastguard Worker                     data: {
84*89c4ff92SAndroid Build Coastguard Worker                         data: [
85*89c4ff92SAndroid Build Coastguard Worker                             2, 3, 4, 5
86*89c4ff92SAndroid Build Coastguard Worker                             ],
87*89c4ff92SAndroid Build Coastguard Worker                         }
88*89c4ff92SAndroid Build Coastguard Worker                     }
89*89c4ff92SAndroid Build Coastguard Worker                 },
90*89c4ff92SAndroid Build Coastguard Worker             },
91*89c4ff92SAndroid Build Coastguard Worker             {
92*89c4ff92SAndroid Build Coastguard Worker             layer_type: "OutputLayer",
93*89c4ff92SAndroid Build Coastguard Worker             layer: {
94*89c4ff92SAndroid Build Coastguard Worker                 base:{
95*89c4ff92SAndroid Build Coastguard Worker                     layerBindingId: 0,
96*89c4ff92SAndroid Build Coastguard Worker                     base: {
97*89c4ff92SAndroid Build Coastguard Worker                         index: 2,
98*89c4ff92SAndroid Build Coastguard Worker                         layerName: "OutputLayer",
99*89c4ff92SAndroid Build Coastguard Worker                         layerType: "Output",
100*89c4ff92SAndroid Build Coastguard Worker                         inputSlots: [{
101*89c4ff92SAndroid Build Coastguard Worker                             index: 0,
102*89c4ff92SAndroid Build Coastguard Worker                             connection: {sourceLayerIndex:1, outputSlotIndex:0 },
103*89c4ff92SAndroid Build Coastguard Worker                         }],
104*89c4ff92SAndroid Build Coastguard Worker                         outputSlots: [ {
105*89c4ff92SAndroid Build Coastguard Worker                             index: 0,
106*89c4ff92SAndroid Build Coastguard Worker                             tensorInfo: {
107*89c4ff92SAndroid Build Coastguard Worker                                 dimensions: )" + outputShape + R"(,
108*89c4ff92SAndroid Build Coastguard Worker                                 dataType: )" + dataType + R"(
109*89c4ff92SAndroid Build Coastguard Worker                             },
110*89c4ff92SAndroid Build Coastguard Worker                         }],
111*89c4ff92SAndroid Build Coastguard Worker                     }
112*89c4ff92SAndroid Build Coastguard Worker                 }},
113*89c4ff92SAndroid Build Coastguard Worker             }]
114*89c4ff92SAndroid Build Coastguard Worker         }
115*89c4ff92SAndroid Build Coastguard Worker         )";
116*89c4ff92SAndroid Build Coastguard Worker         Setup();
117*89c4ff92SAndroid Build Coastguard Worker     }
118*89c4ff92SAndroid Build Coastguard Worker };
119*89c4ff92SAndroid Build Coastguard Worker 
120*89c4ff92SAndroid Build Coastguard Worker 
121*89c4ff92SAndroid Build Coastguard Worker struct FullyConnectedFixtureConstantAsInput : public ParserFlatbuffersSerializeFixture
122*89c4ff92SAndroid Build Coastguard Worker {
FullyConnectedFixtureConstantAsInputFullyConnectedFixtureConstantAsInput123*89c4ff92SAndroid Build Coastguard Worker     explicit FullyConnectedFixtureConstantAsInput()
124*89c4ff92SAndroid Build Coastguard Worker     {
125*89c4ff92SAndroid Build Coastguard Worker         m_JsonString = R"(
126*89c4ff92SAndroid Build Coastguard Worker     {
127*89c4ff92SAndroid Build Coastguard Worker       "layers": [
128*89c4ff92SAndroid Build Coastguard Worker         {
129*89c4ff92SAndroid Build Coastguard Worker           "layer_type": "InputLayer",
130*89c4ff92SAndroid Build Coastguard Worker           "layer": {
131*89c4ff92SAndroid Build Coastguard Worker             "base": {
132*89c4ff92SAndroid Build Coastguard Worker               "base": {
133*89c4ff92SAndroid Build Coastguard Worker                 "index": 0,
134*89c4ff92SAndroid Build Coastguard Worker                 "layerName": "InputLayer",
135*89c4ff92SAndroid Build Coastguard Worker                 "layerType": "Input",
136*89c4ff92SAndroid Build Coastguard Worker                 "inputSlots": [
137*89c4ff92SAndroid Build Coastguard Worker 
138*89c4ff92SAndroid Build Coastguard Worker                 ],
139*89c4ff92SAndroid Build Coastguard Worker                 "outputSlots": [
140*89c4ff92SAndroid Build Coastguard Worker                   {
141*89c4ff92SAndroid Build Coastguard Worker                     "index": 0,
142*89c4ff92SAndroid Build Coastguard Worker                     "tensorInfo": {
143*89c4ff92SAndroid Build Coastguard Worker                       "dimensions": [
144*89c4ff92SAndroid Build Coastguard Worker                         1,
145*89c4ff92SAndroid Build Coastguard Worker                         4,
146*89c4ff92SAndroid Build Coastguard Worker                         1,
147*89c4ff92SAndroid Build Coastguard Worker                         1
148*89c4ff92SAndroid Build Coastguard Worker                       ],
149*89c4ff92SAndroid Build Coastguard Worker                       "dataType": "QAsymmU8",
150*89c4ff92SAndroid Build Coastguard Worker                       "quantizationScale": 1.0,
151*89c4ff92SAndroid Build Coastguard Worker                       "quantizationOffset": 0,
152*89c4ff92SAndroid Build Coastguard Worker                       "quantizationDim": 0,
153*89c4ff92SAndroid Build Coastguard Worker                       "dimensionality": 1,
154*89c4ff92SAndroid Build Coastguard Worker                       "dimensionSpecificity": [
155*89c4ff92SAndroid Build Coastguard Worker                         true,
156*89c4ff92SAndroid Build Coastguard Worker                         true,
157*89c4ff92SAndroid Build Coastguard Worker                         true,
158*89c4ff92SAndroid Build Coastguard Worker                         true
159*89c4ff92SAndroid Build Coastguard Worker                       ]
160*89c4ff92SAndroid Build Coastguard Worker                     }
161*89c4ff92SAndroid Build Coastguard Worker                   }
162*89c4ff92SAndroid Build Coastguard Worker                 ]
163*89c4ff92SAndroid Build Coastguard Worker               },
164*89c4ff92SAndroid Build Coastguard Worker               "layerBindingId": 0
165*89c4ff92SAndroid Build Coastguard Worker             }
166*89c4ff92SAndroid Build Coastguard Worker           }
167*89c4ff92SAndroid Build Coastguard Worker         },
168*89c4ff92SAndroid Build Coastguard Worker         {
169*89c4ff92SAndroid Build Coastguard Worker           "layer_type": "FullyConnectedLayer",
170*89c4ff92SAndroid Build Coastguard Worker           "layer": {
171*89c4ff92SAndroid Build Coastguard Worker             "base": {
172*89c4ff92SAndroid Build Coastguard Worker               "index": 1,
173*89c4ff92SAndroid Build Coastguard Worker               "layerName": "FullyConnectedLayer",
174*89c4ff92SAndroid Build Coastguard Worker               "layerType": "FullyConnected",
175*89c4ff92SAndroid Build Coastguard Worker               "inputSlots": [
176*89c4ff92SAndroid Build Coastguard Worker                 {
177*89c4ff92SAndroid Build Coastguard Worker                   "index": 0,
178*89c4ff92SAndroid Build Coastguard Worker                   "connection": {
179*89c4ff92SAndroid Build Coastguard Worker                     "sourceLayerIndex": 0,
180*89c4ff92SAndroid Build Coastguard Worker                     "outputSlotIndex": 0
181*89c4ff92SAndroid Build Coastguard Worker                   }
182*89c4ff92SAndroid Build Coastguard Worker                 },
183*89c4ff92SAndroid Build Coastguard Worker                 {
184*89c4ff92SAndroid Build Coastguard Worker                   "index": 1,
185*89c4ff92SAndroid Build Coastguard Worker                   "connection": {
186*89c4ff92SAndroid Build Coastguard Worker                     "sourceLayerIndex": 2,
187*89c4ff92SAndroid Build Coastguard Worker                     "outputSlotIndex": 0
188*89c4ff92SAndroid Build Coastguard Worker                   }
189*89c4ff92SAndroid Build Coastguard Worker                 }
190*89c4ff92SAndroid Build Coastguard Worker               ],
191*89c4ff92SAndroid Build Coastguard Worker               "outputSlots": [
192*89c4ff92SAndroid Build Coastguard Worker                 {
193*89c4ff92SAndroid Build Coastguard Worker                   "index": 0,
194*89c4ff92SAndroid Build Coastguard Worker                   "tensorInfo": {
195*89c4ff92SAndroid Build Coastguard Worker                     "dimensions": [
196*89c4ff92SAndroid Build Coastguard Worker                       1,
197*89c4ff92SAndroid Build Coastguard Worker                       1
198*89c4ff92SAndroid Build Coastguard Worker                     ],
199*89c4ff92SAndroid Build Coastguard Worker                     "dataType": "QAsymmU8",
200*89c4ff92SAndroid Build Coastguard Worker                     "quantizationScale": 2.0,
201*89c4ff92SAndroid Build Coastguard Worker                     "quantizationOffset": 0,
202*89c4ff92SAndroid Build Coastguard Worker                     "quantizationDim": 0,
203*89c4ff92SAndroid Build Coastguard Worker                     "dimensionality": 1,
204*89c4ff92SAndroid Build Coastguard Worker                     "dimensionSpecificity": [
205*89c4ff92SAndroid Build Coastguard Worker                       true,
206*89c4ff92SAndroid Build Coastguard Worker                       true
207*89c4ff92SAndroid Build Coastguard Worker                     ]
208*89c4ff92SAndroid Build Coastguard Worker                   }
209*89c4ff92SAndroid Build Coastguard Worker                 }
210*89c4ff92SAndroid Build Coastguard Worker               ]
211*89c4ff92SAndroid Build Coastguard Worker             },
212*89c4ff92SAndroid Build Coastguard Worker             "descriptor": {
213*89c4ff92SAndroid Build Coastguard Worker               "biasEnabled": false,
214*89c4ff92SAndroid Build Coastguard Worker               "transposeWeightsMatrix": true,
215*89c4ff92SAndroid Build Coastguard Worker               "constantWeights": true
216*89c4ff92SAndroid Build Coastguard Worker             }
217*89c4ff92SAndroid Build Coastguard Worker           }
218*89c4ff92SAndroid Build Coastguard Worker         },
219*89c4ff92SAndroid Build Coastguard Worker         {
220*89c4ff92SAndroid Build Coastguard Worker           "layer_type": "ConstantLayer",
221*89c4ff92SAndroid Build Coastguard Worker           "layer": {
222*89c4ff92SAndroid Build Coastguard Worker             "base": {
223*89c4ff92SAndroid Build Coastguard Worker               "index": 2,
224*89c4ff92SAndroid Build Coastguard Worker               "layerName": "",
225*89c4ff92SAndroid Build Coastguard Worker               "layerType": "Constant",
226*89c4ff92SAndroid Build Coastguard Worker               "inputSlots": [
227*89c4ff92SAndroid Build Coastguard Worker 
228*89c4ff92SAndroid Build Coastguard Worker               ],
229*89c4ff92SAndroid Build Coastguard Worker               "outputSlots": [
230*89c4ff92SAndroid Build Coastguard Worker                 {
231*89c4ff92SAndroid Build Coastguard Worker                   "index": 0,
232*89c4ff92SAndroid Build Coastguard Worker                   "tensorInfo": {
233*89c4ff92SAndroid Build Coastguard Worker                     "dimensions": [
234*89c4ff92SAndroid Build Coastguard Worker                       1,
235*89c4ff92SAndroid Build Coastguard Worker                       4
236*89c4ff92SAndroid Build Coastguard Worker                     ],
237*89c4ff92SAndroid Build Coastguard Worker                     "dataType": "QAsymmU8",
238*89c4ff92SAndroid Build Coastguard Worker                     "quantizationScale": 1.0,
239*89c4ff92SAndroid Build Coastguard Worker                     "quantizationOffset": 0,
240*89c4ff92SAndroid Build Coastguard Worker                     "quantizationDim": 0,
241*89c4ff92SAndroid Build Coastguard Worker                     "dimensionality": 1,
242*89c4ff92SAndroid Build Coastguard Worker                     "dimensionSpecificity": [
243*89c4ff92SAndroid Build Coastguard Worker                       true,
244*89c4ff92SAndroid Build Coastguard Worker                       true
245*89c4ff92SAndroid Build Coastguard Worker                     ],
246*89c4ff92SAndroid Build Coastguard Worker                     "isConstant": true,
247*89c4ff92SAndroid Build Coastguard Worker                   }
248*89c4ff92SAndroid Build Coastguard Worker                 }
249*89c4ff92SAndroid Build Coastguard Worker               ]
250*89c4ff92SAndroid Build Coastguard Worker             },
251*89c4ff92SAndroid Build Coastguard Worker             "input": {
252*89c4ff92SAndroid Build Coastguard Worker               "info": {
253*89c4ff92SAndroid Build Coastguard Worker                 "dimensions": [
254*89c4ff92SAndroid Build Coastguard Worker                   1,
255*89c4ff92SAndroid Build Coastguard Worker                   4
256*89c4ff92SAndroid Build Coastguard Worker                 ],
257*89c4ff92SAndroid Build Coastguard Worker                 "dataType": "QAsymmU8",
258*89c4ff92SAndroid Build Coastguard Worker                 "quantizationScale": 1.0,
259*89c4ff92SAndroid Build Coastguard Worker                 "quantizationOffset": 0,
260*89c4ff92SAndroid Build Coastguard Worker                 "quantizationDim": 0,
261*89c4ff92SAndroid Build Coastguard Worker                 "dimensionality": 1,
262*89c4ff92SAndroid Build Coastguard Worker                 "dimensionSpecificity": [
263*89c4ff92SAndroid Build Coastguard Worker                   true,
264*89c4ff92SAndroid Build Coastguard Worker                   true
265*89c4ff92SAndroid Build Coastguard Worker                 ]
266*89c4ff92SAndroid Build Coastguard Worker               },
267*89c4ff92SAndroid Build Coastguard Worker               "data_type": "ByteData",
268*89c4ff92SAndroid Build Coastguard Worker               "data": {
269*89c4ff92SAndroid Build Coastguard Worker                 "data": [
270*89c4ff92SAndroid Build Coastguard Worker                   2,
271*89c4ff92SAndroid Build Coastguard Worker                   3,
272*89c4ff92SAndroid Build Coastguard Worker                   4,
273*89c4ff92SAndroid Build Coastguard Worker                   5
274*89c4ff92SAndroid Build Coastguard Worker                 ]
275*89c4ff92SAndroid Build Coastguard Worker               }
276*89c4ff92SAndroid Build Coastguard Worker             }
277*89c4ff92SAndroid Build Coastguard Worker           }
278*89c4ff92SAndroid Build Coastguard Worker         },
279*89c4ff92SAndroid Build Coastguard Worker         {
280*89c4ff92SAndroid Build Coastguard Worker           "layer_type": "OutputLayer",
281*89c4ff92SAndroid Build Coastguard Worker           "layer": {
282*89c4ff92SAndroid Build Coastguard Worker             "base": {
283*89c4ff92SAndroid Build Coastguard Worker               "base": {
284*89c4ff92SAndroid Build Coastguard Worker                 "index": 3,
285*89c4ff92SAndroid Build Coastguard Worker                 "layerName": "OutputLayer",
286*89c4ff92SAndroid Build Coastguard Worker                 "layerType": "Output",
287*89c4ff92SAndroid Build Coastguard Worker                 "inputSlots": [
288*89c4ff92SAndroid Build Coastguard Worker                   {
289*89c4ff92SAndroid Build Coastguard Worker                     "index": 0,
290*89c4ff92SAndroid Build Coastguard Worker                     "connection": {
291*89c4ff92SAndroid Build Coastguard Worker                       "sourceLayerIndex": 1,
292*89c4ff92SAndroid Build Coastguard Worker                       "outputSlotIndex": 0
293*89c4ff92SAndroid Build Coastguard Worker                     }
294*89c4ff92SAndroid Build Coastguard Worker                   }
295*89c4ff92SAndroid Build Coastguard Worker                 ],
296*89c4ff92SAndroid Build Coastguard Worker                 "outputSlots": [
297*89c4ff92SAndroid Build Coastguard Worker 
298*89c4ff92SAndroid Build Coastguard Worker                 ]
299*89c4ff92SAndroid Build Coastguard Worker               },
300*89c4ff92SAndroid Build Coastguard Worker               "layerBindingId": 0
301*89c4ff92SAndroid Build Coastguard Worker             }
302*89c4ff92SAndroid Build Coastguard Worker           }
303*89c4ff92SAndroid Build Coastguard Worker         }
304*89c4ff92SAndroid Build Coastguard Worker       ],
305*89c4ff92SAndroid Build Coastguard Worker       "inputIds": [
306*89c4ff92SAndroid Build Coastguard Worker         0
307*89c4ff92SAndroid Build Coastguard Worker       ],
308*89c4ff92SAndroid Build Coastguard Worker       "outputIds": [
309*89c4ff92SAndroid Build Coastguard Worker         0
310*89c4ff92SAndroid Build Coastguard Worker       ],
311*89c4ff92SAndroid Build Coastguard Worker       "featureVersions": {
312*89c4ff92SAndroid Build Coastguard Worker         "bindingIdsScheme": 1,
313*89c4ff92SAndroid Build Coastguard Worker         "weightsLayoutScheme": 1,
314*89c4ff92SAndroid Build Coastguard Worker         "constantTensorsAsInputs": 1
315*89c4ff92SAndroid Build Coastguard Worker       }
316*89c4ff92SAndroid Build Coastguard Worker     }
317*89c4ff92SAndroid Build Coastguard Worker     )";
318*89c4ff92SAndroid Build Coastguard Worker         Setup();
319*89c4ff92SAndroid Build Coastguard Worker     }
320*89c4ff92SAndroid Build Coastguard Worker };
321*89c4ff92SAndroid Build Coastguard Worker 
322*89c4ff92SAndroid Build Coastguard Worker struct FullyConnectedWithNoBiasFixture : FullyConnectedFixture
323*89c4ff92SAndroid Build Coastguard Worker {
FullyConnectedWithNoBiasFixtureFullyConnectedWithNoBiasFixture324*89c4ff92SAndroid Build Coastguard Worker     FullyConnectedWithNoBiasFixture()
325*89c4ff92SAndroid Build Coastguard Worker             : FullyConnectedFixture("[ 1, 4, 1, 1 ]",     // inputShape
326*89c4ff92SAndroid Build Coastguard Worker                                     "[ 1, 1 ]",           // outputShape
327*89c4ff92SAndroid Build Coastguard Worker                                     "[ 1, 4 ]",           // filterShape
328*89c4ff92SAndroid Build Coastguard Worker                                     "QuantisedAsymm8")    // filterData
329*89c4ff92SAndroid Build Coastguard Worker     {}
330*89c4ff92SAndroid Build Coastguard Worker };
331*89c4ff92SAndroid Build Coastguard Worker 
332*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(FullyConnectedWithNoBiasFixture, "FullyConnectedWithNoBias")
333*89c4ff92SAndroid Build Coastguard Worker {
334*89c4ff92SAndroid Build Coastguard Worker     // Weights and biases used to be always constant and were stored as members of the layer. This has changed and
335*89c4ff92SAndroid Build Coastguard Worker     // they are now passed as inputs (ConstantLayer) but the old way can still be used for now.
336*89c4ff92SAndroid Build Coastguard Worker     RunTest<2, armnn::DataType::QAsymmU8>(
337*89c4ff92SAndroid Build Coastguard Worker             0,
338*89c4ff92SAndroid Build Coastguard Worker             {{"InputLayer",  { 10, 20, 30, 40 }}},
339*89c4ff92SAndroid Build Coastguard Worker             {{"OutputLayer", { 400/2 }}});
340*89c4ff92SAndroid Build Coastguard Worker }
341*89c4ff92SAndroid Build Coastguard Worker 
342*89c4ff92SAndroid Build Coastguard Worker struct FullyConnectedWithNoBiasFixtureConstantAsInput : FullyConnectedFixtureConstantAsInput
343*89c4ff92SAndroid Build Coastguard Worker {
FullyConnectedWithNoBiasFixtureConstantAsInputFullyConnectedWithNoBiasFixtureConstantAsInput344*89c4ff92SAndroid Build Coastguard Worker     FullyConnectedWithNoBiasFixtureConstantAsInput()
345*89c4ff92SAndroid Build Coastguard Worker             : FullyConnectedFixtureConstantAsInput()
346*89c4ff92SAndroid Build Coastguard Worker     {}
347*89c4ff92SAndroid Build Coastguard Worker };
348*89c4ff92SAndroid Build Coastguard Worker 
349*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(FullyConnectedWithNoBiasFixtureConstantAsInput, "FullyConnectedWithNoBiasConstantAsInput")
350*89c4ff92SAndroid Build Coastguard Worker {
351*89c4ff92SAndroid Build Coastguard Worker     RunTest<2, armnn::DataType::QAsymmU8>(
352*89c4ff92SAndroid Build Coastguard Worker             0,
353*89c4ff92SAndroid Build Coastguard Worker             {{"InputLayer",  { 10, 20, 30, 40 }}},
354*89c4ff92SAndroid Build Coastguard Worker             {{"OutputLayer", { 400/2 }}});
355*89c4ff92SAndroid Build Coastguard Worker }
356*89c4ff92SAndroid Build Coastguard Worker 
357*89c4ff92SAndroid Build Coastguard Worker }
358