【发布时间】:2018-06-16 16:54:45
【问题描述】:
尊敬的 StackOverflow 社区, 我在 keras 中有以下损失函数:
return K.mean((y_true+K.epsilon()) * K.square(y_pred - y_true), axis=-1)
当我尝试用它训练我的网络(y 归一化为 0 - 1)时, 损失似乎达到了负值,我无法理解。 我用 numpy 计算了同样的东西,一切都按预期工作正常。
如果有人知道这种奇怪的负面解决方案的原因,我会非常高兴,非常感谢您的帮助。
【问题讨论】:
-
你为什么用
axis=-1? -
因为它会自动使用最后一个轴,在我的例子中是第四个。
-
那么
mean的输出将是一个数组,而损失必须只是一个数字。同样奇怪的是,张量y_true和y_pred的秩为 4,而且它们不仅仅是 1 秩向量。 -
不是真的....如果您检查所有标准的 keras 损失函数,它们也只会在最后一个轴上应用平均值。这使您可以进一步将它们的功能与平衡系数和其他东西一起使用。
-
@DanielMöller 你是对的。找到"why axis=-1 in loses"的这个答案
标签: python numpy keras calculation loss-function