为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

狐的传说 2023-03-16 09:10:22
我正在制作一个损失函数,我在其中使用了tf.reduce_mean(). 但它返回一个近似值。我的代码如下:import tensorflow as tfreal = [[1.0], [0.3]]pred = [[0.8], [0.2]]loss_object2 = tf.keras.losses.mean_squared_errordef 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>这应该只是回归0.025,为什么要回归0.024999999?
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

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

浮点运算旨在逼近实数运算。如果没有对浮点格式和算术规则有透彻的理解,就不要指望得到准确的结果。

在用于 的 IEEE 754 binary32 格式中float32,最接近 .04 的可表示值是 0.039999999105930328369140625 (5368709•2 −27 )。最接近 .01 的可表示值是 0.00999999977648258209228515625 (5368709•2 -29 )。当使用 IEEE 754 规则将它们相加并除以二时,结果为 0.024999998509883880615234375 (3355443•2 -27 )。


查看完整回答
反对 回复 2023-03-16
  • 1 回答
  • 0 关注
  • 78 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信