1

由于 in 的源代码tf.nn.softmax_cross_entropy_with_logitsgen_nn_ops隐藏的,谁能解释一下 tensorflow 在 Softmax 之后如何计算交叉熵。我的意思是,在 softmax 之后它可能会输出 0,因为精度会导致交叉熵的 NaN 问题。tensorflow在softmax绑定输出时是否使用了clip方法?

4

1 回答 1

0

进一步的实现tf.nn.softmax_cross_entropy_with_logits转到本地 C++ 代码,这里是 XLA 实现。Logits 不受约束,0当其中一个 logits 比其他 logits 大得多时,它是可能的。例子:

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

如果您愿意,您可以在 softmax 之前剪裁 logits,但不建议这样做,因为它会在输出较大时消除梯度。更好的选择是使用批量归一化来使激活更像正态分布。

于 2017-10-31T14:18:41.570 回答