tf.softmax_cross_entroy_with_logits 的输出未标准化?

Output of tf.softmax_cross_entroy_with_logits unnormalized?

我实现了一个用于图像分类(二元分类)的简单 cnn 网络。我在 Python 中使用 tensorflow。 我使用 tf.softmax_cross_entropy_with logits 作为成本函数。我从模型的输出层为成本函数提供非标准化的 logits。该函数应该输出归一化概率,还是我错了?

在我的模型训练期间,我正在打印每个示例的成本。如果模型正确预测输出,成本等于 0.0,否则成本非常大,非标准化值)。函数'softmaxes'在计算交叉熵之前输入,为什么输出未归一化?

您将交叉熵(您的损失函数)误认为是 softmax(您网络的 "virtual" 输出——见下文)。 Softmax 是归一化的,但交叉熵不是——它可以取任意高的值来惩罚错误的预测。

当您将非归一化净输出与 tf.softmax_cross_entropy_with logits 结合使用时,您实际上不会观察到 softmax 输出:它在成本函数内进行处理并保持虚拟。要查看 softmax,您可以在网络的非标准化输出上使用 tf.nn.softmax 显式计算它。