我不完全理解交叉熵误差是如何计算的。由于某些负数的对数没有定义(或虚的),并且神经网络的输出可以是一些负数(权值和偏差是随机初始化的),所以我经常得到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;发布于 2015-12-04 00:51:02
如果您的任务是二进制分类,我建议您将目标值"-1“改为"0”。在最后一层,输出层,有两个神经元(每个类一个)。对于神经网络的输出,应该使用softmax函数,它将概率分配给每个类(意思是,没有负值)。最后,每个实例的输出都是对应于这两个概率中较大的一个的类的标签。
发布于 2017-07-15 18:41:01
在交叉熵的防御中,表示了两种概率分布之间的量化差异。在机器学习的情况下,它计算“目标”(真值)与模型“输出”预测的值之间的差异。概率只能在0;1范围内变化,在任何情况下都不可能是负的。负数在概率方面没有任何意义。
https://stackoverflow.com/questions/34072402
复制相似问题