交叉熵误差计算

时间:2015-12-03 17:25:42

标签: c++ function neural-network entropy loss

我不完全理解如何计算交叉熵误差。由于某些负数的对数未定义(或虚数)且神经网络的输出可能是一些负数(权重和偏差是随机初始化的),因此我经常得到NaN作为结果。我该如何避免?

示例:

output[] = {-0.78, -0.98, 0.78, -0.68};
target[] = {-1.0,  -1.0,  1.0,   1.0};
error = ln(0.78) * 1.0 + ln(-0.68) * 1.0;

2 个答案:

答案 0 :(得分:1)

如果您的任务是二进制分类,我建议您更改目标值" -1"到" 0"。在最后一层,输出层,你有两个神经元(每个类一个)。对于神经网络的输出,你应该使用softmax function,它为每个类分配概率(意思是,你没有负值)。最后,每个实例的输出是类的标签,它对应于这两个概率中较大的一个。

答案 1 :(得分:0)

在交叉熵的定义中显示了两个概率分布之间的量化差异。在机器学习的情况下,它计算您的“目标”(真实值)与您的模型“输出”预测的值之间的差异。 概率可能仅在范围[0; 1]内变化,并且在任何情况下都可能不是负的。负数在概率方面没有任何意义。