TensorFlow:损失和指标应该相同吗?

2024-03-15

我使用二元交叉熵作为我的损失函数和我的度量。

但是,我看到损失和指标的值不同。它们非常相似,但又不同。

为什么会这样呢?我在用tf.keras.losses.binary_crossentropy(y_true, y_pred)对彼此而言。

损失:0.1506 和度量值是 0.1525,这是不同的


如果您使用与损失和度量相同的函数,通常在深度网络中您会看到不同的结果。这一般只是由于floating point precision errors:尽管数学方程是等价的,但操作的运行顺序并不相同,这可能会导致微小的差异。
这正是你的情况所发生的情况。

但如果你正在使用任何Regularizer损失和指标差异会更大,因为Regularizers惩罚损失函数以避免过度拟合。

理想情况下,指标和损失的工作方式相同,让我们看一下文档中的示例并进行比较。

二元交叉熵作为度量:

m.update_state([[0, 1], [0, 0]], [[0.6, 0.4], [0.4, 0.6]])
m.result().numpy() 

0.81492424

二元交叉熵作为损失:

y_true = [[0., 1.], [0., 0.]]
y_pred = [[0.6, 0.4], [0.4, 0.6]]
bce = tf.keras.losses.BinaryCrossentropy()
bce(y_true, y_pred).numpy() 

0.81492424

希望这能回答您的问题,快乐学习!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow:损失和指标应该相同吗? 的相关文章

随机推荐