当我们使用theano的交叉熵时如何修复NAN或INF?

时间:2015-11-18 10:49:14

标签: machine-learning theano

我们必须计算:

y*log(y_compute)+(1-y)*(1-y_compute)

所以我们得到y_compute 1 。或 0 。,此问题会出现。我该怎么办才能避免它?

1 个答案:

答案 0 :(得分:2)

您的表达式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),知道这将限制对数的范围。