tf.math.round()/np.round()
tf.round()与np.round()相同,不是一般的四舍五入取整,而是“四舍六入五取偶”,也即:
- 当小数部分小于0.5,则舍去;
- 当小数部分大于0.5,则进位;
- 当小数部分正好为0.5,此时要看整数部分是奇数还是偶数,如果为奇数,则小数部分进位,得到比原来整数部分大1的偶数;如果为偶数,则直接舍去小数部分。
示例:
import tensorflow as tf
x = tf.constant([0.7, 2.51, 2.3, 1.43, -4.5, 3.5])
tf.round(x)
输出:
<tf.Tensor: shape=(6,), dtype=float32, numpy=array([ 1., 3., 2., 1., -4., 4.], dtype=float32)>
import numpy as np
np.round([0.7, 2.51, 2.3, 1.43, -4.5, 3.5])
输出:
array([ 1., 3., 2., 1., -4., 4.])
tf.math.ceil()/tf.math.floor()/np.ceil()/np.floor()
无论是TensorFlow中的还是numpy中的,还是matlab里面的,ceil函数和floor函数分别都是向上取整和向下取整。
例如:
x = tf.constant([1.3324, -1.5, 5.555, -2.532, 0.99, float("inf")])
tf.floor(x).numpy()
输出:
tf.math.ceil([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
输出: