Merge pull request #46962 from advaitjain:fix-exp-test-xtensa
PiperOrigin-RevId: 355944394 Change-Id: I52b83d393ea4e3b55cf73a8d0c73bd855a73090a
This commit is contained in:
commit
7dbb6cf44a
@ -235,6 +235,19 @@ tflite_micro_cc_test(
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
tflite_micro_cc_test(
|
||||||
|
name = "exp_test",
|
||||||
|
srcs = ["exp_test.cc"],
|
||||||
|
deps = [
|
||||||
|
":kernel_runner",
|
||||||
|
"//tensorflow/lite/c:common",
|
||||||
|
"//tensorflow/lite/micro:debug_log",
|
||||||
|
"//tensorflow/lite/micro:op_resolvers",
|
||||||
|
"//tensorflow/lite/micro:test_helpers",
|
||||||
|
"//tensorflow/lite/micro/testing:micro_test",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
tflite_micro_cc_test(
|
tflite_micro_cc_test(
|
||||||
name = "pooling_test",
|
name = "pooling_test",
|
||||||
srcs = [
|
srcs = [
|
||||||
|
@ -54,7 +54,6 @@ void TestExp(const int* input_dims_data, const float* input_data,
|
|||||||
TF_LITE_MICRO_EXPECT_NEAR(expected_output_data[i], output_data[i], 1e-5f);
|
TF_LITE_MICRO_EXPECT_NEAR(expected_output_data[i], output_data[i], 1e-5f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
} // namespace tflite
|
} // namespace tflite
|
||||||
@ -62,13 +61,16 @@ void TestExp(const int* input_dims_data, const float* input_data,
|
|||||||
TF_LITE_MICRO_TESTS_BEGIN
|
TF_LITE_MICRO_TESTS_BEGIN
|
||||||
|
|
||||||
TF_LITE_MICRO_TEST(SingleDim) {
|
TF_LITE_MICRO_TEST(SingleDim) {
|
||||||
float output_data[7];
|
constexpr int kInputSize = 7;
|
||||||
const int input_dims[] = {2, 1, 7};
|
float output_data[kInputSize];
|
||||||
const float input_values[] = {0.0f, 1.0f, -1.0f, 100.0f,
|
const int input_dims[] = {2, 1, kInputSize};
|
||||||
|
const float input_values[kInputSize] = {0.0f, 1.0f, -1.0f, 100.0f,
|
||||||
-100.0f, 0.01f, -0.01f};
|
-100.0f, 0.01f, -0.01f};
|
||||||
const float golden[] = {
|
float golden[kInputSize];
|
||||||
1.0f, 2.71828f, 0.36788f, std::numeric_limits<float>::infinity(),
|
for (int i = 0; i < kInputSize; ++i) {
|
||||||
1.17549e-38f, 1.01005f, 0.99005f};
|
golden[i] = std::exp(input_values[i]);
|
||||||
|
}
|
||||||
|
|
||||||
tflite::testing::TestExp(input_dims, input_values, golden, output_data);
|
tflite::testing::TestExp(input_dims, input_values, golden, output_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,12 +142,14 @@ extern bool did_test_fail;
|
|||||||
} \
|
} \
|
||||||
} while (false)
|
} while (false)
|
||||||
|
|
||||||
|
// The check vx != vy is needed to properly handle the case where both
|
||||||
|
// x and y evaluate to infinity. See #46960 for more details.
|
||||||
#define TF_LITE_MICRO_EXPECT_NEAR(x, y, epsilon) \
|
#define TF_LITE_MICRO_EXPECT_NEAR(x, y, epsilon) \
|
||||||
do { \
|
do { \
|
||||||
auto vx = (x); \
|
auto vx = (x); \
|
||||||
auto vy = (y); \
|
auto vy = (y); \
|
||||||
auto delta = ((vx) > (vy)) ? ((vx) - (vy)) : ((vy) - (vx)); \
|
auto delta = ((vx) > (vy)) ? ((vx) - (vy)) : ((vy) - (vx)); \
|
||||||
if (delta > epsilon) { \
|
if (vx != vy && delta > epsilon) { \
|
||||||
MicroPrintf(#x " (%f) near " #y " (%f) failed at %s:%d", \
|
MicroPrintf(#x " (%f) near " #y " (%f) failed at %s:%d", \
|
||||||
static_cast<double>(vx), static_cast<double>(vy), __FILE__, \
|
static_cast<double>(vx), static_cast<double>(vy), __FILE__, \
|
||||||
__LINE__); \
|
__LINE__); \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user