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