0

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

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

4

1 回答 1

2

您将交叉熵(您的损失函数)与 softmax(您的网络的“虚拟”输出 - 见下文)混淆了。Softmax 是标准化的,但交叉熵不是——它可以采用任意高的值来惩罚错误的预测。

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

于 2017-06-09T08:25:38.420 回答