softmax_cross_entropy_with_logits与softmax_cross_entropy_with_logits_v2有何不同?


41

具体来说,我想我对此语句感到疑惑:

TensorFlow的未来主要版本默认将允许梯度流入backprop上的标签输入中。

使用时会显示出来tf.nn.softmax_cross_entropy_with_logits。在同一封信中,它敦促我看看tf.nn.softmax_cross_entropy_with_logits_v2。我浏览了文档,但只说明了tf.nn.softmax_cross_entropy_with_logits_v2

反向传播将同时出现在logit和标签中。要禁止反向传播到标签中,请在将标签张量馈入此函数之前将其张量传递给stop_gradients。

而不是tf.nn.softmax_cross_entropy_with_logits

反向传播只会在logit中发生。

对于该主题来说是一个新手(我正在尝试通过一些基本教程进行学习),这些陈述并不十分清楚。我对反向传播有一个较浅的了解,但是前面的陈述实际上是什么意思?反向传播和标签如何连接?与tf.nn.softmax_cross_entropy_with_logits_v2原始作品相比,这将如何改变我的工作方式?

Answers:


56

您完全有理由感到困惑,因为在监督学习中,不需要向后传播标签。它们被认为是固定的地面真理,仅需要调整权重以匹配它们。

但是在某些情况下,标签本身可能来自其他来源,即另一个网络。对抗学习就是一个例子。在这种情况下,两个网络都可以从错误信号中受益。这就是为什么tf.nn.softmax_cross_entropy_with_logits_v2引入的原因。请注意,当标签为占位符(也是典型的)时,是否通过梯度不存在差异,因为没有变量可应用梯度。


5
嗯,我知道,我还没有超出监督学习的范围,还有很多东西需要学习。以便我能正确理解您,基本上,只要我不指出我的标签是经过优化的(即将它们存储为tf.Variable),它们就不会被触及,并且softmax_..._with_logits_v2会像softmax_with_logits?(或者我可以在标签变量上使用tf.stop_gradient。)
Christian Eriksson,

3
是的,这是正确的。
Maxim

2
非常清晰且具有教育意义,非常感谢!
Haitao Du
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.