Rename scalar_round_op_google -> scalar_round_half_to_even_op to document its semantics.

PiperOrigin-RevId: 286034751
Change-Id: I11f7a8a4407163b8fe75f236a4e9f8cf8323376e
This commit is contained in:
A. Unique TensorFlower 2019-12-17 12:31:25 -08:00 committed by TensorFlower Gardener
parent ab1c41685c
commit 340c0f3905
3 changed files with 11 additions and 11 deletions

View File

@ -546,7 +546,7 @@ struct functor_traits<google_floor_mod<Scalar>> {
#endif
template <typename Scalar, bool IsInteger = Eigen::NumTraits<Scalar>::IsInteger>
struct scalar_round_op_google {
struct scalar_round_half_to_even_op {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar
operator()(const Scalar& x) const {
EIGEN_STATIC_ASSERT((!NumTraits<Scalar>::IsComplex),
@ -569,7 +569,7 @@ struct scalar_round_op_google {
};
template <typename Scalar>
struct scalar_round_op_google<Scalar, true> {
struct scalar_round_half_to_even_op<Scalar, true> {
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Scalar
operator()(const Scalar& x) const {
return x;
@ -581,7 +581,7 @@ struct scalar_round_op_google<Scalar, true> {
};
template <typename Scalar>
struct functor_traits<scalar_round_op_google<Scalar>> {
struct functor_traits<scalar_round_half_to_even_op<Scalar>> {
enum {
Cost = Eigen::NumTraits<Scalar>::IsInteger ? 0
: 4 * NumTraits<Scalar>::AddCost,
@ -960,12 +960,12 @@ template <typename T>
struct floor : base<T, Eigen::internal::scalar_floor_op<T>> {};
template <typename T>
struct round : base<T, Eigen::internal::scalar_round_op_google<T>> {};
struct round : base<T, Eigen::internal::scalar_round_half_to_even_op<T>> {};
template <typename T>
struct ceil : base<T, Eigen::internal::scalar_ceil_op<T>> {};
/** this should go in Eigen
/** TODO(tokarip): This should go in Eigen
* \brief Template functor to compute the round to int value of a scalar
*/
template <typename Scalar>

View File

@ -81,7 +81,8 @@ void ClampScaleAndRound(const Device& d, ConstVec input, T min_range,
switch (round_mode) {
case ROUND_HALF_TO_EVEN:
ClampScaleAndRound(d, input, min_range, max_range, scale, inverse_scale,
Eigen::internal::scalar_round_op_google<T>(), output);
Eigen::internal::scalar_round_half_to_even_op<T>(),
output);
break;
case ROUND_HALF_UP:
ClampScaleAndRound(d, input, min_range, max_range, scale, inverse_scale,
@ -107,7 +108,7 @@ void ScaleAndRound(const Device& d, ConstVec input, T scale, T inverse_scale,
switch (round_mode) {
case ROUND_HALF_TO_EVEN:
ScaleAndRound(d, input, scale, inverse_scale,
Eigen::internal::scalar_round_op_google<T>(), output);
Eigen::internal::scalar_round_half_to_even_op<T>(), output);
break;
case ROUND_HALF_UP:
ScaleAndRound(d, input, scale, inverse_scale,

View File

@ -276,16 +276,15 @@ class QuantizeV2Op : public OpKernel {
min_range = min_output_value / scale_factor;
max_range = max_output_value / scale_factor;
if (round_mode_ == ROUND_HALF_TO_EVEN) {
// scalar_round_op_google implements "round-half-to-even".
output.device(d) =
(input.cwiseMin(max_range).cwiseMax(min_range) * scale_factor)
.unaryExpr(Eigen::internal::scalar_round_op_google<float>())
.unaryExpr(
Eigen::internal::scalar_round_half_to_even_op<float>())
.template cast<T>();
} else if (round_mode_ == ROUND_HALF_AWAY_FROM_ZERO) {
// scalar_round_op implements "round-half-away-from-zero".
output.device(d) =
(input.cwiseMin(max_range).cwiseMax(min_range) * scale_factor)
.unaryExpr(Eigen::internal::scalar_round_op<float>())
.round()
.template cast<T>();
}
}