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) {
|
TF_LITE_MICRO_TEST(SimpleTestFloat) {
|
||||||
float output_data[tflite::testing::kOutputElements];
|
float output_data[tflite::testing::kOutputElements];
|
||||||
|
|
||||||
tflite::testing::TestConvFloat(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
kTfLiteOk,
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::TestConvFloat(
|
||||||
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||||
output_data);
|
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||||
|
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||||
|
output_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
TF_LITE_MICRO_TEST(InputAndFilterSameWidthHeight) {
|
TF_LITE_MICRO_TEST(InputAndFilterSameWidthHeight) {
|
||||||
@ -87,11 +89,13 @@ TF_LITE_MICRO_TEST(InputAndFilterSameWidthHeight) {
|
|||||||
const int kOutputShape[] = {4, 2, 1, 1, 1};
|
const int kOutputShape[] = {4, 2, 1, 1, 1};
|
||||||
const float expected_output[] = {10, 34};
|
const float expected_output[] = {10, 34};
|
||||||
|
|
||||||
tflite::testing::TestConvFloat(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData, kFilterShape,
|
kTfLiteOk,
|
||||||
filter_values, kBiasShape, bias_values, kOutputShape, expected_output,
|
tflite::testing::TestConvFloat(
|
||||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
output_data);
|
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) {
|
TF_LITE_MICRO_TEST(SimpleTestQuantized) {
|
||||||
@ -107,14 +111,17 @@ TF_LITE_MICRO_TEST(SimpleTestQuantized) {
|
|||||||
int32_t bias_quantized[tflite::testing::kBiasElements];
|
int32_t bias_quantized[tflite::testing::kBiasElements];
|
||||||
uint8_t golden_quantized[tflite::testing::kOutputElements];
|
uint8_t golden_quantized[tflite::testing::kOutputElements];
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerLayer(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
kTfLiteOk,
|
||||||
input_quantized, input_scale, tflite::testing::kFilterShape,
|
tflite::testing::TestConvQuantizedPerLayer(
|
||||||
tflite::testing::kFilterData, filter_quantized, filter_scale,
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
tflite::testing::kBiasShape, tflite::testing::kBiasData, bias_quantized,
|
input_quantized, input_scale, tflite::testing::kFilterShape,
|
||||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
tflite::testing::kFilterData, filter_quantized, filter_scale,
|
||||||
golden_quantized, output_scale, &tflite::testing::common_conv_params,
|
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||||
tflite::Register_CONV_2D(), output_data);
|
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) {
|
TF_LITE_MICRO_TEST(InputOutputDifferentTypeIsError) {
|
||||||
@ -206,13 +213,15 @@ TF_LITE_MICRO_TEST(SimpleTestDilatedQuantized) {
|
|||||||
conv_params.dilation_width_factor = 3;
|
conv_params.dilation_width_factor = 3;
|
||||||
conv_params.dilation_height_factor = 2;
|
conv_params.dilation_height_factor = 2;
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerLayer(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
input_shape, input_data, input_quantized, input_scale,
|
kTfLiteOk,
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::TestConvQuantizedPerLayer(
|
||||||
filter_quantized, filter_scale, tflite::testing::kBiasShape,
|
input_shape, input_data, input_quantized, input_scale,
|
||||||
tflite::testing::kBiasData, bias_quantized, output_shape, golden_data,
|
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||||
golden_quantized, output_scale, &conv_params, tflite::Register_CONV_2D(),
|
filter_quantized, filter_scale, tflite::testing::kBiasShape,
|
||||||
output_data);
|
tflite::testing::kBiasData, bias_quantized, output_shape, golden_data,
|
||||||
|
golden_quantized, output_scale, &conv_params,
|
||||||
|
tflite::Register_CONV_2D(), output_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
||||||
@ -231,15 +240,18 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
|||||||
int zero_points[tflite::testing::kBiasElements + 1];
|
int zero_points[tflite::testing::kBiasElements + 1];
|
||||||
float scales[tflite::testing::kBiasElements + 1];
|
float scales[tflite::testing::kBiasElements + 1];
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerChannel(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
kTfLiteOk,
|
||||||
input_quantized, input_scale, input_zero_point,
|
tflite::testing::TestConvQuantizedPerChannel(
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
filter_quantized, tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
input_quantized, input_scale, input_zero_point,
|
||||||
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||||
tflite::testing::kGoldenData, golden_quantized, output_scale,
|
filter_quantized, tflite::testing::kBiasShape,
|
||||||
output_zero_point, &tflite::testing::common_conv_params,
|
tflite::testing::kBiasData, bias_quantized, scales, zero_points,
|
||||||
tflite::Register_CONV_2D(), output_data);
|
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) {
|
TF_LITE_MICRO_TEST(SimpleTestDilatedQuantizedPerChannel) {
|
||||||
@ -274,13 +286,16 @@ TF_LITE_MICRO_TEST(SimpleTestDilatedQuantizedPerChannel) {
|
|||||||
conv_params.dilation_width_factor = 3;
|
conv_params.dilation_width_factor = 3;
|
||||||
conv_params.dilation_height_factor = 2;
|
conv_params.dilation_height_factor = 2;
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerChannel(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
input_shape, input_data, input_quantized, input_scale, input_zero_point,
|
kTfLiteOk,
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::TestConvQuantizedPerChannel(
|
||||||
filter_quantized, tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
input_shape, input_data, input_quantized, input_scale,
|
||||||
bias_quantized, scales, zero_points, output_shape, golden_data,
|
input_zero_point, tflite::testing::kFilterShape,
|
||||||
golden_quantized, output_scale, output_zero_point, &conv_params,
|
tflite::testing::kFilterData, filter_quantized,
|
||||||
tflite::Register_CONV_2D(), output_data);
|
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));
|
||||||
}
|
}
|
||||||
|
|
||||||
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannelRelu6) {
|
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannelRelu6) {
|
||||||
@ -302,15 +317,17 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannelRelu6) {
|
|||||||
int zero_points[tflite::testing::kBiasElements + 1];
|
int zero_points[tflite::testing::kBiasElements + 1];
|
||||||
float scales[tflite::testing::kBiasElements + 1];
|
float scales[tflite::testing::kBiasElements + 1];
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerChannel(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
kTfLiteOk,
|
||||||
input_quantized, input_scale, input_zero_point,
|
tflite::testing::TestConvQuantizedPerChannel(
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
filter_quantized, tflite::testing::kBiasShape, bias_values,
|
input_quantized, input_scale, input_zero_point,
|
||||||
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||||
golden_data, golden_quantized, output_scale, output_zero_point,
|
filter_quantized, tflite::testing::kBiasShape, bias_values,
|
||||||
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
||||||
output_data);
|
golden_data, golden_quantized, output_scale, output_zero_point,
|
||||||
|
&tflite::testing::common_conv_params, tflite::Register_CONV_2D(),
|
||||||
|
output_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannel) {
|
TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannel) {
|
||||||
@ -354,12 +371,14 @@ TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannel) {
|
|||||||
int zero_points[bias_elements + 1];
|
int zero_points[bias_elements + 1];
|
||||||
float scales[bias_elements + 1];
|
float scales[bias_elements + 1];
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerChannel(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
input_shape, input_data, input_quantized, input_scale, input_zero_point,
|
kTfLiteOk, tflite::testing::TestConvQuantizedPerChannel(
|
||||||
filter_shape, filter_data, filter_quantized, bias_shape, bias_data,
|
input_shape, input_data, input_quantized, input_scale,
|
||||||
bias_quantized, scales, zero_points, output_shape, golden_data,
|
input_zero_point, filter_shape, filter_data,
|
||||||
golden_quantized, output_scale, output_zero_point, &conv_params,
|
filter_quantized, bias_shape, bias_data, bias_quantized,
|
||||||
tflite::Register_CONV_2D(), output_data);
|
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) {
|
TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannelRelu6) {
|
||||||
@ -403,12 +422,14 @@ TF_LITE_MICRO_TEST(Kernel1x1QuantizedPerChannelRelu6) {
|
|||||||
int zero_points[bias_elements + 1];
|
int zero_points[bias_elements + 1];
|
||||||
float scales[bias_elements + 1];
|
float scales[bias_elements + 1];
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerChannel(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
input_shape, input_data, input_quantized, input_scale, input_zero_point,
|
kTfLiteOk, tflite::testing::TestConvQuantizedPerChannel(
|
||||||
filter_shape, filter_data, filter_quantized, bias_shape, bias_data,
|
input_shape, input_data, input_quantized, input_scale,
|
||||||
bias_quantized, scales, zero_points, output_shape, golden_data,
|
input_zero_point, filter_shape, filter_data,
|
||||||
golden_quantized, output_scale, output_zero_point, &conv_params,
|
filter_quantized, bias_shape, bias_data, bias_quantized,
|
||||||
tflite::Register_CONV_2D(), output_data);
|
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) {
|
TF_LITE_MICRO_TEST(BroadcastPerLayerQuantizationToPerChannelShouldMatchGolden) {
|
||||||
|
@ -59,15 +59,15 @@ TfLiteStatus ValidateConvGoldens(TfLiteTensor* tensors, int tensors_size,
|
|||||||
TfLiteRegistration registration,
|
TfLiteRegistration registration,
|
||||||
uint8_t* output_data, float tolerance = 1e-5);
|
uint8_t* output_data, float tolerance = 1e-5);
|
||||||
|
|
||||||
void TestConvFloat(const int* input_dims_data, const float* input_data,
|
TfLiteStatus TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||||
const int* filter_dims_data, const float* filter_data,
|
const int* filter_dims_data,
|
||||||
const int* bias_dims_data, const float* bias_data,
|
const float* filter_data, const int* bias_dims_data,
|
||||||
const int* output_dims_data,
|
const float* bias_data, const int* output_dims_data,
|
||||||
const float* expected_output_data,
|
const float* expected_output_data,
|
||||||
TfLiteConvParams* conv_params,
|
TfLiteConvParams* conv_params,
|
||||||
TfLiteRegistration registration, float* output_data);
|
TfLiteRegistration registration, float* output_data);
|
||||||
|
|
||||||
void TestConvQuantizedPerLayer(
|
TfLiteStatus TestConvQuantizedPerLayer(
|
||||||
const int* input_dims_data, const float* input_data,
|
const int* input_dims_data, const float* input_data,
|
||||||
uint8_t* input_quantized, float input_scale, const int* filter_dims_data,
|
uint8_t* input_quantized, float input_scale, const int* filter_dims_data,
|
||||||
const float* filter_data, uint8_t* filter_quantized, float filter_scale,
|
const float* filter_data, uint8_t* filter_quantized, float filter_scale,
|
||||||
@ -77,7 +77,7 @@ void TestConvQuantizedPerLayer(
|
|||||||
TfLiteConvParams* conv_params, TfLiteRegistration registration,
|
TfLiteConvParams* conv_params, TfLiteRegistration registration,
|
||||||
uint8_t* output_data);
|
uint8_t* output_data);
|
||||||
|
|
||||||
void TestConvQuantizedPerChannel(
|
TfLiteStatus TestConvQuantizedPerChannel(
|
||||||
const int* input_dims_data, const float* input_data,
|
const int* input_dims_data, const float* input_data,
|
||||||
int8_t* input_quantized, float input_scale, int input_zero_point,
|
int8_t* input_quantized, float input_scale, int input_zero_point,
|
||||||
const int* filter_dims_data, const float* filter_data,
|
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};
|
int outputs_array_data[] = {1, 3};
|
||||||
TfLiteIntArray* outputs_array = IntArrayFromInts(outputs_array_data);
|
TfLiteIntArray* outputs_array = IntArrayFromInts(outputs_array_data);
|
||||||
|
|
||||||
|
tflite::MicroErrorReporter reporter;
|
||||||
micro::KernelRunner runner(
|
micro::KernelRunner runner(
|
||||||
registration, tensors, tensors_size, inputs_array, outputs_array,
|
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);
|
const char* init_data = reinterpret_cast<const char*>(conv_params);
|
||||||
TfLiteStatus status = runner.InitAndPrepare(init_data);
|
TfLiteStatus status = runner.InitAndPrepare(init_data);
|
||||||
@ -112,13 +113,14 @@ TfLiteStatus ValidateConvGoldens(TfLiteTensor* tensors, int tensors_size,
|
|||||||
registration, output_data, tolerance);
|
registration, output_data, tolerance);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestConvFloat(const int* input_dims_data, const float* input_data,
|
TfLiteStatus TestConvFloat(const int* input_dims_data, const float* input_data,
|
||||||
const int* filter_dims_data, const float* filter_data,
|
const int* filter_dims_data,
|
||||||
const int* bias_dims_data, const float* bias_data,
|
const float* filter_data, const int* bias_dims_data,
|
||||||
const int* output_dims_data,
|
const float* bias_data, const int* output_dims_data,
|
||||||
const float* expected_output_data,
|
const float* expected_output_data,
|
||||||
TfLiteConvParams* conv_params,
|
TfLiteConvParams* conv_params,
|
||||||
TfLiteRegistration registration, float* output_data) {
|
TfLiteRegistration registration,
|
||||||
|
float* output_data) {
|
||||||
TfLiteIntArray* input_dims = IntArrayFromInts(input_dims_data);
|
TfLiteIntArray* input_dims = IntArrayFromInts(input_dims_data);
|
||||||
TfLiteIntArray* filter_dims = IntArrayFromInts(filter_dims_data);
|
TfLiteIntArray* filter_dims = IntArrayFromInts(filter_dims_data);
|
||||||
TfLiteIntArray* bias_dims = IntArrayFromInts(bias_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),
|
CreateTensor(output_data, output_dims),
|
||||||
};
|
};
|
||||||
|
|
||||||
TF_LITE_MICRO_EXPECT_EQ(
|
return ValidateConvGoldens(tensors, tensors_size, expected_output_data,
|
||||||
kTfLiteOk, ValidateConvGoldens(tensors, tensors_size,
|
output_dims_count, conv_params, registration,
|
||||||
expected_output_data, output_dims_count,
|
output_data);
|
||||||
conv_params, registration, output_data));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestConvQuantizedPerLayer(
|
TfLiteStatus TestConvQuantizedPerLayer(
|
||||||
const int* input_dims_data, const float* input_data,
|
const int* input_dims_data, const float* input_data,
|
||||||
uint8_t* input_quantized, float input_scale, const int* filter_dims_data,
|
uint8_t* input_quantized, float input_scale, const int* filter_dims_data,
|
||||||
const float* filter_data, uint8_t* filter_quantized, float filter_scale,
|
const float* filter_data, uint8_t* filter_quantized, float filter_scale,
|
||||||
@ -177,14 +178,12 @@ void TestConvQuantizedPerLayer(
|
|||||||
0};
|
0};
|
||||||
tensors[1].quantization = {kTfLiteAffineQuantization, &filter_quant};
|
tensors[1].quantization = {kTfLiteAffineQuantization, &filter_quant};
|
||||||
|
|
||||||
TF_LITE_MICRO_EXPECT_EQ(
|
return ValidateConvGoldens(tensors, tensors_size, expected_output_quantized,
|
||||||
kTfLiteOk,
|
output_dims_count, conv_params, registration,
|
||||||
ValidateConvGoldens(tensors, tensors_size, expected_output_quantized,
|
output_data);
|
||||||
output_dims_count, conv_params, registration,
|
|
||||||
output_data));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestConvQuantizedPerChannel(
|
TfLiteStatus TestConvQuantizedPerChannel(
|
||||||
const int* input_dims_data, const float* input_data,
|
const int* input_dims_data, const float* input_data,
|
||||||
int8_t* input_quantized, float input_scale, int input_zero_point,
|
int8_t* input_quantized, float input_scale, int input_zero_point,
|
||||||
const int* filter_dims_data, const float* filter_data,
|
const int* filter_dims_data, const float* filter_data,
|
||||||
@ -241,11 +240,9 @@ void TestConvQuantizedPerChannel(
|
|||||||
|
|
||||||
tflite::Quantize(expected_output_data, expected_output_data_quantized,
|
tflite::Quantize(expected_output_data, expected_output_data_quantized,
|
||||||
output_dims_count, output_scale, output_zero_point);
|
output_dims_count, output_scale, output_zero_point);
|
||||||
TF_LITE_MICRO_EXPECT_EQ(
|
return ValidateConvGoldens(
|
||||||
kTfLiteOk,
|
tensors, tensors_size, expected_output_data_quantized, output_dims_count,
|
||||||
ValidateConvGoldens(tensors, tensors_size, expected_output_data_quantized,
|
conv_params, registration, output_data, 1.0 /* tolerance */);
|
||||||
output_dims_count, conv_params, registration,
|
|
||||||
output_data, 1.0 /* tolerance */));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
|
@ -64,13 +64,15 @@ TF_LITE_MICRO_TESTS_BEGIN
|
|||||||
TF_LITE_MICRO_TEST(SimpleTestFloat) {
|
TF_LITE_MICRO_TEST(SimpleTestFloat) {
|
||||||
float output_data[tflite::testing::kOutputElements];
|
float output_data[tflite::testing::kOutputElements];
|
||||||
|
|
||||||
tflite::testing::TestConvFloat(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
kTfLiteOk,
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::TestConvFloat(
|
||||||
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||||
&tflite::testing::common_conv_params,
|
tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
||||||
tflite::Register_TRANSPOSE_CONV_2D(), output_data);
|
tflite::testing::kOutputShape, tflite::testing::kGoldenData,
|
||||||
|
&tflite::testing::common_conv_params,
|
||||||
|
tflite::Register_TRANSPOSE_CONV_2D(), output_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
||||||
@ -88,15 +90,18 @@ TF_LITE_MICRO_TEST(SimpleTestQuantizedPerChannel) {
|
|||||||
int zero_points[tflite::testing::kBiasElements + 1];
|
int zero_points[tflite::testing::kBiasElements + 1];
|
||||||
float scales[tflite::testing::kBiasElements + 1];
|
float scales[tflite::testing::kBiasElements + 1];
|
||||||
|
|
||||||
tflite::testing::TestConvQuantizedPerChannel(
|
TF_LITE_MICRO_EXPECT_EQ(
|
||||||
tflite::testing::kInputShape, tflite::testing::kInputData,
|
kTfLiteOk,
|
||||||
input_quantized, input_scale, input_zero_point,
|
tflite::testing::TestConvQuantizedPerChannel(
|
||||||
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
tflite::testing::kInputShape, tflite::testing::kInputData,
|
||||||
filter_quantized, tflite::testing::kBiasShape, tflite::testing::kBiasData,
|
input_quantized, input_scale, input_zero_point,
|
||||||
bias_quantized, scales, zero_points, tflite::testing::kOutputShape,
|
tflite::testing::kFilterShape, tflite::testing::kFilterData,
|
||||||
tflite::testing::kGoldenData, golden_quantized, output_scale,
|
filter_quantized, tflite::testing::kBiasShape,
|
||||||
output_zero_point, &tflite::testing::common_conv_params,
|
tflite::testing::kBiasData, bias_quantized, scales, zero_points,
|
||||||
tflite::Register_TRANSPOSE_CONV_2D(), output_data);
|
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) {
|
TF_LITE_MICRO_TEST(InputOutputDifferentTypeIsError) {
|
||||||
|
Loading…
Reference in New Issue
Block a user