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