0

我有一个关于使用 MeanSquaredError() 进行舍入的小问题。考虑以下程序

import tensorflow as tf
import numpy as np
tf.keras.backend.set_floatx('float64')
print(tf.keras.backend.floatx())
mse = tf.keras.losses.MeanSquaredError()
y_true = np.asarray([0.0,   0.0, 0.0])
y_pred = np.asarray([0.0,   1.0, 0.0])
tf_mse = mse(y_true,y_pred).numpy()
np_mse = np.sum((y_true-y_pred)**2)/3.0
print('tf mse    = ', tf_mse)
print('numpy_mse = ', np_mse)

在 Windows 10 上的 WSL2 上使用 TensorFlow 2.7 和 Numpy 1.21.4,我得到

tf mse    =  0.3333333432674408
numpy_mse =  0.3333333333333333

我不会预料到小数点后 8 位的舍入错误,我会预料到小数点后 12 位后的不匹配。不匹配的根源可能是什么?无论如何,这对我来说都不是一个表演障碍,但我对这种不匹配感到好奇。

答案与其他输入相匹配,例如

y_true = np.asarray([0.0,   0.0, 0.0])
y_pred = np.asarray([0.0,   12.0, 0.0])
4

0 回答 0