我在交叉熵中有纳米,这是不合理的

时间:2017-02-28 10:40:55

标签: python machine-learning deep-learning theano cross-entropy

我在我的网络中追溯问题,以检测从交叉熵中获取nan的原因。

我从网络中获取了我刚开始拥有Nan的值,并在另一个函数上单独测试它们。

在这里,我一起测试50个值,找出哪个给了NaN。

import  theano.tensor as T
import theano
s = T.fvector('s')
y = T.ivector('y')
d= -(y * T.log(s) + (1-y) * T.log(1-s)) #T.mean

x =[1.04693806  ,0.00685256, 1.20987034  ,0.0488876 ]

x_y = np.array((1.0, 0.0, 1.0, 0.0), dtype=np.int32)
x = numpy.array(x, dtype=np.float32)

f = theano.function(inputs=[s, y], outputs=d)
print f(x, x_y)

我有这个结果。

[ nan  0.00687615 nan  0.05012303]

因此,为了了解为什么nan存在于此,我测试了手头和wolfarma以及theano本身的功能。我在最后一个之前拿了一个并且单独测试它:

t = T.scalar('t')
d= -(1 * T.log(t) + (0) * T.log(1-t))
f = theano.function(inputs=[t], outputs=d)
print f(1.20987034)

结果是Not Nan。

-0.190513193607

所以第一个函数中的这个数字给出了NaN而它不应该?

0 个答案:

没有答案