0

我正在追溯网络中的问题,以从交叉熵中检测出 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)

结果不是南。

-0.190513193607

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

4

0 回答 0