首页 > 解决方案 > 为什么在损失函数中使用均值而不是总和?

问题描述

为什么在损失函数中使用均值而不是总和?

即有什么理由首选这个

def mae_loss(y_true, y_pred):
    loss = tf.reduce_mean(tf.abs(y_true-y_pred))
    return loss

对此

def mae_loss(y_true, y_pred):
    loss = tf.reduce_sum(tf.abs(y_true-y_pred))
    return loss

在 Keras 源代码中,还使用了均值变体:

https://github.com/keras-team/keras/blob/5a7a789ee9766b6a594bd4be8b9edb34e71d6500/keras/losses.py#L17

标签: tensorflowkerasdeep-learningloss-function

解决方案


我们通常计算损失以与其他人进行比较或尽可能减少损失。如果你只得到总和而不是平均值,结果将根据数据的数量而变化,那么很难本能地找到它是否很大。这就是为什么我们通常使用“均方误差”或“平均绝对误差”而不是它们的总和。


推荐阅读