13 explicit SimpleConv2DFixture()
18 "operator_codes": [ { "builtin_code": "CONV_2D" } ], 22 "shape": [ 1, 3, 3, 1 ], 25 "name": "inputTensor", 34 "shape": [ 1, 1, 1, 1 ], 37 "name": "outputTensor", 46 "shape": [ 1, 3, 3, 1 ], 49 "name": "filterTensor", 65 "builtin_options_type": "Conv2DOptions", 70 "fused_activation_function": "NONE" 72 "custom_options_format": "FLEXBUFFERS" 79 { "data": [ 2,1,0, 6,2,1, 4,1,2 ], }, 90 RunTest<4, armnn::DataType::QAsymmU8>(
107 explicit Conv2DWithBiasesFixture(
const std::string& inputShape,
108 const std::string& outputShape,
109 const std::string& filterShape,
110 const std::string& filterData,
111 const std::string& biasShape,
112 const std::string& biasData,
113 const std::string& strides,
114 const std::string& activation=
"NONE",
115 const std::string& filterScale=
"1.0",
116 const std::string& filterZeroPoint=
"0",
117 const std::string& outputScale=
"2.0",
118 const std::string& outputZeroPoint=
"0",
119 const std::string& dataType =
"UINT8",
120 const std::string& filterDataType =
"UINT8",
121 const std::string& biasDataType =
"INT32")
126 "operator_codes": [ { "builtin_code": "CONV_2D" } ], 130 "shape": )" + inputShape + R"(, 131 "type": )" + dataType + R"(, 133 "name": "inputTensor", 142 "shape": )" + outputShape + R"(, 143 "type": )" + dataType + R"(, 145 "name": "outputTensor", 149 "scale": [ )" + outputScale + R"( ], 150 "zero_point": [ )" + outputZeroPoint + R"( ], 154 "shape": )" + filterShape + R"( , 155 "type": )" + filterDataType + R"(, 157 "name": "filterTensor", 161 "scale": [ )" + filterScale + R"( ], 162 "zero_point": [ )" + filterZeroPoint + R"( ], 166 "shape": )" + biasShape + R"( , 167 "type": )" + biasDataType + R"(, 169 "name": "biasTensor", 183 "inputs": [ 0, 2, 3 ], 185 "builtin_options_type": "Conv2DOptions", 188 "stride_w": )" + strides + R"(, 189 "stride_h": )" + strides + R"(, 190 "fused_activation_function": )" + activation + R"( 192 "custom_options_format": "FLEXBUFFERS" 199 { "data": )" + filterData + R"(, }, 200 { "data": )" + biasData + R"(, }, 204 SetupSingleInputSingleOutput("inputTensor",
"outputTensor");
208 struct SimpleConv2DWithBiasesFixture : Conv2DWithBiasesFixture
210 SimpleConv2DWithBiasesFixture()
211 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
223 RunTest<4, armnn::DataType::QAsymmU8>(
231 (1*2 + 2*1 + 3*0 + 4*6 + 10)/2,
232 (2*2 + 0*1 + 4*0 + 0*6 + 10)/2,
233 (3*2 + 4*1 + 0*0 + 0*6 + 10)/2,
234 (4*2 + 0*1 + 0*0 + 0*6 + 10)/2
238 struct DynamicConv2DWithBiasesFixture : Conv2DWithBiasesFixture
240 DynamicConv2DWithBiasesFixture()
241 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
255 armnn::DataType::QAsymmU8>(0,
256 { {
"inputTensor", { 1, 2, 3, 4, } } },
257 { {
"outputTensor", { (1*2 + 2*1 + 3*0 + 4*6 + 10)/2,
258 (2*2 + 0*1 + 4*0 + 0*6 + 10)/2,
259 (3*2 + 4*1 + 0*0 + 0*6 + 10)/2,
260 (4*2 + 0*1 + 0*0 + 0*6 + 10)/2} } },
264 struct Conv2DShapeTestFixture : Conv2DWithBiasesFixture
266 static std::string GenerateInts(
unsigned int n)
268 std::stringstream ss;
270 for(
unsigned int i=0; i<n; ++i ) {
275 ss <<
" " << (i%256);
281 Conv2DShapeTestFixture()
282 : Conv2DWithBiasesFixture(
"[ 1, 224, 224, 3 ]",
283 "[ 1, 112, 112, 32 ]",
285 GenerateInts(32*3*3*3),
296 struct ReluConv2DWithBiasesFixture : Conv2DWithBiasesFixture
298 ReluConv2DWithBiasesFixture()
299 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
317 uint8_t outZero = 20;
320 RunTest<4, armnn::DataType::QAsymmU8>(
332 std::max(outZero, static_cast<uint8_t>((1*(2-fz) + 2*(1-fz) + 4*(0-fz) + 8*(6-fz) + bias)/2 + outZero)),
333 std::max(outZero, static_cast<uint8_t>((2*(2-fz) + 0*(1-fz) + 8*(0-fz) + 0*(6-fz) + bias)/2 + outZero)),
334 std::max(outZero, static_cast<uint8_t>((4*(2-fz) + 8*(1-fz) + 0*(0-fz) + 0*(6-fz) + bias)/2 + outZero)),
335 std::max(outZero, static_cast<uint8_t>((8*(2-fz) + 0*(1-fz) + 0*(0-fz) + 0*(6-fz) + bias)/2 + outZero))
339 struct Relu6Conv2DWithBiasesFixture : Conv2DWithBiasesFixture
341 Relu6Conv2DWithBiasesFixture()
342 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
359 uint8_t relu6Min = 6 / 2;
361 RunTest<4, armnn::DataType::QAsymmU8>(
371 std::min(relu6Min, static_cast<uint8_t>((1*2 + 2*1 + 4*0 + 1*6)/2)),
372 std::min(relu6Min, static_cast<uint8_t>((2*2 + 0*1 + 1*0 + 0*6)/2)),
373 std::min(relu6Min, static_cast<uint8_t>((4*2 + 1*1 + 0*0 + 0*6)/2)),
374 std::min(relu6Min, static_cast<uint8_t>((1*2 + 0*1 + 0*0 + 0*6)/2))
381 explicit PerChannelConv2DFixture()
388 "builtin_code": "CONV_2D", 418 "details_type": "NONE", 419 "quantized_dimension": 0 429 "name": "model/conv2d/Conv2D", 443 "details_type": "NONE", 444 "quantized_dimension": 0 457 "name": "model/conv2d/Conv2D1", 483 "details_type": "NONE", 484 "quantized_dimension": 0 511 "details_type": "NONE", 512 "quantized_dimension": 0 534 "builtin_options_type": "Conv2DOptions", 539 "fused_activation_function": "NONE", 540 "dilation_w_factor": 1, 541 "dilation_h_factor": 1 543 "custom_options_format": "FLEXBUFFERS" 549 "description": "MLIR Converted.", 636 "name": "min_runtime_version", 642 SetupSingleInputSingleOutput("input",
"Identity");
648 RunTest<4, armnn::DataType::QAsymmS8>(
651 -11, 40,-26, 11,-28, 8, 0, -8,
652 -10, 34, 47, 0,-33,-14, 28, 35,
653 6,-28,-26, 8, 13, 33,-31,-41,
654 31,-20,-31,-16, 8,-18,-44, 0
657 -21,-17,-23,-14, -1,-14, 1, 9,
658 1,-12,-22,-23, 2, -1, -3, 12,
659 7, 6, 8,-13,-21, -6,-31, 0,
660 9, -6, 24, 0,-22, -4, -7,-22,
661 -7, -9, 9, 11,-11,-16, 9,-27,
662 -1, 0,-26, 0, 9,-12, -8,-18,
663 -11, -3,-15, 7, 16, -2, -8, -7,
664 -14,-15,-14, 3, 9,-12, -6,-11
668 struct Conv2FloatWithInt8WeightsAndBiasesFixture : Conv2DWithBiasesFixture
670 Conv2FloatWithInt8WeightsAndBiasesFixture()
671 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
689 TEST_CASE_FIXTURE(Conv2FloatWithInt8WeightsAndBiasesFixture,
"ParseConv2FloatWithInt8WeightsAndBiasesFixture")
691 RunTest<4, armnn::DataType::Float32>(
698 (1*2 + 2*1 + 3*0 + 4*6 + 10),
699 (2*2 + 0*1 + 4*0 + 0*6 + 10),
700 (3*2 + 4*1 + 0*0 + 0*6 + 10),
701 (4*2 + 0*1 + 0*0 + 0*6 + 10)
TEST_CASE_FIXTURE(ClContextControlFixture, "CopyBetweenNeonAndGpu")
void SetupSingleInputSingleOutput(const std::string &inputName, const std::string &outputName)