首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tensorflow:具有交叉熵的缩放逻辑

Tensorflow:具有交叉熵的缩放逻辑
EN

Stack Overflow用户
提问于 2016-09-30 01:14:31
回答 1查看 1.2K关注 0票数 4

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

警告:此操作期望不缩放的日志,因为它在内部执行logit的softmax以提高效率。不要用softmax的输出调用这个op,因为它会产生不正确的结果。

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

谢谢,

罗恩

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-30 03:40:29

警告只是通知您,在计算交叉熵之前,tf.nn.softmax_cross_entropy_with_logits将在输入日志上应用softmax。这个警告似乎确实避免了两次使用softmax,因为交叉熵的结果将是非常不同的。

下面是相关源代码中关于实现tf.nn.softmax_cross_entropy_with_logits的函数的注释

代码语言:javascript
复制
// 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_logitstf.nn.weighted_cross_entropy_with_logits

然而,实现似乎并没有表明任何缩放都会影响结果。我想线性缩放函数应该是很好的,只要它保留原来的逻辑--重新划分。但是无论在输入逻辑上应用什么,tf.nn.softmax_cross_entropy_with_logits都会在计算交叉熵之前应用softmax

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39782245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档