【问题标题】:TensorFlow v10 reformulate sigmoid cross entropy loss to work given sigmoid?TensorFlow v10 重新制定 sigmoid 交叉熵损失以在给定 sigmoid 的情况下工作?
【发布时间】:2019-03-30 22:44:49
【问题描述】:

阅读tf.nn.sigmoid_cross_entropy_with_logits 的TF 指南,将logitslabels 传递给函数,然后将sigmoid 操作应用于logits。为了避免exp(-x)x < 0 中溢出,他们将函数重新表述为:

max(x, 0) - x * z + log(1 + exp(-abs(x)))

这一切都很好,但是在这种情况下,您可能希望网络的输出具有 sigmoid 转换并使用 tf.nn.sigmoid_cross_entropy_with_logits 而不会丢失再次应用 sigmoid。如何在避免exp(-x)x < 0 溢出的同时重新制定这一点?

【问题讨论】:

    标签: python tensorflow machine-learning


    【解决方案1】:

    您可能希望网络的输出具有 sigmoid变换和使用 tf.nn.sigmoid_cross_entropy_with_logits 不适用损失 再次使用 sigmoid。

    如果我没记错的话,你是在尝试给 logits 一个由 sigmoid 激活处理的值。以 (0, 1) 为界的已处理值。我认为 x 永远不会

    【讨论】:

    • 我相信这取决于手头的问题。在多类、多标签问题中,sigmoid 交叉熵损失函数通常比 softmax 变体更受欢迎,我相信这是因为 softmax 使标签的概率依赖于其他标签的概率。因此,进入 sigmoid 的负 x 值被转换为接近零的值(概率)。所以我希望我的网络的输出是一个 sigmoid 激活函数。然而,正如你所说,因此我的问题,我不想在损失函数中再次使用 sigmoid,sigmoid_cross_entropy_with_logits
    猜你喜欢
    • 2018-05-31
    • 2016-08-01
    • 2021-11-25
    • 2017-03-14
    • 2018-01-31
    • 1970-01-01
    • 2021-01-02
    • 2019-02-07
    • 2018-02-27
    相关资源
    最近更新 更多