From ff72e812c40391f347fe6adb1659573fca77c4ce Mon Sep 17 00:00:00 2001 From: Nat Jeffries Date: Fri, 23 Aug 2019 18:46:22 -0700 Subject: [PATCH] Clarify tests and remove tests for unsupported types. PiperOrigin-RevId: 265178265 --- .../micro/kernels/arg_min_max_test.cc | 125 +----------------- .../micro/kernels/reshape_test.cc | 28 ++-- 2 files changed, 18 insertions(+), 135 deletions(-) diff --git a/tensorflow/lite/experimental/micro/kernels/arg_min_max_test.cc b/tensorflow/lite/experimental/micro/kernels/arg_min_max_test.cc index 822aae6e7b6..722c0da9144 100644 --- a/tensorflow/lite/experimental/micro/kernels/arg_min_max_test.cc +++ b/tensorflow/lite/experimental/micro/kernels/arg_min_max_test.cc @@ -24,7 +24,6 @@ namespace tflite { namespace testing { namespace { -// If expected output is empty, the test is expected to fail. void TestArgMinMax(TfLiteTensor* input_tensor, TfLiteTensor* axis_tensor, TfLiteTensor* output_tensor, std::initializer_list expected_output_data, @@ -72,13 +71,6 @@ void TestArgMinMax(TfLiteTensor* input_tensor, TfLiteTensor* axis_tensor, TF_LITE_MICRO_EXPECT_EQ(kTfLiteOk, registration->prepare(&context, &node)); } TF_LITE_MICRO_EXPECT_NE(nullptr, registration->invoke); - // TODO(139763483): this is misleading. We should be more explicit about - // expecting failure conditions. - if (!expected_output_data.size()) { - TF_LITE_MICRO_EXPECT_EQ(kTfLiteError, - registration->invoke(&context, &node)); - return; - } TF_LITE_MICRO_EXPECT_EQ(kTfLiteOk, registration->invoke(&context, &node)); if (registration->free) { registration->free(&context, user_data); @@ -88,6 +80,7 @@ void TestArgMinMax(TfLiteTensor* input_tensor, TfLiteTensor* axis_tensor, output_tensor->data.i32[i], 1e-5f); } } + } // namespace } // namespace testing } // namespace tflite @@ -149,26 +142,6 @@ TF_LITE_MICRO_TEST(GetMaxArgInt8) { {1}); } -TF_LITE_MICRO_TEST(GetMaxArgInt32) { - using tflite::testing::F2Q32; - int32_t output_data[1]; - float input_scale = 7.436e-9; - TfLiteIntArray* input_dims = - tflite::testing::IntArrayFromInitializer({4, 1, 1, 1, 4}); - auto input_data = {F2Q32(1, input_scale), F2Q32(9, input_scale), - F2Q32(7, input_scale), F2Q32(3, input_scale)}; - auto input_tensor = tflite::testing::CreateQuantized32Tensor( - input_data, input_dims, "input_tensor", input_scale); - auto axis_tensor = tflite::testing::CreateTensor( - {3}, tflite::testing::IntArrayFromInitializer({3, 1, 1, 1}), - "axis_tensor"); - auto output_tensor = tflite::testing::CreateTensor( - output_data, tflite::testing::IntArrayFromInitializer({3, 1, 1, 1}), - "output_tensor"); - tflite::testing::TestArgMinMax(&input_tensor, &axis_tensor, &output_tensor, - {}); // Expects {1} if supported. -} - TF_LITE_MICRO_TEST(GetMaxArgMulDimensions) { using tflite::testing::F2Q; int32_t output_data[2]; @@ -217,54 +190,6 @@ TF_LITE_MICRO_TEST(GetMaxArgNegativeAxis) { {0, 1, 0, 0}); } -TF_LITE_MICRO_TEST(GetMaxArgOutput64) { - using tflite::testing::F2Q; - int64_t output_data[2]; - float input_min = 0; - float input_max = 15.9375; - TfLiteIntArray* input_dims = - tflite::testing::IntArrayFromInitializer({4, 1, 1, 2, 4}); - auto input_data = { - F2Q(10, input_min, input_max), F2Q(2, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(8, input_min, input_max), - F2Q(1, input_min, input_max), F2Q(9, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(3, input_min, input_max)}; - auto input_tensor = tflite::testing::CreateQuantizedTensor( - input_data, input_dims, "input_tensor", input_min, input_max); - auto axis_tensor = tflite::testing::CreateTensor( - {3}, tflite::testing::IntArrayFromInitializer({3, 1, 1, 1}), - "axis_tensor"); - auto output_tensor = tflite::testing::CreateTensor( - output_data, tflite::testing::IntArrayFromInitializer({3, 1, 1, 2}), - "output_tensor"); - tflite::testing::TestArgMinMax(&input_tensor, &axis_tensor, &output_tensor, - {}); // Expects {0, 1} if supported. -} - -TF_LITE_MICRO_TEST(GetMaxArgAxis64) { - using tflite::testing::F2Q; - int32_t output_data[2]; - float input_min = 0; - float input_max = 15.9375; - TfLiteIntArray* input_dims = - tflite::testing::IntArrayFromInitializer({4, 1, 1, 2, 4}); - auto input_data = { - F2Q(10, input_min, input_max), F2Q(2, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(8, input_min, input_max), - F2Q(1, input_min, input_max), F2Q(9, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(3, input_min, input_max)}; - auto input_tensor = tflite::testing::CreateQuantizedTensor( - input_data, input_dims, "input_tensor", input_min, input_max); - auto axis_tensor = tflite::testing::CreateTensor( - {3}, tflite::testing::IntArrayFromInitializer({3, 1, 1, 1}), - "axis_tensor"); - auto output_tensor = tflite::testing::CreateTensor( - output_data, tflite::testing::IntArrayFromInitializer({3, 1, 1, 2}), - "output_tensor"); - tflite::testing::TestArgMinMax(&input_tensor, &axis_tensor, &output_tensor, - {}); // Expects {0, 1} if supported. -} - TF_LITE_MICRO_TEST(GetMinArgFloat) { int32_t output_data[1]; TfLiteIntArray* input_dims = @@ -346,52 +271,4 @@ TF_LITE_MICRO_TEST(GetMinArgMulDimensions) { {0, 0}, true); } -TF_LITE_MICRO_TEST(GetMinArgOutput64) { - using tflite::testing::F2Q; - float input_min = 0; - float input_max = 15.9375; - int64_t output_data[2]; - TfLiteIntArray* input_dims = - tflite::testing::IntArrayFromInitializer({4, 1, 1, 2, 4}); - auto input_data = { - F2Q(10, input_min, input_max), F2Q(2, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(8, input_min, input_max), - F2Q(1, input_min, input_max), F2Q(9, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(3, input_min, input_max)}; - auto input_tensor = tflite::testing::CreateQuantizedTensor( - input_data, input_dims, "input_tensor", input_min, input_max); - auto axis_tensor = tflite::testing::CreateTensor( - {3}, tflite::testing::IntArrayFromInitializer({3, 1, 1, 1}), - "axis_tensor"); - auto output_tensor = tflite::testing::CreateTensor( - output_data, tflite::testing::IntArrayFromInitializer({3, 1, 1, 2}), - "output_tensor"); - tflite::testing::TestArgMinMax(&input_tensor, &axis_tensor, &output_tensor, - {}, true); // Expects {1, 0} if supported. -} - -TF_LITE_MICRO_TEST(GetMinArgAxis64) { - using tflite::testing::F2Q; - float input_min = 0; - float input_max = 15.9375; - int32_t output_data[2]; - TfLiteIntArray* input_dims = - tflite::testing::IntArrayFromInitializer({4, 1, 1, 2, 4}); - auto input_data = { - F2Q(10, input_min, input_max), F2Q(2, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(8, input_min, input_max), - F2Q(1, input_min, input_max), F2Q(9, input_min, input_max), - F2Q(7, input_min, input_max), F2Q(3, input_min, input_max)}; - auto input_tensor = tflite::testing::CreateQuantizedTensor( - input_data, input_dims, "input_tensor", input_min, input_max); - auto axis_tensor = tflite::testing::CreateTensor( - {3}, tflite::testing::IntArrayFromInitializer({3, 1, 1, 1}), - "axis_tensor"); - auto output_tensor = tflite::testing::CreateTensor( - output_data, tflite::testing::IntArrayFromInitializer({3, 1, 1, 2}), - "output_tensor"); - tflite::testing::TestArgMinMax(&input_tensor, &axis_tensor, &output_tensor, - {}, true); // Expects {1, 0} if supported -} - TF_LITE_MICRO_TESTS_END diff --git a/tensorflow/lite/experimental/micro/kernels/reshape_test.cc b/tensorflow/lite/experimental/micro/kernels/reshape_test.cc index 2e48eaa896b..cf13c640142 100644 --- a/tensorflow/lite/experimental/micro/kernels/reshape_test.cc +++ b/tensorflow/lite/experimental/micro/kernels/reshape_test.cc @@ -38,7 +38,8 @@ template void TestReshapeImpl(TfLiteTensor* input_tensor, TfLiteTensor* shape_tensor, TfLiteTensor* output_tensor, std::initializer_list expected_output, - std::initializer_list expected_dims) { + std::initializer_list expected_dims, + bool expect_failure) { TfLiteContext context; TfLiteTensor tensors[3]; TfLiteNode node; @@ -85,8 +86,7 @@ void TestReshapeImpl(TfLiteTensor* input_tensor, TfLiteTensor* shape_tensor, if (registration->prepare) { TF_LITE_MICRO_EXPECT_EQ(kTfLiteOk, registration->prepare(&context, &node)); } - TF_LITE_MICRO_EXPECT_NE(nullptr, registration->invoke); - if (expected_output.size() == 0) { + if (expect_failure) { TF_LITE_MICRO_EXPECT_EQ(kTfLiteError, registration->invoke(&context, &node)); return; @@ -116,7 +116,8 @@ void TestReshape(std::initializer_list input_dims_data, std::initializer_list shape_data, int* output_dims_data, uint8_t* output_data_raw, std::initializer_list expected_output, - std::initializer_list expected_dims) { + std::initializer_list expected_dims, + bool expect_failure = false) { TfLiteIntArray* input_dims = IntArrayFromInitializer(input_dims_data); TfLiteIntArray* output_dims = IntArrayFromInts(output_dims_data); TfLiteTensor input_tensor = CreateTensor( @@ -126,13 +127,13 @@ void TestReshape(std::initializer_list input_dims_data, output_data, output_dims, "input_tensor"); // Reshape param is passed as op's param. TestReshapeImpl(&input_tensor, nullptr, &output_tensor, expected_output, - expected_dims); + expected_dims, expect_failure); // Reshape param is passed as a tensor. TfLiteIntArray* shape_dims = IntArrayFromInitializer(shape_dims_data); auto shape_tensor = CreateTensor( shape_data, shape_dims, "shape_tensor"); TestReshapeImpl(&input_tensor, &shape_tensor, &output_tensor, - expected_output, expected_dims); + expected_output, expected_dims, expect_failure); } } // namespace } // namespace testing @@ -155,7 +156,8 @@ TF_LITE_MICRO_TEST(MismatchedDimensions) { {2, 1}, // shape_data output_dims, // output_dims output_data, {}, // expected_output - {} // expected_dims + {}, // expected_dims + true // expect failure ); } @@ -183,7 +185,8 @@ TF_LITE_MICRO_TEST(TooManySpecialDimensions) { {-1, -1, 2, 4}, // shape_data output_dims, // output_dims output_data, {}, // expected_output - {} // expected_dims + {}, // expected_dims + true // expect failure ); } @@ -205,7 +208,8 @@ TF_LITE_MICRO_TEST(InvalidShape) { nullptr, // shape_tensor &output_tensor, // output_tensor {}, // expected_output - {} // expected_dims + {}, // expected_dims + true // expect failure ); } @@ -271,13 +275,15 @@ TF_LITE_MICRO_TEST(LegacyScalarOutput) { &shape_tensor, // shape_tensor &output_tensor, // output_tensor {}, // expected_output - {} // expected_dims + {}, // expected_dims + true // expect failure ); tflite::testing::TestReshapeImpl(&input_tensor, // input_tensor nullptr, // shape_tensor &output_tensor, // output_tensor {3}, // expected_output - {} // expected_dims + {}, // expected_dims + false // expect failure ); }