1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 Arm Ltd. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker #include "ParserFlatbuffersFixture.hpp" 6*89c4ff92SAndroid Build Coastguard Worker #include "../TfLiteParser.hpp" 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <string> 9*89c4ff92SAndroid Build Coastguard Worker #include <iostream> 10*89c4ff92SAndroid Build Coastguard Worker 11*89c4ff92SAndroid Build Coastguard Worker TEST_SUITE("TensorflowLiteParser_ExpandDims") 12*89c4ff92SAndroid Build Coastguard Worker { 13*89c4ff92SAndroid Build Coastguard Worker struct ExpandDimsFixture : public ParserFlatbuffersFixture 14*89c4ff92SAndroid Build Coastguard Worker { ExpandDimsFixtureExpandDimsFixture15*89c4ff92SAndroid Build Coastguard Worker explicit ExpandDimsFixture(const std::string& inputShape, 16*89c4ff92SAndroid Build Coastguard Worker const std::string& outputShape, 17*89c4ff92SAndroid Build Coastguard Worker const std::string& axis) 18*89c4ff92SAndroid Build Coastguard Worker { 19*89c4ff92SAndroid Build Coastguard Worker m_JsonString = R"( 20*89c4ff92SAndroid Build Coastguard Worker { 21*89c4ff92SAndroid Build Coastguard Worker "version": 3, 22*89c4ff92SAndroid Build Coastguard Worker "operator_codes": [ { "builtin_code": "EXPAND_DIMS" } ], 23*89c4ff92SAndroid Build Coastguard Worker "subgraphs": [ { 24*89c4ff92SAndroid Build Coastguard Worker "tensors": [ 25*89c4ff92SAndroid Build Coastguard Worker { 26*89c4ff92SAndroid Build Coastguard Worker "shape": )" + inputShape + R"(, 27*89c4ff92SAndroid Build Coastguard Worker "type": "UINT8", 28*89c4ff92SAndroid Build Coastguard Worker "buffer": 0, 29*89c4ff92SAndroid Build Coastguard Worker "name": "inputTensor", 30*89c4ff92SAndroid Build Coastguard Worker "quantization": { 31*89c4ff92SAndroid Build Coastguard Worker "min": [ 0.0 ], 32*89c4ff92SAndroid Build Coastguard Worker "max": [ 255.0 ], 33*89c4ff92SAndroid Build Coastguard Worker "scale": [ 1.0 ], 34*89c4ff92SAndroid Build Coastguard Worker "zero_point": [ 0 ], 35*89c4ff92SAndroid Build Coastguard Worker } 36*89c4ff92SAndroid Build Coastguard Worker }, 37*89c4ff92SAndroid Build Coastguard Worker { 38*89c4ff92SAndroid Build Coastguard Worker "shape": )" + outputShape + R"( , 39*89c4ff92SAndroid Build Coastguard Worker "type": "UINT8", 40*89c4ff92SAndroid Build Coastguard Worker "buffer": 1, 41*89c4ff92SAndroid Build Coastguard Worker "name": "outputTensor", 42*89c4ff92SAndroid Build Coastguard Worker "quantization": { 43*89c4ff92SAndroid Build Coastguard Worker "min": [ 0.0 ], 44*89c4ff92SAndroid Build Coastguard Worker "max": [ 255.0 ], 45*89c4ff92SAndroid Build Coastguard Worker "scale": [ 1.0 ], 46*89c4ff92SAndroid Build Coastguard Worker "zero_point": [ 0 ], 47*89c4ff92SAndroid Build Coastguard Worker } 48*89c4ff92SAndroid Build Coastguard Worker }, 49*89c4ff92SAndroid Build Coastguard Worker { 50*89c4ff92SAndroid Build Coastguard Worker "shape": [ 1 ], 51*89c4ff92SAndroid Build Coastguard Worker "type": "UINT8", 52*89c4ff92SAndroid Build Coastguard Worker "buffer": 2, 53*89c4ff92SAndroid Build Coastguard Worker "name": "expand_dims", 54*89c4ff92SAndroid Build Coastguard Worker "quantization": { 55*89c4ff92SAndroid Build Coastguard Worker "min": [ 0.0 ], 56*89c4ff92SAndroid Build Coastguard Worker "max": [ 255.0 ], 57*89c4ff92SAndroid Build Coastguard Worker "scale": [ 1.0 ], 58*89c4ff92SAndroid Build Coastguard Worker "zero_point": [ 0 ], 59*89c4ff92SAndroid Build Coastguard Worker } 60*89c4ff92SAndroid Build Coastguard Worker }, 61*89c4ff92SAndroid Build Coastguard Worker ], 62*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 0 ], 63*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 1 ], 64*89c4ff92SAndroid Build Coastguard Worker "operators": [ 65*89c4ff92SAndroid Build Coastguard Worker { 66*89c4ff92SAndroid Build Coastguard Worker "opcode_index": 0, 67*89c4ff92SAndroid Build Coastguard Worker "inputs": [ 0 , 2 ], 68*89c4ff92SAndroid Build Coastguard Worker "outputs": [ 1 ], 69*89c4ff92SAndroid Build Coastguard Worker "custom_options_format": "FLEXBUFFERS" 70*89c4ff92SAndroid Build Coastguard Worker } 71*89c4ff92SAndroid Build Coastguard Worker ], 72*89c4ff92SAndroid Build Coastguard Worker } ], 73*89c4ff92SAndroid Build Coastguard Worker "buffers" : [ 74*89c4ff92SAndroid Build Coastguard Worker { }, 75*89c4ff92SAndroid Build Coastguard Worker { }, 76*89c4ff92SAndroid Build Coastguard Worker { "data": )" + axis + R"(, }, 77*89c4ff92SAndroid Build Coastguard Worker ] 78*89c4ff92SAndroid Build Coastguard Worker } 79*89c4ff92SAndroid Build Coastguard Worker )"; 80*89c4ff92SAndroid Build Coastguard Worker SetupSingleInputSingleOutput("inputTensor", "outputTensor"); 81*89c4ff92SAndroid Build Coastguard Worker } 82*89c4ff92SAndroid Build Coastguard Worker }; 83*89c4ff92SAndroid Build Coastguard Worker 84*89c4ff92SAndroid Build Coastguard Worker struct ExpandDimsFixture3dto4Daxis0 : ExpandDimsFixture 85*89c4ff92SAndroid Build Coastguard Worker { ExpandDimsFixture3dto4Daxis0ExpandDimsFixture3dto4Daxis086*89c4ff92SAndroid Build Coastguard Worker ExpandDimsFixture3dto4Daxis0() : ExpandDimsFixture("[ 2, 2, 1 ]", "[ 1, 2, 2, 1 ]", "[ 0, 0, 0, 0 ]") {} 87*89c4ff92SAndroid Build Coastguard Worker }; 88*89c4ff92SAndroid Build Coastguard Worker 89*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ExpandDimsFixture3dto4Daxis0, "ParseExpandDims3Dto4Daxis0") 90*89c4ff92SAndroid Build Coastguard Worker { 91*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::QAsymmU8>(0, {{ "inputTensor", { 1, 2, 3, 4 } } }, 92*89c4ff92SAndroid Build Coastguard Worker {{ "outputTensor", { 1, 2, 3, 4 } } }); 93*89c4ff92SAndroid Build Coastguard Worker } 94*89c4ff92SAndroid Build Coastguard Worker 95*89c4ff92SAndroid Build Coastguard Worker struct ExpandDimsFixture3dto4Daxis3 : ExpandDimsFixture 96*89c4ff92SAndroid Build Coastguard Worker { ExpandDimsFixture3dto4Daxis3ExpandDimsFixture3dto4Daxis397*89c4ff92SAndroid Build Coastguard Worker ExpandDimsFixture3dto4Daxis3() : ExpandDimsFixture("[ 1, 2, 2 ]", "[ 1, 2, 2, 1 ]", "[ 3, 0, 0, 0 ]") {} 98*89c4ff92SAndroid Build Coastguard Worker }; 99*89c4ff92SAndroid Build Coastguard Worker 100*89c4ff92SAndroid Build Coastguard Worker TEST_CASE_FIXTURE(ExpandDimsFixture3dto4Daxis3, "ParseExpandDims3Dto4Daxis3") 101*89c4ff92SAndroid Build Coastguard Worker { 102*89c4ff92SAndroid Build Coastguard Worker RunTest<4, armnn::DataType::QAsymmU8>(0, {{ "inputTensor", { 1, 2, 3, 4 } } }, 103*89c4ff92SAndroid Build Coastguard Worker {{ "outputTensor", { 1, 2, 3, 4 } } }); 104*89c4ff92SAndroid Build Coastguard Worker } 105*89c4ff92SAndroid Build Coastguard Worker 106*89c4ff92SAndroid Build Coastguard Worker }