当我们使用 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),知道这将限制对数的范围。