Tensorflow tf.softmax\u cross\u entroy\u的输出与\u logits不规范?

Tensorflow tf.softmax\u cross\u entroy\u的输出与\u logits不规范?,tensorflow,neural-network,loss-function,Tensorflow,Neural Network,Loss Function,我实现了一个简单的cnn图像分类网络(二进制分类)。我正在Python中使用tensorflow。 我使用tf.softmax\u cross\u entropy\u和logits作为成本函数。我从模型的输出层向成本函数提供非规范化的logit。函数应该输出标准化概率,还是我错了 在我的模型培训期间,我正在打印每个示例的成本。如果模型正确预测了产量,成本等于0.0,否则成本非常大(非标准化值)。当函数“softmax”在计算交叉熵之前输入时,为什么输出不规范?您将交叉熵(您的损失函数)与soft

我实现了一个简单的cnn图像分类网络(二进制分类)。我正在Python中使用tensorflow。 我使用tf.softmax\u cross\u entropy\u和logits作为成本函数。我从模型的输出层向成本函数提供非规范化的logit。函数应该输出标准化概率,还是我错了


在我的模型培训期间,我正在打印每个示例的成本。如果模型正确预测了产量,成本等于0.0,否则成本非常大(非标准化值)。当函数“softmax”在计算交叉熵之前输入时,为什么输出不规范?

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


当您将非规范化净输出与带有logits的tf.softmax\u cross\u entropy\u结合使用时,您实际上没有观察到softmax输出:它在成本函数中处理,并保持虚拟。要查看softmax,您可以在网络的非规范化输出上使用
tf.nn.softmax
明确地计算它。

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


当您将非规范化净输出与带有logits的tf.softmax\u cross\u entropy\u结合使用时,您实际上没有观察到softmax输出:它在成本函数中处理,并保持虚拟。要查看softmax,您可以在网络的非规范化输出上使用
tf.nn.softmax
明确地计算它。

谢谢您的回答。因此,像数万或数百万这样的成本并不是什么特别的事情?它们是可能的,但不寻常。这可能是一个迹象,你正在使用总和,而不是意味着减少你的损失。我目前正在规范的权重和增加辍学层,但问题仍然存在。cnn输出的大量登录是否可能是由非常小的数据集(500个示例)造成的?我已经检查了登录的softmax,函数总是返回1.0或0.0-两者之间没有任何结果。这是不寻常的,当然可以解释您的观察结果。你可以用你的问题问另一个问题。谢谢你的回答。因此,像数万或数百万这样的成本并不是什么特别的事情?它们是可能的,但不寻常。这可能是一个迹象,你正在使用总和,而不是意味着减少你的损失。我目前正在规范的权重和增加辍学层,但问题仍然存在。cnn输出的大量登录是否可能是由非常小的数据集(500个示例)造成的?我已经检查了登录的softmax,函数总是返回1.0或0.0-两者之间没有任何结果。这是不寻常的,当然可以解释您的观察结果。你可以用你的问题问另一个问题。