2017-10-19 129 views
1

由于隐藏tf.nn.softmax_cross_entropy_with_logitsgen_nn_ops的源代码,任何人都可能解释我tensorflow如何计算Softmax后的交叉熵。我的意思是,在softmax之后,它可能会输出0,因为精度会导致交叉熵产生NaN问题。当softmax限制它的输出时,tensorflow是否使用clip方法?tensorflow softmax_cross_entropy代码

回答

0

tf.nn.softmax_cross_entropy_with_logits的实现进一步转向本地C++代码,here是XLA实现。如果其中一个logits比其他logits大,则可以使用0。例如:

>>> session.run(tf.nn.softmax([10.0, 50.0, 100.0, 200.0])) 
array([ 0., 0., 0., 1.], dtype=float32) 

如果你愿意,你可以在之前添加Softmax剪辑logits,但不推荐,因为它杀死的渐变时产量大。更好的选择是使用batch normalization使激活更像正态分布。

相关问题