13 explicit FullyConnectedFixture(
const std::string& inputShape,
14 const std::string& outputShape,
15 const std::string& filterShape,
16 const std::string& filterData,
17 const std::string biasShape =
"",
18 const std::string biasData =
"",
19 const std::string dataType =
"UINT8",
20 const std::string weightsDataType =
"UINT8",
21 const std::string biasDataType =
"INT32")
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"( , 32 "type": )" + biasDataType + R"(, 43 { "data": )" + biasData + R"(, }, )"; 48 "operator_codes": [ { "builtin_code": "FULLY_CONNECTED" } ], 52 "shape": )" + inputShape + R"(, 53 "type": )" + dataType + R"(, 55 "name": "inputTensor", 64 "shape": )" + outputShape + R"(, 65 "type": )" + dataType + R"(, 67 "name": "outputTensor", 76 "shape": )" + filterShape + R"(, 77 "type": )" + weightsDataType + 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 ]",
165 TEST_CASE_FIXTURE(FullyConnectedWithBiasMultipleOutputsFixture,
"FullyConnectedWithBiasMultipleOutputs")
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 DynamicFullyConnectedWithBiasMultipleOutputsFixture,
"DynamicFullyConnectedWithBiasMultipleOutputs")
190 armnn::DataType::QAsymmU8>(0,
191 { {
"inputTensor", { 1, 2, 3, 4, 10, 20, 30, 40} } },
192 { {
"outputTensor", { (40+10)/2, (400+10)/2 } } },
199 explicit FullyConnectedNonConstWeightsFixture(
const std::string& inputShape,
200 const std::string& outputShape,
201 const std::string& filterShape,
202 const std::string biasShape =
"")
204 std::string inputTensors =
"[ 0, 1 ]";
205 std::string biasTensor =
"";
206 std::string biasBuffer =
"";
207 std::string outputs =
"2";
208 if (biasShape.size() > 0)
210 inputTensors =
"[ 0, 1, 2 ]";
213 "shape": )" + biasShape + R"(, 221 "quantized_dimension": 0 226 biasBuffer = R"(,{ "data": [] } )"; 234 "builtin_code": "FULLY_CONNECTED", 242 "shape": )" + inputShape + R"(, 250 "quantized_dimension": 0 254 "shape": )" + filterShape + R"(, 262 "quantized_dimension": 0 265 )" + biasTensor + R"( 267 "shape": )" + outputShape + R"(, 279 "quantized_dimension": 0 283 "inputs": )" + inputTensors + R"(, 284 "outputs": [ )" + outputs + R"( ], 288 "inputs": )" + inputTensors + R"(, 289 "outputs": [ )" + outputs + R"( ], 290 "builtin_options_type": "FullyConnectedOptions", 292 "fused_activation_function": "NONE", 293 "weights_format": "DEFAULT", 294 "keep_num_dims": false, 295 "asymmetric_quantize_inputs": false 297 "custom_options_format": "FLEXBUFFERS" 302 "description": "ArmnnDelegate: FullyConnected Operator Model", 310 )" + biasBuffer + R"( 318 struct FullyConnectedNonConstWeights : FullyConnectedNonConstWeightsFixture
320 FullyConnectedNonConstWeights()
321 : FullyConnectedNonConstWeightsFixture(
"[ 1, 4, 1, 1 ]",
329 TEST_CASE_FIXTURE(FullyConnectedNonConstWeights,
"ParseFullyConnectedNonConstWeights")
333 armnn::DataType::QAsymmS8>(
335 {{{
"input_0", { 1, 2, 3, 4 }},{
"weights", { 2, 3, 4, 5 }}}},
337 {{
"output", { 25 }}});
340 struct FullyConnectedNonConstWeightsNoBias : FullyConnectedNonConstWeightsFixture
342 FullyConnectedNonConstWeightsNoBias()
343 : FullyConnectedNonConstWeightsFixture(
"[ 1, 4, 1, 1 ]",
350 TEST_CASE_FIXTURE(FullyConnectedNonConstWeightsNoBias,
"ParseFullyConnectedNonConstWeightsNoBias")
353 armnn::DataType::QAsymmS8>(
355 {{{
"input_0", { 1, 2, 3, 4 }},{
"weights", { 2, 3, 4, 5 }}}},
356 {{
"output", { 20 }}});
359 struct FullyConnectedWeightsBiasFloat : FullyConnectedFixture
361 FullyConnectedWeightsBiasFloat()
362 : FullyConnectedFixture(
"[ 1, 4, 1, 1 ]",
374 TEST_CASE_FIXTURE(FullyConnectedWeightsBiasFloat,
"FullyConnectedWeightsBiasFloat")
376 RunTest<2, armnn::DataType::Float32>(
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
void SetupSingleInputSingleOutput(const std::string &inputName, const std::string &outputName)