gpt4 book ai didi

neural-network - Tensorflow:具有交叉熵的缩放 logits

转载 作者:行者123 更新时间:2023-12-04 06:53:56 32 4
gpt4 key购买 nike

在 Tensorflow 中,我有一个分类器网络和不平衡的训练类。由于各种原因,我不能使用重采样来补偿不平衡的数据。因此,我不得不通过其他方式来补偿失衡,特别是根据每个类中的示例数量将 logits 乘以权重。我知道这不是首选方法,但重新采样不是一种选择。我的训练损失操作是 tf.nn.softmax_cross_entropy_with_logits (我也可以尝试 tf.nn.sparse_softmax_cross_entropy_with_logits )。 Tensorflow 文档在这些操作的描述中包含以下内容:

WARNING: This op expects unscaled logits, since it performs a softmax on logits internally for efficiency. Do not call this op with the output of softmax, as it will produce incorrect results.



我的问题:上面的警告仅指由 softmax 完成的缩放,还是意味着禁止任何类型的 logit 缩放?如果是后者,那么我的类重新平衡 logit 缩放会导致错误的结果吗?

谢谢,

罗恩

最佳答案

警告只是通知您 tf.nn.softmax_cross_entropy_with_logits将申请 softmax在输入 logits 上,在计算交叉熵之前。这个警告似乎真的要避免两次应用 softmax,因为交叉熵的结果会非常不同。

这是相关source code中的评论,关于实现tf.nn.softmax_cross_entropy_with_logits的函数:

// NOTE(touts): This duplicates some of the computations in softmax_op
// because we need the intermediate (logits -max(logits)) values to
// avoid a log(exp()) in the computation of the loss.

正如警告所述,此实现是为了提高性能,但需要注意的是您不应该放置自己的 softmax层作为输入(这在实践中有点方便)。

如果强制 softmax阻碍你的计算,也许另一个 API 可以帮助: tf.nn.sigmoid_cross_entropy_with_logits 或者 tf.nn.weighted_cross_entropy_with_logits .

但是,该实现似乎并未表明任何缩放都会影响结果。我想线性缩放函数应该没问题,只要它保留原始的 logits 重新分区。但无论应用于输入 logits, tf.nn.softmax_cross_entropy_with_logits将申请 softmax在计算交叉熵之前。

关于neural-network - Tensorflow:具有交叉熵的缩放 logits,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782245/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com