当我们使用 theano 的交叉熵时如何修复 NAN 或 INF?
How to fix the NAN or INF when we use cross entropy with theano?
我们必须计算:
y*log(y_compute)+(1-y)*(1-y_compute)
所以当我们得到 y_compute
1 时。或者0.,就会出现这个问题。我应该怎么做才能避免它?
您的表达式 y_compute
可能包含指数,例如来自 theano.tensor.nnet.sigmoid
?在这种情况下,它通常永远不会达到精确的 0 或 1。在这些情况下,您可以直接使用表达式或 theano.tensor.nnet.crossentropy_categorical_1hot
。
如果出于某种原因你有精确的 0 和 1,另一种方法是将输入裁剪到交叉熵。尝试例如将 y_compute
替换为 theano.tensor.clip(y_compute, 0.001, 0.999)
,知道这将限制对数的范围。
我们必须计算:
y*log(y_compute)+(1-y)*(1-y_compute)
所以当我们得到 y_compute
1 时。或者0.,就会出现这个问题。我应该怎么做才能避免它?
您的表达式 y_compute
可能包含指数,例如来自 theano.tensor.nnet.sigmoid
?在这种情况下,它通常永远不会达到精确的 0 或 1。在这些情况下,您可以直接使用表达式或 theano.tensor.nnet.crossentropy_categorical_1hot
。
如果出于某种原因你有精确的 0 和 1,另一种方法是将输入裁剪到交叉熵。尝试例如将 y_compute
替换为 theano.tensor.clip(y_compute, 0.001, 0.999)
,知道这将限制对数的范围。