我对损失函数相当陌生,我有一个 800 个二元分类问题(意味着输出端有 800 个神经元不受彼此影响 - 每个神经元的概率为 0 或 1)。现在查看文档:https://www.tensorflow.org/api_docs/python/tf/nn/sigmoid_cross_entropy_with_logits
它似乎使用“logits”,它是具有线性激活函数的网络的输出,并且在损失函数中应用了 Sigmoid(二元分类所需)。
我正在研究软最大激活的损失函数,并应用了类似的方法。我想知道为什么激活函数没有添加到网络输出中,并且损失函数接收线性输出(logits)并在损失函数中应用激活。
最佳答案
没有什么大的原因。损失中使用了sigmoid
- 让您在其他地方少走一步
- 确保损失的每个输入都在 (0,1) 之间标准化。
如果您不需要这种便利(实际上对您来说很痛苦),只需使用其他预定义的损失(tf.losses.log_loss
)或自己创建一个。 :)
关于tensorflow - 使用 Sigmoid 激活函数代替线性激活与在损失中使用 sigmoid 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56639942/