6 #include <boost/test/unit_test.hpp> 8 #include "../TfLiteParser.hpp" 16 explicit FullyConnectedFixture(
const std::string& inputShape,
17 const std::string& outputShape,
18 const std::string& filterShape,
19 const std::string& filterData,
20 const std::string biasShape =
"",
21 const std::string biasData =
"")
23 std::string inputTensors =
"[ 0, 2 ]";
24 std::string biasTensor =
"";
25 std::string biasBuffer =
"";
26 if (biasShape.size() > 0 && biasData.size() > 0)
28 inputTensors =
"[ 0, 2, 3 ]";
31 "shape": )" + biasShape + R"( , 43 { "data": )" + biasData + R"(, }, )"; 48 "operator_codes": [ { "builtin_code": "FULLY_CONNECTED" } ], 52 "shape": )" + inputShape + R"(, 55 "name": "inputTensor", 64 "shape": )" + outputShape + R"(, 67 "name": "outputTensor", 76 "shape": )" + filterShape + R"(, 79 "name": "filterTensor", 86 }, )" + biasTensor + R"( 93 "inputs": )" + inputTensors + R"(, 95 "builtin_options_type": "FullyConnectedOptions", 97 "fused_activation_function": "NONE" 99 "custom_options_format": "FLEXBUFFERS" 106 { "data": )" + filterData + R"(, }, )" 115 struct FullyConnectedWithNoBiasFixture : FullyConnectedFixture
117 FullyConnectedWithNoBiasFixture()
118 : FullyConnectedFixture(
"[ 1, 4, 1, 1 ]",
127 RunTest<2, armnn::DataType::QAsymmU8>(
133 struct FullyConnectedWithBiasFixture : FullyConnectedFixture
135 FullyConnectedWithBiasFixture()
136 : FullyConnectedFixture(
"[ 1, 4, 1, 1 ]",
147 RunTest<2, armnn::DataType::QAsymmU8>(
153 struct FullyConnectedWithBiasMultipleOutputsFixture : FullyConnectedFixture
155 FullyConnectedWithBiasMultipleOutputsFixture()
156 : FullyConnectedFixture(
"[ 1, 4, 2, 1 ]",
167 RunTest<2, armnn::DataType::QAsymmU8>(
169 { 1, 2, 3, 4, 10, 20, 30, 40 },
170 { (40+10)/2, (400+10)/2 });
173 struct DynamicFullyConnectedWithBiasMultipleOutputsFixture : FullyConnectedFixture
175 DynamicFullyConnectedWithBiasMultipleOutputsFixture()
176 : FullyConnectedFixture(
"[ 1, 4, 2, 1 ]",
186 DynamicFullyConnectedWithBiasMultipleOutputs,
187 DynamicFullyConnectedWithBiasMultipleOutputsFixture)
191 armnn::DataType::QAsymmU8>(0,
192 { {
"inputTensor", { 1, 2, 3, 4, 10, 20, 30, 40} } },
193 { {
"outputTensor", { (40+10)/2, (400+10)/2 } } },
200 explicit FullyConnectedNonConstWeightsFixture(
const std::string& inputShape,
201 const std::string& outputShape,
202 const std::string& filterShape,
203 const std::string biasShape =
"")
205 std::string inputTensors =
"[ 0, 1 ]";
206 std::string biasTensor =
"";
207 std::string biasBuffer =
"";
208 std::string outputs =
"2";
209 if (biasShape.size() > 0)
211 inputTensors =
"[ 0, 1, 2 ]";
214 "shape": )" + biasShape + R"(, 222 "quantized_dimension": 0 227 biasBuffer = R"(,{ "data": [] } )"; 235 "builtin_code": "FULLY_CONNECTED", 243 "shape": )" + inputShape + R"(, 251 "quantized_dimension": 0 255 "shape": )" + filterShape + R"(, 263 "quantized_dimension": 0 266 )" + biasTensor + R"( 268 "shape": )" + outputShape + R"(, 280 "quantized_dimension": 0 284 "inputs": )" + inputTensors + R"(, 285 "outputs": [ )" + outputs + R"( ], 289 "inputs": )" + inputTensors + R"(, 290 "outputs": [ )" + outputs + R"( ], 291 "builtin_options_type": "FullyConnectedOptions", 293 "fused_activation_function": "NONE", 294 "weights_format": "DEFAULT", 295 "keep_num_dims": false, 296 "asymmetric_quantize_inputs": false 298 "custom_options_format": "FLEXBUFFERS" 303 "description": "ArmnnDelegate: FullyConnected Operator Model", 311 )" + biasBuffer + R"( 319 struct FullyConnectedNonConstWeights : FullyConnectedNonConstWeightsFixture
321 FullyConnectedNonConstWeights()
322 : FullyConnectedNonConstWeightsFixture(
"[ 1, 4, 1, 1 ]",
334 armnn::DataType::QAsymmS8>(
336 {{{
"input_0", { 1, 2, 3, 4 }},{
"weights", { 2, 3, 4, 5 }}}},
338 {{
"output", { 25 }}});
341 struct FullyConnectedNonConstWeightsNoBias : FullyConnectedNonConstWeightsFixture
343 FullyConnectedNonConstWeightsNoBias()
344 : FullyConnectedNonConstWeightsFixture(
"[ 1, 4, 1, 1 ]",
354 armnn::DataType::QAsymmS8>(
356 {{{
"input_0", { 1, 2, 3, 4 }},{
"weights", { 2, 3, 4, 5 }}}},
357 {{
"output", { 20 }}});
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
BOOST_AUTO_TEST_SUITE_END()
BOOST_FIXTURE_TEST_CASE(MatMul, MatMulFixture)
void SetupSingleInputSingleOutput(const std::string &inputName, const std::string &outputName)