Python tensorflow的reduce_mean()给出一个近似值(不是精确值)

Python tensorflow的reduce_mean()给出一个近似值(不是精确值),python,tensorflow,floating-point,mean,Python,Tensorflow,Floating Point,Mean,我正在制作一个loss函数,其中我使用了tf.reduce\u mean()。但它返回一个近似值 我的代码如下: import tensorflow as tf real = [[1.0], [0.3]] pred = [[0.8], [0.2]] loss_object2 = tf.keras.losses.mean_squared_error def loss_function(real, pred): loss_ = loss_object2(real, pred) p

我正在制作一个loss函数,其中我使用了
tf.reduce\u mean()
。但它返回一个近似值

我的代码如下:

import tensorflow as tf

real = [[1.0], [0.3]]
pred = [[0.8], [0.2]]

loss_object2 = tf.keras.losses.mean_squared_error
def loss_function(real, pred):
    loss_ = loss_object2(real, pred)
    print(loss_)
    return tf.reduce_mean(loss_)

loss_function(real, pred)
这将提供以下输出:

tf.Tensor([0.04 0.01], shape=(2,), dtype=float32)
<tf.Tensor: shape=(), dtype=float32, numpy=0.024999999>
tf.Tensor([0.04 0.01],shape=(2,),dtype=float32)

这应该只是返回
0.025
,为什么返回
0.02499999

IEEE 754-2008浮点运算标准第3.2条规定“浮点运算是实数运算的系统近似…”

浮点运算被设计成近似实数运算。在对浮点格式和算术规则缺乏透彻理解的情况下,不应该期望得到准确的结果

在用于float32的IEEE 754 binary32格式中,最接近.04的可表示值为0.0399999105930328369140625(5368709•2−27). 最接近.01的可表示值为0.00999999977648258209228515625(5368709•2−29). 当使用IEEE 754规则将这些值相加并除以2时,结果为0.024999985098808080806515375(3355443•2−27)