【发布时间】:2019-10-31 13:21:52
【问题描述】:
我对损失函数相当陌生,我有一个 800 个二元分类问题(意味着输出端的 800 个神经元不受彼此影响——每个神经元的概率为 0 或 1)。现在查看来自:https://www.tensorflow.org/api_docs/python/tf/nn/sigmoid_cross_entropy_with_logits
的文档它似乎使用“logits”,这是具有线性激活函数的网络输出,并且 Sigmoid(二元分类所需)应用于损失函数。
我正在研究 soft-max 激活的损失函数,并应用了类似的方法。我想知道为什么不将激活函数添加到网络输出中,而损失函数接收线性输出(logits)并在损失函数中应用激活。
【问题讨论】:
-
没什么大不了的。 sigmoid 用于损失 1) 以在其他地方为您节省一步 2) 以确保损失的每个输入都在 (0,1) 之间进行归一化。
-
@greeness 线性对数的应用在损失函数中产生了问题,这些问题在可以防止的问题中提到的帮助文件中进行了讨论。部署模型时我需要使用 Sigmoid,所以我相信它不会为我节省任何东西。 2) 它没有被规范化,损失函数的输入可以是负数,因为相同的帮助文件指定。
-
如果您不需要那种便利(实际上对您来说很痛苦),只需使用其他预定义的损失 (
tf.losses.log_loss) 或自己制作一个。 :) -
我明白了,谢谢你的评论。
标签: tensorflow loss-function softmax sigmoid