Fix linker issues on some compilers. micro_test::reporter and micro_test::did_test_fail fail to link when referenced from file not directly instantiating the micro test main function. Fixed by removing any micro_test::* dependencies from conv_test_common.
PiperOrigin-RevId: 351515143 Change-Id: Ie622fbfe5d07832b3b87b2258a6ee0f48c7b3272
This commit is contained in:
parent
a439e53437
commit
670cc3fa48
@ -67,13 +67,15 @@ TF_LITE_MICRO_TESTS_BEGIN
|
||||
TF_LITE_MICRO_TEST(SimpleTestFloat) {
|
||||
float output_data[tflite::testing::kOutputElements];
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvFloat(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||
output_data);
|
||||
output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(InputAndFilterSameWidthHeight) {
|
||||
@ -87,11 +89,13 @@ TF_LITE_MICRO_TEST(InputAndFilterSameWidthHeight) {
|
||||
const int kOutputShape[] = {4, 2, 1, 1, 1};
|
||||
const float expected_output[] = {10, 34};
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvFloat(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData, kFilterShape,
|
||||
filter_values, kBiasShape, bias_values, kOutputShape, expected_output,
|
||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||
output_data);
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
kFilterShape, filter_values, kBiasShape, bias_values, kOutputShape,
|
||||
expected_output, &tflite::testing::common_conv_params,
|
||||
tflite::Register_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(SimpleTestQuantized) {
|
||||
@ -107,14 +111,17 @@ TF_LITE_MICRO_TEST(SimpleTestQuantized) {
|
||||
int32_t bias_quantized[tflite::testing::kBiasElements];
|
||||
uint8_t golden_quantized[tflite::testing::kOutputElements];
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvQuantizedPerLayer(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
input_quantized, input_scale, tflite::testing::kFilterShape,
|
||||
tflite::testing::kFilterData, filter_quantized, filter_scale,
|
||||
tflite::testing::kBiasShape, tflite::testing::kBiasData, bias_quantized,
|
||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||
golden_quantized, output_scale, &tflite::testing::common_conv_params,
|
||||
tflite::Register_CONV_2D(), output_data);
|
||||
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
bias_quantized, tflite::testing::kOutputShape,
|
||||
tflite::testing::kGoldenData, golden_quantized, output_scale,
|
||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||
output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(InputOutputDifferentTypeIsError) {
|
||||
@ -206,13 +213,15 @@ TF_LITE_MICRO_TEST(SimpleTestDilatedQuantized) {
|
||||
conv_params.dilation_width_factor = 3;
|
||||
conv_params.dilation_height_factor = 2;
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvQuantizedPerLayer(
|
||||
input_shape, input_data, input_quantized, input_scale,
|
||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||
filter_quantized, filter_scale, tflite::testing::kBiasShape,
|
||||
tflite::testing::kBiasData, bias_quantized, output_shape, golden_data,
|
||||
golden_quantized, output_scale, &conv_params, tflite::Register_CONV_2D(),
|
||||
output_data);
|
||||
golden_quantized, output_scale, &conv_params,
|
||||
tflite::Register_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
||||
@ -231,15 +240,18 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
||||
int zero_points[tflite::testing::kBiasElements + 1];
|
||||
float scales[tflite::testing::kBiasElements + 1];
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvQuantizedPerChannel(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
input_quantized, input_scale, input_zero_point,
|
||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||
filter_quantized, tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
||||
tflite::testing::kGoldenData, golden_quantized, output_scale,
|
||||
output_zero_point, &tflite::testing::common_conv_params,
|
||||
tflite::Register_CONV_2D(), output_data);
|
||||
filter_quantized, tflite::testing::kBiasShape,
|
||||
tflite::testing::kBiasData, bias_quantized, scales, zero_points,
|
||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||
golden_quantized, output_scale, output_zero_point,
|
||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||
output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(SimpleTestDilatedQuantizedPerChannel) {
|
||||
@ -274,13 +286,16 @@ TF_LITE_MICRO_TEST(SimpleTestDilatedQuantizedPerChannel) {
|
||||
conv_params.dilation_width_factor = 3;
|
||||
conv_params.dilation_height_factor = 2;
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvQuantizedPerChannel(
|
||||
input_shape, input_data, input_quantized, input_scale, input_zero_point,
|
||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||
filter_quantized, tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
input_shape, input_data, input_quantized, input_scale,
|
||||
input_zero_point, tflite::testing::kFilterShape,
|
||||
tflite::testing::kFilterData, filter_quantized,
|
||||
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
bias_quantized, scales, zero_points, output_shape, golden_data,
|
||||
golden_quantized, output_scale, output_zero_point, &conv_params,
|
||||
tflite::Register_CONV_2D(), output_data);
|
||||
tflite::Register_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannelRelu6) {
|
||||
@ -302,6 +317,8 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannelRelu6) {
|
||||
int zero_points[tflite::testing::kBiasElements + 1];
|
||||
float scales[tflite::testing::kBiasElements + 1];
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvQuantizedPerChannel(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
input_quantized, input_scale, input_zero_point,
|
||||
@ -310,7 +327,7 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannelRelu6) {
|
||||
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
||||
golden_data, golden_quantized, output_scale, output_zero_point,
|
||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||
output_data);
|
||||
output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannel) {
|
||||
@ -354,12 +371,14 @@ TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannel) {
|
||||
int zero_points[bias_elements + 1];
|
||||
float scales[bias_elements + 1];
|
||||
|
||||
tflite::testing::TestConvQuantizedPerChannel(
|
||||
input_shape, input_data, input_quantized, input_scale, input_zero_point,
|
||||
filter_shape, filter_data, filter_quantized, bias_shape, bias_data,
|
||||
bias_quantized, scales, zero_points, output_shape, golden_data,
|
||||
golden_quantized, output_scale, output_zero_point, &conv_params,
|
||||
tflite::Register_CONV_2D(), output_data);
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk, tflite::testing::TestConvQuantizedPerChannel(
|
||||
input_shape, input_data, input_quantized, input_scale,
|
||||
input_zero_point, filter_shape, filter_data,
|
||||
filter_quantized, bias_shape, bias_data, bias_quantized,
|
||||
scales, zero_points, output_shape, golden_data,
|
||||
golden_quantized, output_scale, output_zero_point,
|
||||
&conv_params, tflite::Register_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannelRelu6) {
|
||||
@ -403,12 +422,14 @@ TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannelRelu6) {
|
||||
int zero_points[bias_elements + 1];
|
||||
float scales[bias_elements + 1];
|
||||
|
||||
tflite::testing::TestConvQuantizedPerChannel(
|
||||
input_shape, input_data, input_quantized, input_scale, input_zero_point,
|
||||
filter_shape, filter_data, filter_quantized, bias_shape, bias_data,
|
||||
bias_quantized, scales, zero_points, output_shape, golden_data,
|
||||
golden_quantized, output_scale, output_zero_point, &conv_params,
|
||||
tflite::Register_CONV_2D(), output_data);
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk, tflite::testing::TestConvQuantizedPerChannel(
|
||||
input_shape, input_data, input_quantized, input_scale,
|
||||
input_zero_point, filter_shape, filter_data,
|
||||
filter_quantized, bias_shape, bias_data, bias_quantized,
|
||||
scales, zero_points, output_shape, golden_data,
|
||||
golden_quantized, output_scale, output_zero_point,
|
||||
&conv_params, tflite::Register_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(BroadcastPerLayerQuantizationToPerChannelShouldMatchGolden) {
|
||||
|
@ -59,15 +59,15 @@ TfLiteStatus ValidateConvGoldens(TfLiteTensor* tensors, int tensors_size,
|
||||
TfLiteRegistration registration,
|
||||
uint8_t* output_data, float tolerance = 1e-5);
|
||||
|
||||
void TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||
const int* filter_dims_data, const float* filter_data,
|
||||
const int* bias_dims_data, const float* bias_data,
|
||||
const int* output_dims_data,
|
||||
TfLiteStatus TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||
const int* filter_dims_data,
|
||||
const float* filter_data, const int* bias_dims_data,
|
||||
const float* bias_data, const int* output_dims_data,
|
||||
const float* expected_output_data,
|
||||
TfLiteConvParams* conv_params,
|
||||
TfLiteRegistration registration, float* output_data);
|
||||
|
||||
void TestConvQuantizedPerLayer(
|
||||
TfLiteStatus TestConvQuantizedPerLayer(
|
||||
const int* input_dims_data, const float* input_data,
|
||||
uint8_t* input_quantized, float input_scale, const int* filter_dims_data,
|
||||
const float* filter_data, uint8_t* filter_quantized, float filter_scale,
|
||||
@ -77,7 +77,7 @@ void TestConvQuantizedPerLayer(
|
||||
TfLiteConvParams* conv_params, TfLiteRegistration registration,
|
||||
uint8_t* output_data);
|
||||
|
||||
void TestConvQuantizedPerChannel(
|
||||
TfLiteStatus TestConvQuantizedPerChannel(
|
||||
const int* input_dims_data, const float* input_data,
|
||||
int8_t* input_quantized, float input_scale, int input_zero_point,
|
||||
const int* filter_dims_data, const float* filter_data,
|
||||
|
@ -27,9 +27,10 @@ TfLiteStatus InvokeConv(TfLiteTensor* tensors, int tensors_size,
|
||||
int outputs_array_data[] = {1, 3};
|
||||
TfLiteIntArray* outputs_array = IntArrayFromInts(outputs_array_data);
|
||||
|
||||
tflite::MicroErrorReporter reporter;
|
||||
micro::KernelRunner runner(
|
||||
registration, tensors, tensors_size, inputs_array, outputs_array,
|
||||
reinterpret_cast<void*>(conv_params), micro_test::reporter);
|
||||
reinterpret_cast<TfLiteStatus*>(conv_params), &reporter);
|
||||
|
||||
const char* init_data = reinterpret_cast<const char*>(conv_params);
|
||||
TfLiteStatus status = runner.InitAndPrepare(init_data);
|
||||
@ -112,13 +113,14 @@ TfLiteStatus ValidateConvGoldens(TfLiteTensor* tensors, int tensors_size,
|
||||
registration, output_data, tolerance);
|
||||
}
|
||||
|
||||
void TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||
const int* filter_dims_data, const float* filter_data,
|
||||
const int* bias_dims_data, const float* bias_data,
|
||||
const int* output_dims_data,
|
||||
TfLiteStatus TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||
const int* filter_dims_data,
|
||||
const float* filter_data, const int* bias_dims_data,
|
||||
const float* bias_data, const int* output_dims_data,
|
||||
const float* expected_output_data,
|
||||
TfLiteConvParams* conv_params,
|
||||
TfLiteRegistration registration, float* output_data) {
|
||||
TfLiteRegistration registration,
|
||||
float* output_data) {
|
||||
TfLiteIntArray* input_dims = IntArrayFromInts(input_dims_data);
|
||||
TfLiteIntArray* filter_dims = IntArrayFromInts(filter_dims_data);
|
||||
TfLiteIntArray* bias_dims = IntArrayFromInts(bias_dims_data);
|
||||
@ -134,13 +136,12 @@ void TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||
CreateTensor(output_data, output_dims),
|
||||
};
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk, ValidateConvGoldens(tensors, tensors_size,
|
||||
expected_output_data, output_dims_count,
|
||||
conv_params, registration, output_data));
|
||||
return ValidateConvGoldens(tensors, tensors_size, expected_output_data,
|
||||
output_dims_count, conv_params, registration,
|
||||
output_data);
|
||||
}
|
||||
|
||||
void TestConvQuantizedPerLayer(
|
||||
TfLiteStatus TestConvQuantizedPerLayer(
|
||||
const int* input_dims_data, const float* input_data,
|
||||
uint8_t* input_quantized, float input_scale, const int* filter_dims_data,
|
||||
const float* filter_data, uint8_t* filter_quantized, float filter_scale,
|
||||
@ -177,14 +178,12 @@ void TestConvQuantizedPerLayer(
|
||||
0};
|
||||
tensors[1].quantization = {kTfLiteAffineQuantization, &filter_quant};
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
ValidateConvGoldens(tensors, tensors_size, expected_output_quantized,
|
||||
return ValidateConvGoldens(tensors, tensors_size, expected_output_quantized,
|
||||
output_dims_count, conv_params, registration,
|
||||
output_data));
|
||||
output_data);
|
||||
}
|
||||
|
||||
void TestConvQuantizedPerChannel(
|
||||
TfLiteStatus TestConvQuantizedPerChannel(
|
||||
const int* input_dims_data, const float* input_data,
|
||||
int8_t* input_quantized, float input_scale, int input_zero_point,
|
||||
const int* filter_dims_data, const float* filter_data,
|
||||
@ -241,11 +240,9 @@ void TestConvQuantizedPerChannel(
|
||||
|
||||
tflite::Quantize(expected_output_data, expected_output_data_quantized,
|
||||
output_dims_count, output_scale, output_zero_point);
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
ValidateConvGoldens(tensors, tensors_size, expected_output_data_quantized,
|
||||
output_dims_count, conv_params, registration,
|
||||
output_data, 1.0 /* tolerance */));
|
||||
return ValidateConvGoldens(
|
||||
tensors, tensors_size, expected_output_data_quantized, output_dims_count,
|
||||
conv_params, registration, output_data, 1.0 /* tolerance */);
|
||||
}
|
||||
|
||||
} // namespace testing
|
||||
|
@ -64,13 +64,15 @@ TF_LITE_MICRO_TESTS_BEGIN
|
||||
TF_LITE_MICRO_TEST(SimpleTestFloat) {
|
||||
float output_data[tflite::testing::kOutputElements];
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvFloat(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||
&tflite::testing::common_conv_params,
|
||||
tflite::Register_TRANSPOSE_CONV_2D(), output_data);
|
||||
tflite::Register_TRANSPOSE_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
||||
@ -88,15 +90,18 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
||||
int zero_points[tflite::testing::kBiasElements + 1];
|
||||
float scales[tflite::testing::kBiasElements + 1];
|
||||
|
||||
TF_LITE_MICRO_EXPECT_EQ(
|
||||
kTfLiteOk,
|
||||
tflite::testing::TestConvQuantizedPerChannel(
|
||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||
input_quantized, input_scale, input_zero_point,
|
||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||
filter_quantized, tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
||||
tflite::testing::kGoldenData, golden_quantized, output_scale,
|
||||
output_zero_point, &tflite::testing::common_conv_params,
|
||||
tflite::Register_TRANSPOSE_CONV_2D(), output_data);
|
||||
filter_quantized, tflite::testing::kBiasShape,
|
||||
tflite::testing::kBiasData, bias_quantized, scales, zero_points,
|
||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||
golden_quantized, output_scale, output_zero_point,
|
||||
&tflite::testing::common_conv_params,
|
||||
tflite::Register_TRANSPOSE_CONV_2D(), output_data));
|
||||
}
|
||||
|
||||
TF_LITE_MICRO_TEST(InputOutputDifferentTypeIsError) {
|
||||
|
Loading…
Reference in New Issue
Block a user