diff --git a/tensorflow/lite/experimental/micro/micro_utils.cc b/tensorflow/lite/experimental/micro/micro_utils.cc index c46970c3e30..3dbeb84d2d4 100644 --- a/tensorflow/lite/experimental/micro/micro_utils.cc +++ b/tensorflow/lite/experimental/micro/micro_utils.cc @@ -75,7 +75,7 @@ int8_t FloatToAsymmetricQuantizedInt8(const float value, const float scale, } int8_t FloatToSymmetricQuantizedInt8(const float value, const float scale) { - return FloatToSymmetricQuantizedUInt8(value, scale) + kAsymmetricInt8Min; + return FloatToAsymmetricQuantizedInt8(value, scale, 0.0f); } int32_t FloatToSymmetricQuantizedInt32(const float value, const float scale) { diff --git a/tensorflow/lite/experimental/micro/micro_utils_test.cc b/tensorflow/lite/experimental/micro/micro_utils_test.cc index d2d9105b9f7..5619dee2486 100644 --- a/tensorflow/lite/experimental/micro/micro_utils_test.cc +++ b/tensorflow/lite/experimental/micro/micro_utils_test.cc @@ -52,6 +52,24 @@ TF_LITE_MICRO_TEST(FloatToAsymmetricQuantizedInt8Test) { TF_LITE_MICRO_EXPECT_EQ(-128, FloatToAsymmetricQuantizedInt8(-127, 1.0, -1)); } +TF_LITE_MICRO_TEST(FloatToSymmetricQuantizedInt8Test) { + using tflite::FloatToSymmetricQuantizedInt8; + // [-64, 63.5] -> zero_point=0, scale=0.5 + TF_LITE_MICRO_EXPECT_EQ(2, FloatToSymmetricQuantizedInt8(1, 0.5)); + TF_LITE_MICRO_EXPECT_EQ(4, FloatToSymmetricQuantizedInt8(2, 0.5)); + TF_LITE_MICRO_EXPECT_EQ(6, FloatToSymmetricQuantizedInt8(3, 0.5)); + TF_LITE_MICRO_EXPECT_EQ(-10, FloatToSymmetricQuantizedInt8(-5, 0.5)); + TF_LITE_MICRO_EXPECT_EQ(-128, FloatToSymmetricQuantizedInt8(-64, 0.5)); + TF_LITE_MICRO_EXPECT_EQ(127, FloatToSymmetricQuantizedInt8(63.5, 0.5)); + // [-127, 128] -> zero_point=-1, scale=1.0 + TF_LITE_MICRO_EXPECT_EQ(1, FloatToSymmetricQuantizedInt8(1, 1.0)); + TF_LITE_MICRO_EXPECT_EQ(0, FloatToSymmetricQuantizedInt8(0, 1.0)); + TF_LITE_MICRO_EXPECT_EQ(127, FloatToSymmetricQuantizedInt8(127, 1.0)); + TF_LITE_MICRO_EXPECT_EQ(127, FloatToSymmetricQuantizedInt8(128, 1.0)); + TF_LITE_MICRO_EXPECT_EQ(-126, FloatToSymmetricQuantizedInt8(-126, 1.0)); + TF_LITE_MICRO_EXPECT_EQ(-127, FloatToSymmetricQuantizedInt8(-127, 1.0)); +} + TF_LITE_MICRO_TEST(FloatToAsymmetricQuantizedInt32Test) { using tflite::FloatToSymmetricQuantizedInt32; TF_LITE_MICRO_EXPECT_EQ(0, FloatToSymmetricQuantizedInt32(0, 0.5));