阅读tf.nn.sigmoid_cross_entropy_with_logits
的TF指南会将logits
和labels
传递给函数,然后将sigmoid
操作应用于logits
。为了避免在exp(-x)
时x < 0
中发生溢出,他们将函数重新构造为:
max(x, 0) - x * z + log(1 + exp(-abs(x)))
这很好,但是在某些情况下,您可能希望网络的输出具有S型变换并使用tf.nn.sigmoid_cross_entropy_with_logits
而又不会使损耗再次应用S型。在避免exp(-x)
出现x < 0
溢出的同时,如何重新制定呢?
答案 0 :(得分:0)
在某些情况下,您希望网络的输出具有 乙状结肠的变换和使用 tf.nn.sigmoid_cross_entropy_with_logits而不会造成损失 再次成为乙状结肠。
如果我没记错的话,您尝试给Logit一个S型激活处理的值。以(0,1)为边界的已处理值。我认为x永远不会小于0。将0到1之间的值添加到logit似乎是不合理的,因为该值的S形总是在0.5到Sigmoid(1)之间,这意味着对于负数标签,模型尝试将其训练为0,但模型的最小值为0.5。负样本的损失始终存在(如log(1 + exp(0.5))),并且永远不能最小化。