From e77349d7e286c5adbaf5e93eef0b0866cd80ec02 Mon Sep 17 00:00:00 2001 From: ShengYang1 Date: Fri, 25 Sep 2020 14:36:52 +0800 Subject: [PATCH] Bug fix for remapper test --- tensorflow/core/framework/tensor_testutil.cc | 2 ++ tensorflow/core/grappler/optimizers/remapper_test.cc | 12 ++++++++---- tensorflow/core/kernels/relu_op.cc | 5 ++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/tensorflow/core/framework/tensor_testutil.cc b/tensorflow/core/framework/tensor_testutil.cc index 89a20b9a039..804d5df31ed 100644 --- a/tensorflow/core/framework/tensor_testutil.cc +++ b/tensorflow/core/framework/tensor_testutil.cc @@ -216,6 +216,8 @@ void ExpectClose(const Tensor& x, const Tensor& y, double atol, double rtol) { switch (x.dtype()) { case DT_HALF: return ExpectClose(x, y, atol, rtol); + case DT_BFLOAT16: + return ExpectClose(x, y, atol, rtol); case DT_FLOAT: return ExpectClose(x, y, atol, rtol); case DT_DOUBLE: diff --git a/tensorflow/core/grappler/optimizers/remapper_test.cc b/tensorflow/core/grappler/optimizers/remapper_test.cc index 9f5a2c4716a..2aa564104db 100644 --- a/tensorflow/core/grappler/optimizers/remapper_test.cc +++ b/tensorflow/core/grappler/optimizers/remapper_test.cc @@ -451,8 +451,10 @@ class RemapperFuseMatMulWithBiasTest : public RemapperTest { ASSERT_EQ(tensors_expected.size(), 1); auto tensors = EvaluateNodes(output, item.fetch, item.feed); ASSERT_EQ(tensors.size(), 1); - typedef typename EnumToDataType::Type T; - test::ExpectTensorNear(tensors[0], tensors_expected[0], 1e-6); + if (DTYPE == DT_BFLOAT16) + test::ExpectClose(tensors[0], tensors_expected[0], 1e-2, 1e-2); + else + test::ExpectClose(tensors[0], tensors_expected[0], 1e-6); } }; @@ -704,8 +706,10 @@ class RemapperFuseMatMulWithBiasAndActivationTest : public RemapperTest { ASSERT_EQ(tensors_expected.size(), 1); auto tensors = EvaluateNodes(output, item.fetch, item.feed); ASSERT_EQ(tensors.size(), 1); - typedef typename EnumToDataType::Type T; - test::ExpectTensorNear(tensors[0], tensors_expected[0], 1e-6); + if (DTYPE == DT_BFLOAT16) + test::ExpectClose(tensors[0], tensors_expected[0], 1e-2, 1e-2); + else + test::ExpectClose(tensors[0], tensors_expected[0], 1e-6); } } }; diff --git a/tensorflow/core/kernels/relu_op.cc b/tensorflow/core/kernels/relu_op.cc index 210b994a0b8..a1a13adb34d 100644 --- a/tensorflow/core/kernels/relu_op.cc +++ b/tensorflow/core/kernels/relu_op.cc @@ -18,12 +18,12 @@ limitations under the License. #define EIGEN_USE_THREADS #include "tensorflow/core/kernels/relu_op.h" -#include "third_party/eigen3/unsupported/Eigen/CXX11/Tensor" #include "tensorflow/core/framework/numeric_op.h" #include "tensorflow/core/framework/op_kernel.h" #include "tensorflow/core/framework/register_types.h" #include "tensorflow/core/framework/tensor.h" #include "tensorflow/core/lib/core/errors.h" +#include "third_party/eigen3/unsupported/Eigen/CXX11/Tensor" namespace tensorflow { @@ -68,7 +68,7 @@ TF_CALL_REAL_NUMBER_TYPES(REGISTER_RELU_KERNELS); SeluGradOp) // Elu and Selu only make sense with float or double. -TF_CALL_GPU_NUMBER_TYPES(REGISTER_ELU_KERNELS); +TF_CALL_FLOAT_TYPES(REGISTER_ELU_KERNELS); #undef REGISTER_ELU_KERNELS #if GOOGLE_CUDA || TENSORFLOW_USE_ROCM @@ -208,5 +208,4 @@ REGISTER_KERNEL_BUILDER( #endif // GOOGLE_CUDA || TENSORFLOW_USE_ROCM - } // namespace tensorflow