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 "armnnOnnxParser/IOnnxParser.hpp" 7*89c4ff92SAndroid Build Coastguard Worker #include "ParserPrototxtFixture.hpp" 8*89c4ff92SAndroid Build Coastguard Worker 9*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("OnnxParser_Conv2D") 10*89c4ff92SAndroid Build Coastguard Worker { 11*89c4ff92SAndroid Build Coastguard Worker struct SimpleConv2DFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 12*89c4ff92SAndroid Build Coastguard Worker { SimpleConv2DFixtureSimpleConv2DFixture13*89c4ff92SAndroid Build Coastguard Worker SimpleConv2DFixture() 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 16*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 17*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 18*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 19*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 20*89c4ff92SAndroid Build Coastguard Worker model_version: 1 21*89c4ff92SAndroid Build Coastguard Worker graph { 22*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 23*89c4ff92SAndroid Build Coastguard Worker input { 24*89c4ff92SAndroid Build Coastguard Worker name: "Input" 25*89c4ff92SAndroid Build Coastguard Worker type { 26*89c4ff92SAndroid Build Coastguard Worker tensor_type { 27*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 28*89c4ff92SAndroid Build Coastguard Worker shape { 29*89c4ff92SAndroid Build Coastguard Worker dim { 30*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 31*89c4ff92SAndroid Build Coastguard Worker } 32*89c4ff92SAndroid Build Coastguard Worker dim { 33*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 34*89c4ff92SAndroid Build Coastguard Worker } 35*89c4ff92SAndroid Build Coastguard Worker dim { 36*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 37*89c4ff92SAndroid Build Coastguard Worker } 38*89c4ff92SAndroid Build Coastguard Worker dim { 39*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 40*89c4ff92SAndroid Build Coastguard Worker } 41*89c4ff92SAndroid Build Coastguard Worker } 42*89c4ff92SAndroid Build Coastguard Worker } 43*89c4ff92SAndroid Build Coastguard Worker } 44*89c4ff92SAndroid Build Coastguard Worker } 45*89c4ff92SAndroid Build Coastguard Worker input { 46*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 47*89c4ff92SAndroid Build Coastguard Worker type { 48*89c4ff92SAndroid Build Coastguard Worker tensor_type { 49*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 50*89c4ff92SAndroid Build Coastguard Worker shape { 51*89c4ff92SAndroid Build Coastguard Worker dim { 52*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 53*89c4ff92SAndroid Build Coastguard Worker } 54*89c4ff92SAndroid Build Coastguard Worker dim { 55*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 56*89c4ff92SAndroid Build Coastguard Worker } 57*89c4ff92SAndroid Build Coastguard Worker dim { 58*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 59*89c4ff92SAndroid Build Coastguard Worker } 60*89c4ff92SAndroid Build Coastguard Worker dim { 61*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 62*89c4ff92SAndroid Build Coastguard Worker } 63*89c4ff92SAndroid Build Coastguard Worker } 64*89c4ff92SAndroid Build Coastguard Worker } 65*89c4ff92SAndroid Build Coastguard Worker } 66*89c4ff92SAndroid Build Coastguard Worker } 67*89c4ff92SAndroid Build Coastguard Worker initializer { 68*89c4ff92SAndroid Build Coastguard Worker dims: 1 69*89c4ff92SAndroid Build Coastguard Worker dims: 1 70*89c4ff92SAndroid Build Coastguard Worker dims: 3 71*89c4ff92SAndroid Build Coastguard Worker dims: 3 72*89c4ff92SAndroid Build Coastguard Worker data_type: 1 73*89c4ff92SAndroid Build Coastguard Worker float_data: 2 74*89c4ff92SAndroid Build Coastguard Worker float_data: 1 75*89c4ff92SAndroid Build Coastguard Worker float_data: 0 76*89c4ff92SAndroid Build Coastguard Worker float_data: 6 77*89c4ff92SAndroid Build Coastguard Worker float_data: 2 78*89c4ff92SAndroid Build Coastguard Worker float_data: 1 79*89c4ff92SAndroid Build Coastguard Worker float_data: 4 80*89c4ff92SAndroid Build Coastguard Worker float_data: 1 81*89c4ff92SAndroid Build Coastguard Worker float_data: 2 82*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 83*89c4ff92SAndroid Build Coastguard Worker } 84*89c4ff92SAndroid Build Coastguard Worker node { 85*89c4ff92SAndroid Build Coastguard Worker input: "Input" 86*89c4ff92SAndroid Build Coastguard Worker input: "Weight" 87*89c4ff92SAndroid Build Coastguard Worker output: "Output" 88*89c4ff92SAndroid Build Coastguard Worker name: "Convolution" 89*89c4ff92SAndroid Build Coastguard Worker op_type: "Conv" 90*89c4ff92SAndroid Build Coastguard Worker attribute { 91*89c4ff92SAndroid Build Coastguard Worker name: "kernel_shape" 92*89c4ff92SAndroid Build Coastguard Worker ints: 3 93*89c4ff92SAndroid Build Coastguard Worker ints: 3 94*89c4ff92SAndroid Build Coastguard Worker type: INTS 95*89c4ff92SAndroid Build Coastguard Worker } 96*89c4ff92SAndroid Build Coastguard Worker attribute { 97*89c4ff92SAndroid Build Coastguard Worker name: "strides" 98*89c4ff92SAndroid Build Coastguard Worker ints: 1 99*89c4ff92SAndroid Build Coastguard Worker ints: 1 100*89c4ff92SAndroid Build Coastguard Worker type: INTS 101*89c4ff92SAndroid Build Coastguard Worker } 102*89c4ff92SAndroid Build Coastguard Worker attribute { 103*89c4ff92SAndroid Build Coastguard Worker name: "auto_pad" 104*89c4ff92SAndroid Build Coastguard Worker s: "VALID" 105*89c4ff92SAndroid Build Coastguard Worker type: STRING 106*89c4ff92SAndroid Build Coastguard Worker } 107*89c4ff92SAndroid Build Coastguard Worker attribute { 108*89c4ff92SAndroid Build Coastguard Worker name: "group" 109*89c4ff92SAndroid Build Coastguard Worker i: 1 110*89c4ff92SAndroid Build Coastguard Worker type: INT 111*89c4ff92SAndroid Build Coastguard Worker } 112*89c4ff92SAndroid Build Coastguard Worker attribute { 113*89c4ff92SAndroid Build Coastguard Worker name: "dilations" 114*89c4ff92SAndroid Build Coastguard Worker ints: 1 115*89c4ff92SAndroid Build Coastguard Worker ints: 1 116*89c4ff92SAndroid Build Coastguard Worker type: INTS 117*89c4ff92SAndroid Build Coastguard Worker } 118*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 119*89c4ff92SAndroid Build Coastguard Worker domain: "" 120*89c4ff92SAndroid Build Coastguard Worker } 121*89c4ff92SAndroid Build Coastguard Worker output { 122*89c4ff92SAndroid Build Coastguard Worker name: "Output" 123*89c4ff92SAndroid Build Coastguard Worker type { 124*89c4ff92SAndroid Build Coastguard Worker tensor_type { 125*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 126*89c4ff92SAndroid Build Coastguard Worker shape { 127*89c4ff92SAndroid Build Coastguard Worker dim { 128*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 129*89c4ff92SAndroid Build Coastguard Worker } 130*89c4ff92SAndroid Build Coastguard Worker dim { 131*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 132*89c4ff92SAndroid Build Coastguard Worker } 133*89c4ff92SAndroid Build Coastguard Worker dim { 134*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 135*89c4ff92SAndroid Build Coastguard Worker } 136*89c4ff92SAndroid Build Coastguard Worker dim { 137*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 138*89c4ff92SAndroid Build Coastguard Worker } 139*89c4ff92SAndroid Build Coastguard Worker } 140*89c4ff92SAndroid Build Coastguard Worker } 141*89c4ff92SAndroid Build Coastguard Worker } 142*89c4ff92SAndroid Build Coastguard Worker } 143*89c4ff92SAndroid Build Coastguard Worker } 144*89c4ff92SAndroid Build Coastguard Worker opset_import { 145*89c4ff92SAndroid Build Coastguard Worker version: 7 146*89c4ff92SAndroid Build Coastguard Worker })"; 147*89c4ff92SAndroid Build Coastguard Worker Setup(); 148*89c4ff92SAndroid Build Coastguard Worker } 149*89c4ff92SAndroid Build Coastguard Worker }; 150*89c4ff92SAndroid Build Coastguard Worker 151*89c4ff92SAndroid Build Coastguard Worker struct Conv2DWithBiasesFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 152*89c4ff92SAndroid Build Coastguard Worker { Conv2DWithBiasesFixtureConv2DWithBiasesFixture153*89c4ff92SAndroid Build Coastguard Worker Conv2DWithBiasesFixture() { 154*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 155*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 156*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 157*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 158*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 159*89c4ff92SAndroid Build Coastguard Worker model_version: 1 160*89c4ff92SAndroid Build Coastguard Worker graph { 161*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 162*89c4ff92SAndroid Build Coastguard Worker input { 163*89c4ff92SAndroid Build Coastguard Worker name: "Input" 164*89c4ff92SAndroid Build Coastguard Worker type { 165*89c4ff92SAndroid Build Coastguard Worker tensor_type { 166*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 167*89c4ff92SAndroid Build Coastguard Worker shape { 168*89c4ff92SAndroid Build Coastguard Worker dim { 169*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 170*89c4ff92SAndroid Build Coastguard Worker } 171*89c4ff92SAndroid Build Coastguard Worker dim { 172*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 173*89c4ff92SAndroid Build Coastguard Worker } 174*89c4ff92SAndroid Build Coastguard Worker dim { 175*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 176*89c4ff92SAndroid Build Coastguard Worker } 177*89c4ff92SAndroid Build Coastguard Worker dim { 178*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 179*89c4ff92SAndroid Build Coastguard Worker } 180*89c4ff92SAndroid Build Coastguard Worker } 181*89c4ff92SAndroid Build Coastguard Worker } 182*89c4ff92SAndroid Build Coastguard Worker } 183*89c4ff92SAndroid Build Coastguard Worker } 184*89c4ff92SAndroid Build Coastguard Worker input { 185*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 186*89c4ff92SAndroid Build Coastguard Worker type { 187*89c4ff92SAndroid Build Coastguard Worker tensor_type { 188*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 189*89c4ff92SAndroid Build Coastguard Worker shape { 190*89c4ff92SAndroid Build Coastguard Worker dim { 191*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 192*89c4ff92SAndroid Build Coastguard Worker } 193*89c4ff92SAndroid Build Coastguard Worker dim { 194*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 195*89c4ff92SAndroid Build Coastguard Worker } 196*89c4ff92SAndroid Build Coastguard Worker dim { 197*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 198*89c4ff92SAndroid Build Coastguard Worker } 199*89c4ff92SAndroid Build Coastguard Worker dim { 200*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 201*89c4ff92SAndroid Build Coastguard Worker } 202*89c4ff92SAndroid Build Coastguard Worker } 203*89c4ff92SAndroid Build Coastguard Worker } 204*89c4ff92SAndroid Build Coastguard Worker } 205*89c4ff92SAndroid Build Coastguard Worker } 206*89c4ff92SAndroid Build Coastguard Worker initializer { 207*89c4ff92SAndroid Build Coastguard Worker dims: 1 208*89c4ff92SAndroid Build Coastguard Worker dims: 1 209*89c4ff92SAndroid Build Coastguard Worker dims: 2 210*89c4ff92SAndroid Build Coastguard Worker dims: 2 211*89c4ff92SAndroid Build Coastguard Worker data_type: 1 212*89c4ff92SAndroid Build Coastguard Worker float_data: 2 213*89c4ff92SAndroid Build Coastguard Worker float_data: 1 214*89c4ff92SAndroid Build Coastguard Worker float_data: 0 215*89c4ff92SAndroid Build Coastguard Worker float_data: 6 216*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 217*89c4ff92SAndroid Build Coastguard Worker } 218*89c4ff92SAndroid Build Coastguard Worker input { 219*89c4ff92SAndroid Build Coastguard Worker name: "Bias" 220*89c4ff92SAndroid Build Coastguard Worker type { 221*89c4ff92SAndroid Build Coastguard Worker tensor_type { 222*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 223*89c4ff92SAndroid Build Coastguard Worker shape { 224*89c4ff92SAndroid Build Coastguard Worker dim { 225*89c4ff92SAndroid Build Coastguard Worker dim_value: 4 226*89c4ff92SAndroid Build Coastguard Worker } 227*89c4ff92SAndroid Build Coastguard Worker } 228*89c4ff92SAndroid Build Coastguard Worker } 229*89c4ff92SAndroid Build Coastguard Worker } 230*89c4ff92SAndroid Build Coastguard Worker } 231*89c4ff92SAndroid Build Coastguard Worker initializer { 232*89c4ff92SAndroid Build Coastguard Worker dims: 4 233*89c4ff92SAndroid Build Coastguard Worker data_type: 1 234*89c4ff92SAndroid Build Coastguard Worker float_data: 10 235*89c4ff92SAndroid Build Coastguard Worker float_data: 0 236*89c4ff92SAndroid Build Coastguard Worker float_data: 0 237*89c4ff92SAndroid Build Coastguard Worker float_data: 0 238*89c4ff92SAndroid Build Coastguard Worker name: "Bias" 239*89c4ff92SAndroid Build Coastguard Worker } 240*89c4ff92SAndroid Build Coastguard Worker node { 241*89c4ff92SAndroid Build Coastguard Worker input: "Input" 242*89c4ff92SAndroid Build Coastguard Worker input: "Weight" 243*89c4ff92SAndroid Build Coastguard Worker input: "Bias" 244*89c4ff92SAndroid Build Coastguard Worker output: "Output" 245*89c4ff92SAndroid Build Coastguard Worker name: "Convolution" 246*89c4ff92SAndroid Build Coastguard Worker op_type: "Conv" 247*89c4ff92SAndroid Build Coastguard Worker attribute { 248*89c4ff92SAndroid Build Coastguard Worker name: "kernel_shape" 249*89c4ff92SAndroid Build Coastguard Worker ints: 2 250*89c4ff92SAndroid Build Coastguard Worker ints: 2 251*89c4ff92SAndroid Build Coastguard Worker type: INTS 252*89c4ff92SAndroid Build Coastguard Worker } 253*89c4ff92SAndroid Build Coastguard Worker attribute { 254*89c4ff92SAndroid Build Coastguard Worker name: "strides" 255*89c4ff92SAndroid Build Coastguard Worker ints: 1 256*89c4ff92SAndroid Build Coastguard Worker ints: 1 257*89c4ff92SAndroid Build Coastguard Worker type: INTS 258*89c4ff92SAndroid Build Coastguard Worker } 259*89c4ff92SAndroid Build Coastguard Worker attribute { 260*89c4ff92SAndroid Build Coastguard Worker name: "auto_pad" 261*89c4ff92SAndroid Build Coastguard Worker s: "SAME_UPPER" 262*89c4ff92SAndroid Build Coastguard Worker type: STRING 263*89c4ff92SAndroid Build Coastguard Worker } 264*89c4ff92SAndroid Build Coastguard Worker attribute { 265*89c4ff92SAndroid Build Coastguard Worker name: "group" 266*89c4ff92SAndroid Build Coastguard Worker i: 1 267*89c4ff92SAndroid Build Coastguard Worker type: INT 268*89c4ff92SAndroid Build Coastguard Worker } 269*89c4ff92SAndroid Build Coastguard Worker attribute { 270*89c4ff92SAndroid Build Coastguard Worker name: "dilations" 271*89c4ff92SAndroid Build Coastguard Worker ints: 1 272*89c4ff92SAndroid Build Coastguard Worker ints: 1 273*89c4ff92SAndroid Build Coastguard Worker type: INTS 274*89c4ff92SAndroid Build Coastguard Worker } 275*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 276*89c4ff92SAndroid Build Coastguard Worker domain: "" 277*89c4ff92SAndroid Build Coastguard Worker } 278*89c4ff92SAndroid Build Coastguard Worker output { 279*89c4ff92SAndroid Build Coastguard Worker name: "Output" 280*89c4ff92SAndroid Build Coastguard Worker type { 281*89c4ff92SAndroid Build Coastguard Worker tensor_type { 282*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 283*89c4ff92SAndroid Build Coastguard Worker shape { 284*89c4ff92SAndroid Build Coastguard Worker dim { 285*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 286*89c4ff92SAndroid Build Coastguard Worker } 287*89c4ff92SAndroid Build Coastguard Worker dim { 288*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 289*89c4ff92SAndroid Build Coastguard Worker } 290*89c4ff92SAndroid Build Coastguard Worker dim { 291*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 292*89c4ff92SAndroid Build Coastguard Worker } 293*89c4ff92SAndroid Build Coastguard Worker dim { 294*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 295*89c4ff92SAndroid Build Coastguard Worker } 296*89c4ff92SAndroid Build Coastguard Worker } 297*89c4ff92SAndroid Build Coastguard Worker } 298*89c4ff92SAndroid Build Coastguard Worker } 299*89c4ff92SAndroid Build Coastguard Worker } 300*89c4ff92SAndroid Build Coastguard Worker } 301*89c4ff92SAndroid Build Coastguard Worker opset_import { 302*89c4ff92SAndroid Build Coastguard Worker version: 7 303*89c4ff92SAndroid Build Coastguard Worker })"; 304*89c4ff92SAndroid Build Coastguard Worker Setup(); 305*89c4ff92SAndroid Build Coastguard Worker } 306*89c4ff92SAndroid Build Coastguard Worker }; 307*89c4ff92SAndroid Build Coastguard Worker 308*89c4ff92SAndroid Build Coastguard Worker 309*89c4ff92SAndroid Build Coastguard Worker struct Conv2DDimReducingFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 310*89c4ff92SAndroid Build Coastguard Worker { Conv2DDimReducingFixtureConv2DDimReducingFixture311*89c4ff92SAndroid Build Coastguard Worker Conv2DDimReducingFixture() { 312*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 313*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 314*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 315*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 316*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 317*89c4ff92SAndroid Build Coastguard Worker model_version: 1 318*89c4ff92SAndroid Build Coastguard Worker graph { 319*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 320*89c4ff92SAndroid Build Coastguard Worker input { 321*89c4ff92SAndroid Build Coastguard Worker name: "Input" 322*89c4ff92SAndroid Build Coastguard Worker type { 323*89c4ff92SAndroid Build Coastguard Worker tensor_type { 324*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 325*89c4ff92SAndroid Build Coastguard Worker shape { 326*89c4ff92SAndroid Build Coastguard Worker dim { 327*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 328*89c4ff92SAndroid Build Coastguard Worker } 329*89c4ff92SAndroid Build Coastguard Worker dim { 330*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 331*89c4ff92SAndroid Build Coastguard Worker } 332*89c4ff92SAndroid Build Coastguard Worker dim { 333*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 334*89c4ff92SAndroid Build Coastguard Worker } 335*89c4ff92SAndroid Build Coastguard Worker dim { 336*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 337*89c4ff92SAndroid Build Coastguard Worker } 338*89c4ff92SAndroid Build Coastguard Worker } 339*89c4ff92SAndroid Build Coastguard Worker } 340*89c4ff92SAndroid Build Coastguard Worker } 341*89c4ff92SAndroid Build Coastguard Worker } 342*89c4ff92SAndroid Build Coastguard Worker input { 343*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 344*89c4ff92SAndroid Build Coastguard Worker type { 345*89c4ff92SAndroid Build Coastguard Worker tensor_type { 346*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 347*89c4ff92SAndroid Build Coastguard Worker shape { 348*89c4ff92SAndroid Build Coastguard Worker dim { 349*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 350*89c4ff92SAndroid Build Coastguard Worker } 351*89c4ff92SAndroid Build Coastguard Worker dim { 352*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 353*89c4ff92SAndroid Build Coastguard Worker } 354*89c4ff92SAndroid Build Coastguard Worker dim { 355*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 356*89c4ff92SAndroid Build Coastguard Worker } 357*89c4ff92SAndroid Build Coastguard Worker dim { 358*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 359*89c4ff92SAndroid Build Coastguard Worker } 360*89c4ff92SAndroid Build Coastguard Worker } 361*89c4ff92SAndroid Build Coastguard Worker } 362*89c4ff92SAndroid Build Coastguard Worker } 363*89c4ff92SAndroid Build Coastguard Worker } 364*89c4ff92SAndroid Build Coastguard Worker initializer { 365*89c4ff92SAndroid Build Coastguard Worker dims: 2 366*89c4ff92SAndroid Build Coastguard Worker dims: 3 367*89c4ff92SAndroid Build Coastguard Worker dims: 1 368*89c4ff92SAndroid Build Coastguard Worker dims: 1 369*89c4ff92SAndroid Build Coastguard Worker data_type: 1 370*89c4ff92SAndroid Build Coastguard Worker float_data: -1 371*89c4ff92SAndroid Build Coastguard Worker float_data: 2 372*89c4ff92SAndroid Build Coastguard Worker float_data: 0 373*89c4ff92SAndroid Build Coastguard Worker float_data: 1 374*89c4ff92SAndroid Build Coastguard Worker float_data: 0 375*89c4ff92SAndroid Build Coastguard Worker float_data: 0 376*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 377*89c4ff92SAndroid Build Coastguard Worker } 378*89c4ff92SAndroid Build Coastguard Worker node { 379*89c4ff92SAndroid Build Coastguard Worker input: "Input" 380*89c4ff92SAndroid Build Coastguard Worker input: "Weight" 381*89c4ff92SAndroid Build Coastguard Worker output: "Output" 382*89c4ff92SAndroid Build Coastguard Worker name: "Convolution" 383*89c4ff92SAndroid Build Coastguard Worker op_type: "Conv" 384*89c4ff92SAndroid Build Coastguard Worker attribute { 385*89c4ff92SAndroid Build Coastguard Worker name: "kernel_shape" 386*89c4ff92SAndroid Build Coastguard Worker ints: 1 387*89c4ff92SAndroid Build Coastguard Worker ints: 1 388*89c4ff92SAndroid Build Coastguard Worker type: INTS 389*89c4ff92SAndroid Build Coastguard Worker } 390*89c4ff92SAndroid Build Coastguard Worker attribute { 391*89c4ff92SAndroid Build Coastguard Worker name: "strides" 392*89c4ff92SAndroid Build Coastguard Worker ints: 1 393*89c4ff92SAndroid Build Coastguard Worker ints: 1 394*89c4ff92SAndroid Build Coastguard Worker type: INTS 395*89c4ff92SAndroid Build Coastguard Worker } 396*89c4ff92SAndroid Build Coastguard Worker attribute { 397*89c4ff92SAndroid Build Coastguard Worker name: "group" 398*89c4ff92SAndroid Build Coastguard Worker i: 1 399*89c4ff92SAndroid Build Coastguard Worker type: INT 400*89c4ff92SAndroid Build Coastguard Worker } 401*89c4ff92SAndroid Build Coastguard Worker attribute { 402*89c4ff92SAndroid Build Coastguard Worker name: "dilations" 403*89c4ff92SAndroid Build Coastguard Worker ints: 1 404*89c4ff92SAndroid Build Coastguard Worker ints: 1 405*89c4ff92SAndroid Build Coastguard Worker type: INTS 406*89c4ff92SAndroid Build Coastguard Worker } 407*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 408*89c4ff92SAndroid Build Coastguard Worker domain: "" 409*89c4ff92SAndroid Build Coastguard Worker } 410*89c4ff92SAndroid Build Coastguard Worker output { 411*89c4ff92SAndroid Build Coastguard Worker name: "Output" 412*89c4ff92SAndroid Build Coastguard Worker type { 413*89c4ff92SAndroid Build Coastguard Worker tensor_type { 414*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 415*89c4ff92SAndroid Build Coastguard Worker shape { 416*89c4ff92SAndroid Build Coastguard Worker dim { 417*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 418*89c4ff92SAndroid Build Coastguard Worker } 419*89c4ff92SAndroid Build Coastguard Worker dim { 420*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 421*89c4ff92SAndroid Build Coastguard Worker } 422*89c4ff92SAndroid Build Coastguard Worker dim { 423*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 424*89c4ff92SAndroid Build Coastguard Worker } 425*89c4ff92SAndroid Build Coastguard Worker dim { 426*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 427*89c4ff92SAndroid Build Coastguard Worker } 428*89c4ff92SAndroid Build Coastguard Worker } 429*89c4ff92SAndroid Build Coastguard Worker } 430*89c4ff92SAndroid Build Coastguard Worker } 431*89c4ff92SAndroid Build Coastguard Worker } 432*89c4ff92SAndroid Build Coastguard Worker } 433*89c4ff92SAndroid Build Coastguard Worker opset_import { 434*89c4ff92SAndroid Build Coastguard Worker version: 7 435*89c4ff92SAndroid Build Coastguard Worker })"; 436*89c4ff92SAndroid Build Coastguard Worker Setup(); 437*89c4ff92SAndroid Build Coastguard Worker } 438*89c4ff92SAndroid Build Coastguard Worker }; 439*89c4ff92SAndroid Build Coastguard Worker 440*89c4ff92SAndroid Build Coastguard Worker struct Conv2DwithDilationFixture : public armnnUtils::ParserPrototxtFixture<armnnOnnxParser::IOnnxParser> 441*89c4ff92SAndroid Build Coastguard Worker { Conv2DwithDilationFixtureConv2DwithDilationFixture442*89c4ff92SAndroid Build Coastguard Worker Conv2DwithDilationFixture() 443*89c4ff92SAndroid Build Coastguard Worker { 444*89c4ff92SAndroid Build Coastguard Worker m_Prototext = R"( 445*89c4ff92SAndroid Build Coastguard Worker ir_version: 3 446*89c4ff92SAndroid Build Coastguard Worker producer_name: "CNTK" 447*89c4ff92SAndroid Build Coastguard Worker producer_version: "2.5.1" 448*89c4ff92SAndroid Build Coastguard Worker domain: "ai.cntk" 449*89c4ff92SAndroid Build Coastguard Worker model_version: 1 450*89c4ff92SAndroid Build Coastguard Worker graph { 451*89c4ff92SAndroid Build Coastguard Worker name: "CNTKGraph" 452*89c4ff92SAndroid Build Coastguard Worker input { 453*89c4ff92SAndroid Build Coastguard Worker name: "Input" 454*89c4ff92SAndroid Build Coastguard Worker type { 455*89c4ff92SAndroid Build Coastguard Worker tensor_type { 456*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 457*89c4ff92SAndroid Build Coastguard Worker shape { 458*89c4ff92SAndroid Build Coastguard Worker dim { 459*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 460*89c4ff92SAndroid Build Coastguard Worker } 461*89c4ff92SAndroid Build Coastguard Worker dim { 462*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 463*89c4ff92SAndroid Build Coastguard Worker } 464*89c4ff92SAndroid Build Coastguard Worker dim { 465*89c4ff92SAndroid Build Coastguard Worker dim_value: 6 466*89c4ff92SAndroid Build Coastguard Worker } 467*89c4ff92SAndroid Build Coastguard Worker dim { 468*89c4ff92SAndroid Build Coastguard Worker dim_value: 6 469*89c4ff92SAndroid Build Coastguard Worker } 470*89c4ff92SAndroid Build Coastguard Worker } 471*89c4ff92SAndroid Build Coastguard Worker } 472*89c4ff92SAndroid Build Coastguard Worker } 473*89c4ff92SAndroid Build Coastguard Worker } 474*89c4ff92SAndroid Build Coastguard Worker input { 475*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 476*89c4ff92SAndroid Build Coastguard Worker type { 477*89c4ff92SAndroid Build Coastguard Worker tensor_type { 478*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 479*89c4ff92SAndroid Build Coastguard Worker shape { 480*89c4ff92SAndroid Build Coastguard Worker dim { 481*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 482*89c4ff92SAndroid Build Coastguard Worker } 483*89c4ff92SAndroid Build Coastguard Worker dim { 484*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 485*89c4ff92SAndroid Build Coastguard Worker } 486*89c4ff92SAndroid Build Coastguard Worker dim { 487*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 488*89c4ff92SAndroid Build Coastguard Worker } 489*89c4ff92SAndroid Build Coastguard Worker dim { 490*89c4ff92SAndroid Build Coastguard Worker dim_value: 3 491*89c4ff92SAndroid Build Coastguard Worker } 492*89c4ff92SAndroid Build Coastguard Worker } 493*89c4ff92SAndroid Build Coastguard Worker } 494*89c4ff92SAndroid Build Coastguard Worker } 495*89c4ff92SAndroid Build Coastguard Worker } 496*89c4ff92SAndroid Build Coastguard Worker initializer { 497*89c4ff92SAndroid Build Coastguard Worker dims: 1 498*89c4ff92SAndroid Build Coastguard Worker dims: 1 499*89c4ff92SAndroid Build Coastguard Worker dims: 3 500*89c4ff92SAndroid Build Coastguard Worker dims: 3 501*89c4ff92SAndroid Build Coastguard Worker data_type: 1 502*89c4ff92SAndroid Build Coastguard Worker float_data: 2 503*89c4ff92SAndroid Build Coastguard Worker float_data: 1 504*89c4ff92SAndroid Build Coastguard Worker float_data: 0 505*89c4ff92SAndroid Build Coastguard Worker float_data: 6 506*89c4ff92SAndroid Build Coastguard Worker float_data: 2 507*89c4ff92SAndroid Build Coastguard Worker float_data: 1 508*89c4ff92SAndroid Build Coastguard Worker float_data: 4 509*89c4ff92SAndroid Build Coastguard Worker float_data: 1 510*89c4ff92SAndroid Build Coastguard Worker float_data: 2 511*89c4ff92SAndroid Build Coastguard Worker name: "Weight" 512*89c4ff92SAndroid Build Coastguard Worker } 513*89c4ff92SAndroid Build Coastguard Worker node { 514*89c4ff92SAndroid Build Coastguard Worker input: "Input" 515*89c4ff92SAndroid Build Coastguard Worker input: "Weight" 516*89c4ff92SAndroid Build Coastguard Worker output: "Output" 517*89c4ff92SAndroid Build Coastguard Worker name: "Convolution" 518*89c4ff92SAndroid Build Coastguard Worker op_type: "Conv" 519*89c4ff92SAndroid Build Coastguard Worker attribute { 520*89c4ff92SAndroid Build Coastguard Worker name: "kernel_shape" 521*89c4ff92SAndroid Build Coastguard Worker ints: 3 522*89c4ff92SAndroid Build Coastguard Worker ints: 3 523*89c4ff92SAndroid Build Coastguard Worker type: INTS 524*89c4ff92SAndroid Build Coastguard Worker } 525*89c4ff92SAndroid Build Coastguard Worker attribute { 526*89c4ff92SAndroid Build Coastguard Worker name: "strides" 527*89c4ff92SAndroid Build Coastguard Worker ints: 1 528*89c4ff92SAndroid Build Coastguard Worker ints: 1 529*89c4ff92SAndroid Build Coastguard Worker type: INTS 530*89c4ff92SAndroid Build Coastguard Worker } 531*89c4ff92SAndroid Build Coastguard Worker attribute { 532*89c4ff92SAndroid Build Coastguard Worker name: "auto_pad" 533*89c4ff92SAndroid Build Coastguard Worker s: "VALID" 534*89c4ff92SAndroid Build Coastguard Worker type: STRING 535*89c4ff92SAndroid Build Coastguard Worker } 536*89c4ff92SAndroid Build Coastguard Worker attribute { 537*89c4ff92SAndroid Build Coastguard Worker name: "group" 538*89c4ff92SAndroid Build Coastguard Worker i: 1 539*89c4ff92SAndroid Build Coastguard Worker type: INT 540*89c4ff92SAndroid Build Coastguard Worker } 541*89c4ff92SAndroid Build Coastguard Worker attribute { 542*89c4ff92SAndroid Build Coastguard Worker name: "dilations" 543*89c4ff92SAndroid Build Coastguard Worker ints: 2 544*89c4ff92SAndroid Build Coastguard Worker ints: 2 545*89c4ff92SAndroid Build Coastguard Worker type: INTS 546*89c4ff92SAndroid Build Coastguard Worker } 547*89c4ff92SAndroid Build Coastguard Worker doc_string: "" 548*89c4ff92SAndroid Build Coastguard Worker domain: "" 549*89c4ff92SAndroid Build Coastguard Worker } 550*89c4ff92SAndroid Build Coastguard Worker output { 551*89c4ff92SAndroid Build Coastguard Worker name: "Output" 552*89c4ff92SAndroid Build Coastguard Worker type { 553*89c4ff92SAndroid Build Coastguard Worker tensor_type { 554*89c4ff92SAndroid Build Coastguard Worker elem_type: 1 555*89c4ff92SAndroid Build Coastguard Worker shape { 556*89c4ff92SAndroid Build Coastguard Worker dim { 557*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 558*89c4ff92SAndroid Build Coastguard Worker } 559*89c4ff92SAndroid Build Coastguard Worker dim { 560*89c4ff92SAndroid Build Coastguard Worker dim_value: 1 561*89c4ff92SAndroid Build Coastguard Worker } 562*89c4ff92SAndroid Build Coastguard Worker dim { 563*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 564*89c4ff92SAndroid Build Coastguard Worker } 565*89c4ff92SAndroid Build Coastguard Worker dim { 566*89c4ff92SAndroid Build Coastguard Worker dim_value: 2 567*89c4ff92SAndroid Build Coastguard Worker } 568*89c4ff92SAndroid Build Coastguard Worker } 569*89c4ff92SAndroid Build Coastguard Worker } 570*89c4ff92SAndroid Build Coastguard Worker } 571*89c4ff92SAndroid Build Coastguard Worker } 572*89c4ff92SAndroid Build Coastguard Worker } 573*89c4ff92SAndroid Build Coastguard Worker opset_import { 574*89c4ff92SAndroid Build Coastguard Worker version: 7 575*89c4ff92SAndroid Build Coastguard Worker })"; 576*89c4ff92SAndroid Build Coastguard Worker Setup(); 577*89c4ff92SAndroid Build Coastguard Worker } 578*89c4ff92SAndroid Build Coastguard Worker }; 579*89c4ff92SAndroid Build Coastguard Worker 580*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(SimpleConv2DFixture, "ValidConvTest") 581*89c4ff92SAndroid Build Coastguard Worker { 582*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input", {1.0, 2.0, 3.0, 583*89c4ff92SAndroid Build Coastguard Worker 4.0, 5.0, 6.0, 584*89c4ff92SAndroid Build Coastguard Worker 7.0, 8.0, 9.0}}}, 585*89c4ff92SAndroid Build Coastguard Worker {{"Output", {1.0 * 2 + 2.0 * 1 + 3.0 * 0 + 586*89c4ff92SAndroid Build Coastguard Worker 4.0 * 6 + 5.0 * 2 + 6.0 * 1 + 587*89c4ff92SAndroid Build Coastguard Worker 7.0 * 4 + 8.0 * 1 + 9.0 * 2}}}); 588*89c4ff92SAndroid Build Coastguard Worker } 589*89c4ff92SAndroid Build Coastguard Worker 590*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(Conv2DWithBiasesFixture, "ValidConvWithBiasTest") 591*89c4ff92SAndroid Build Coastguard Worker { 592*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input", {1.0, 2.0, 593*89c4ff92SAndroid Build Coastguard Worker 3.0, 4.0}}}, 594*89c4ff92SAndroid Build Coastguard Worker {{"Output", {1.0 * 2 + 2.0 * 1 + 3.0 * 0 + 4 * 6 + 10, 595*89c4ff92SAndroid Build Coastguard Worker 2.0 * 2 + 0 * 1 + 4.0 * 0 + 0 * 6 + 10, 596*89c4ff92SAndroid Build Coastguard Worker 3.0 * 2 + 4.0 * 1 + 0 * 0 + 0 * 6 + 10, 597*89c4ff92SAndroid Build Coastguard Worker 4.0 * 2 + 0 * 1 + 0 * 0 + 0 * 6 + 10}}}); 598*89c4ff92SAndroid Build Coastguard Worker } 599*89c4ff92SAndroid Build Coastguard Worker 600*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(Conv2DDimReducingFixture, "ValidConvDimReducTest") 601*89c4ff92SAndroid Build Coastguard Worker { 602*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input", {1.0, 2.0, 3.0, 4.0, -1, -2, 3, 4, 1 , 1, 1, 1 }}}, 603*89c4ff92SAndroid Build Coastguard Worker {{"Output", {-1 * 1 + 2 * -1, -1 * 2 + 2 * -2, 604*89c4ff92SAndroid Build Coastguard Worker -1 * 3 + 2 * 3, -1 * 4 + 2 * 4, 605*89c4ff92SAndroid Build Coastguard Worker 1, 2, 3, 4}}}); 606*89c4ff92SAndroid Build Coastguard Worker } 607*89c4ff92SAndroid Build Coastguard Worker 608*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(Conv2DwithDilationFixture, "ValidConvWithDilationTest") 609*89c4ff92SAndroid Build Coastguard Worker { 610*89c4ff92SAndroid Build Coastguard Worker RunTest<4>({{"Input", {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 611*89c4ff92SAndroid Build Coastguard Worker 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 612*89c4ff92SAndroid Build Coastguard Worker 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 613*89c4ff92SAndroid Build Coastguard Worker 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 614*89c4ff92SAndroid Build Coastguard Worker 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 615*89c4ff92SAndroid Build Coastguard Worker 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}}}, 616*89c4ff92SAndroid Build Coastguard Worker {{"Output", {39.0, 58.0, 153.0, 172.0 }}}); 617*89c4ff92SAndroid Build Coastguard Worker } 618*89c4ff92SAndroid Build Coastguard Worker 619*89c4ff92SAndroid Build Coastguard Worker } 620