我们需要计算:
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,另一种方法是对交叉熵的输入进行裁剪。例如,尝试用theano.tensor.clip(y_compute, 0.001, 0.999)
替换y_compute
,这样可以限制对数的范围。