我正在制作一個損失函數,我在其中使用了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 )。
添加回答
舉報
0/150
提交
取消