带有 logits 的 Softmax 交叉熵可以定义为:
在哪里是实际损失。
但是,当您深入研究C++ Tensorflow的SoftmaxCrossEntropyWithLogits操作实现时,他们使用的确切公式被描述为:
那个部分:- 完全理解 - 它只是有助于避免下溢/溢出的标准化。
但:
他们的实施实际
Softmax在哪里?为什么从每个他们减去在乘以之前?
注意:有人可能会争辩说,我提供的代码只是 Tensorflow 的CrossEntropyWithLogits操作实现,但实际SoftmaxCrossEntropyWithLogits操作 - 另外仅检查维度并且不执行任何更多计算。