1 // 2 // Copyright © 2017 Arm Ltd and Contributors. All rights reserved. 3 // SPDX-License-Identifier: MIT 4 // 5 6 #include "ParserFlatbuffersFixture.hpp" 7 8 9 TEST_SUITE("TensorflowLiteParser_Maximum") 10 { 11 struct MaximumFixture : public ParserFlatbuffersFixture 12 { MaximumFixtureMaximumFixture13 explicit MaximumFixture(const std::string & inputShape1, 14 const std::string & inputShape2, 15 const std::string & outputShape) 16 { 17 m_JsonString = R"( 18 { 19 "version": 3, 20 "operator_codes": [ { "builtin_code": "MAXIMUM" } ], 21 "subgraphs": [ { 22 "tensors": [ 23 { 24 "shape": )" + inputShape1 + R"(, 25 "type": "FLOAT32", 26 "buffer": 0, 27 "name": "inputTensor1", 28 "quantization": { 29 "min": [ 0.0 ], 30 "max": [ 255.0 ], 31 "scale": [ 1.0 ], 32 "zero_point": [ 0 ], 33 } 34 }, 35 { 36 "shape": )" + inputShape2 + R"(, 37 "type": "FLOAT32", 38 "buffer": 1, 39 "name": "inputTensor2", 40 "quantization": { 41 "min": [ 0.0 ], 42 "max": [ 255.0 ], 43 "scale": [ 1.0 ], 44 "zero_point": [ 0 ], 45 } 46 }, 47 { 48 "shape": )" + outputShape + R"( , 49 "type": "FLOAT32", 50 "buffer": 2, 51 "name": "outputTensor", 52 "quantization": { 53 "min": [ 0.0 ], 54 "max": [ 255.0 ], 55 "scale": [ 1.0 ], 56 "zero_point": [ 0 ], 57 } 58 } 59 ], 60 "inputs": [ 0, 1 ], 61 "outputs": [ 2 ], 62 "operators": [ 63 { 64 "opcode_index": 0, 65 "inputs": [ 0, 1 ], 66 "outputs": [ 2 ], 67 "custom_options_format": "FLEXBUFFERS" 68 } 69 ], 70 } ], 71 "buffers" : [ 72 { }, 73 { } 74 ] 75 } 76 )"; 77 Setup(); 78 } 79 }; 80 81 82 struct MaximumFixture4D4D : MaximumFixture 83 { MaximumFixture4D4DMaximumFixture4D4D84 MaximumFixture4D4D() : MaximumFixture("[ 1, 2, 2, 3 ]", 85 "[ 1, 2, 2, 3 ]", 86 "[ 1, 2, 2, 3 ]") {} 87 }; 88 89 TEST_CASE_FIXTURE(MaximumFixture4D4D, "ParseMaximum4D4D") 90 { 91 RunTest<4, armnn::DataType::Float32>( 92 0, 93 {{"inputTensor1", { 0.0f, 1.0f, 2.0f, 94 3.0f, 4.0f, 5.0f, 95 6.0f, 7.0f, 8.0f, 96 9.0f, 10.0f, 11.0f }}, 97 {"inputTensor2", { 5.0f, 1.0f, 3.0f, 98 4.0f, 5.5f, 1.0f, 99 2.0f, 17.0f, 18.0f, 100 19.0f, 1.0f, 3.0f }}}, 101 {{"outputTensor", { 5.0f, 1.0f, 3.0f, 102 4.0f, 5.5f, 5.0f, 103 6.0f, 17.0f, 18.0f, 104 19.0f, 10.0f, 11.0f }}}); 105 } 106 107 struct MaximumBroadcastFixture4D4D : MaximumFixture 108 { MaximumBroadcastFixture4D4DMaximumBroadcastFixture4D4D109 MaximumBroadcastFixture4D4D() : MaximumFixture("[ 1, 1, 2, 1 ]", 110 "[ 1, 2, 1, 3 ]", 111 "[ 1, 2, 2, 3 ]") {} 112 }; 113 114 TEST_CASE_FIXTURE(MaximumBroadcastFixture4D4D, "ParseMaximumBroadcast4D4D") 115 { 116 RunTest<4, armnn::DataType::Float32>( 117 0, 118 {{"inputTensor1", { 2.0f, 4.0f }}, 119 {"inputTensor2", { 1.0f, 2.0f, 3.0f, 120 4.0f, 5.0f, 6.0f }}}, 121 {{"outputTensor", { 2.0f, 2.0f, 3.0f, 122 4.0f, 4.0f, 4.0f, 123 4.0f, 5.0f, 6.0f, 124 4.0f, 5.0f, 6.0f }}}); 125 } 126 127 struct MaximumBroadcastFixture4D1D : MaximumFixture 128 { MaximumBroadcastFixture4D1DMaximumBroadcastFixture4D1D129 MaximumBroadcastFixture4D1D() : MaximumFixture("[ 1, 2, 2, 3 ]", 130 "[ 1 ]", 131 "[ 1, 2, 2, 3 ]") {} 132 }; 133 134 TEST_CASE_FIXTURE(MaximumBroadcastFixture4D1D, "ParseMaximumBroadcast4D1D") 135 { 136 RunTest<4, armnn::DataType::Float32>( 137 0, 138 {{"inputTensor1", { 0.0f, 1.0f, 2.0f, 139 3.0f, 4.0f, 5.0f, 140 6.0f, 7.0f, 8.0f, 141 9.0f, 10.0f, 11.0f }}, 142 {"inputTensor2", { 5.0f }}}, 143 {{"outputTensor", { 5.0f, 5.0f, 5.0f, 144 5.0f, 5.0f, 5.0f, 145 6.0f, 7.0f, 8.0f, 146 9.0f, 10.0f, 11.0f }}}); 147 } 148 149 struct MaximumBroadcastFixture1D4D : MaximumFixture 150 { MaximumBroadcastFixture1D4DMaximumBroadcastFixture1D4D151 MaximumBroadcastFixture1D4D() : MaximumFixture("[ 1 ]", 152 "[ 1, 2, 2, 3 ]", 153 "[ 1, 2, 2, 3 ]") {} 154 }; 155 156 TEST_CASE_FIXTURE(MaximumBroadcastFixture1D4D, "ParseMaximumBroadcast1D4D") 157 { 158 RunTest<4, armnn::DataType::Float32>( 159 0, 160 {{"inputTensor1", { 3.0f }}, 161 {"inputTensor2", { 0.0f, 1.0f, 2.0f, 162 3.0f, 4.0f, 5.0f, 163 6.0f, 7.0f, 8.0f, 164 9.0f, 10.0f, 11.0f }}}, 165 {{"outputTensor", { 3.0f, 3.0f, 3.0f, 166 3.0f, 4.0f, 5.0f, 167 6.0f, 7.0f, 8.0f, 168 9.0f, 10.0f, 11.0f }}}); 169 } 170 171 } 172