6 #include <boost/test/unit_test.hpp> 8 #include "../TfLiteParser.hpp" 15 explicit SimpleConv2DFixture()
20 "operator_codes": [ { "builtin_code": "CONV_2D" } ], 24 "shape": [ 1, 3, 3, 1 ], 27 "name": "inputTensor", 36 "shape": [ 1, 1, 1, 1 ], 39 "name": "outputTensor", 48 "shape": [ 1, 3, 3, 1 ], 51 "name": "filterTensor", 67 "builtin_options_type": "Conv2DOptions", 72 "fused_activation_function": "NONE" 74 "custom_options_format": "FLEXBUFFERS" 81 { "data": [ 2,1,0, 6,2,1, 4,1,2 ], }, 92 RunTest<4, armnn::DataType::QAsymmU8>(
109 explicit Conv2DWithBiasesFixture(
const std::string & inputShape,
110 const std::string & outputShape,
111 const std::string & filterShape,
112 const std::string & filterData,
113 const std::string & biasShape,
114 const std::string & biasData,
115 const std::string & strides,
116 const std::string & activation=
"NONE",
117 const std::string & filterScale=
"1.0",
118 const std::string & filterZeroPoint=
"0",
119 const std::string & outputScale=
"2.0",
120 const std::string & outputZeroPoint=
"0")
125 "operator_codes": [ { "builtin_code": "CONV_2D" } ], 129 "shape": )" + inputShape + R"(, 132 "name": "inputTensor", 141 "shape": )" + outputShape + R"(, 144 "name": "outputTensor", 148 "scale": [ )" + outputScale + R"( ], 149 "zero_point": [ )" + outputZeroPoint + R"( ], 153 "shape": )" + filterShape + R"( , 156 "name": "filterTensor", 160 "scale": [ )" + filterScale + R"( ], 161 "zero_point": [ )" + filterZeroPoint + R"( ], 165 "shape": )" + biasShape + R"( , 168 "name": "biasTensor", 182 "inputs": [ 0, 2, 3 ], 184 "builtin_options_type": "Conv2DOptions", 187 "stride_w": )" + strides + R"(, 188 "stride_h": )" + strides + R"(, 189 "fused_activation_function": )" + activation + R"( 191 "custom_options_format": "FLEXBUFFERS" 198 { "data": )" + filterData + R"(, }, 199 { "data": )" + biasData + R"(, }, 203 SetupSingleInputSingleOutput("inputTensor",
"outputTensor");
207 struct SimpleConv2DWithBiasesFixture : Conv2DWithBiasesFixture
209 SimpleConv2DWithBiasesFixture()
210 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
222 RunTest<4, armnn::DataType::QAsymmU8>(
230 (1*2 + 2*1 + 3*0 + 4*6 + 10)/2,
231 (2*2 + 0*1 + 4*0 + 0*6 + 10)/2,
232 (3*2 + 4*1 + 0*0 + 0*6 + 10)/2,
233 (4*2 + 0*1 + 0*0 + 0*6 + 10)/2
237 struct DynamicConv2DWithBiasesFixture : Conv2DWithBiasesFixture
239 DynamicConv2DWithBiasesFixture()
240 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
254 armnn::DataType::QAsymmU8>(0,
255 { {
"inputTensor", { 1, 2, 3, 4, } } },
256 { {
"outputTensor", { (1*2 + 2*1 + 3*0 + 4*6 + 10)/2,
257 (2*2 + 0*1 + 4*0 + 0*6 + 10)/2,
258 (3*2 + 4*1 + 0*0 + 0*6 + 10)/2,
259 (4*2 + 0*1 + 0*0 + 0*6 + 10)/2} } },
263 struct Conv2DShapeTestFixture : Conv2DWithBiasesFixture
265 static std::string GenerateInts(
unsigned int n)
267 std::stringstream ss;
269 for(
unsigned int i=0; i<n; ++i ) {
274 ss <<
" " << (i%256);
280 Conv2DShapeTestFixture()
281 : Conv2DWithBiasesFixture(
"[ 1, 224, 224, 3 ]",
282 "[ 1, 112, 112, 32 ]",
284 GenerateInts(32*3*3*3),
295 struct ReluConv2DWithBiasesFixture : Conv2DWithBiasesFixture
297 ReluConv2DWithBiasesFixture()
298 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
316 uint8_t outZero = 20;
319 RunTest<4, armnn::DataType::QAsymmU8>(
331 std::max(outZero, static_cast<uint8_t>((1*(2-fz) + 2*(1-fz) + 4*(0-fz) + 8*(6-fz) + bias)/2 + outZero)),
332 std::max(outZero, static_cast<uint8_t>((2*(2-fz) + 0*(1-fz) + 8*(0-fz) + 0*(6-fz) + bias)/2 + outZero)),
333 std::max(outZero, static_cast<uint8_t>((4*(2-fz) + 8*(1-fz) + 0*(0-fz) + 0*(6-fz) + bias)/2 + outZero)),
334 std::max(outZero, static_cast<uint8_t>((8*(2-fz) + 0*(1-fz) + 0*(0-fz) + 0*(6-fz) + bias)/2 + outZero))
338 struct Relu6Conv2DWithBiasesFixture : Conv2DWithBiasesFixture
340 Relu6Conv2DWithBiasesFixture()
341 : Conv2DWithBiasesFixture(
"[ 1, 2, 2, 1 ]",
358 uint8_t relu6Min = 6 / 2;
360 RunTest<4, armnn::DataType::QAsymmU8>(
370 std::min(relu6Min, static_cast<uint8_t>((1*2 + 2*1 + 4*0 + 1*6)/2)),
371 std::min(relu6Min, static_cast<uint8_t>((2*2 + 0*1 + 1*0 + 0*6)/2)),
372 std::min(relu6Min, static_cast<uint8_t>((4*2 + 1*1 + 0*0 + 0*6)/2)),
373 std::min(relu6Min, static_cast<uint8_t>((1*2 + 0*1 + 0*0 + 0*6)/2))
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
BOOST_AUTO_TEST_SUITE_END()
void SetupSingleInputSingleOutput(const std::string &inputName, const std::string &outputName)
BOOST_FIXTURE_TEST_CASE(ValidConvTest, SimpleConv2DFixture)