Theano将int转换为int64 - 如何避免这种情况?

时间:2016-10-23 11:01:50

标签: theano

我在学习Theano时遇到了很多麻烦。现在我有问题,我将一个大于n_samples的整数32767传递给该函数。这会导致编译器将其强制转换为int64,但不起作用:

    ([Wn,bhn, bvn], updates) = theano.scan(fn=self.cd_step,

                                    outputs_info=[self.W, self.bias_hidden, self.bias_visible],
                                    non_sequences=[learning_rate,                                                         
                                                   self.D, n_samples, n_hidden],
                                    n_steps=10,
                                    strict=True)

我试图用nump.float32(n_samples)传递它,但这也不起作用。

如何解决此问题并将其强制转换为float32以便编译器关闭?

1 个答案:

答案 0 :(得分:0)

如果您的输入大于32位整数,则应将其传递给64位整数变量,我知道如何在theano中转换变量:

第一

y = T.iscalar('y')
z = T.cast(y,'int64') * 10000000
f = theano.function([y],z)

print f(100000000)

y是一个32位变量,所以我们不是直接将y与10 ^ 7相乘,而是首先将它转换为'int64'。

第二

y = T.lscalar('y')
z = y * 10000000
f = theano.function([y],z)

print f(100000000)

而不是使用“iscalar”尝试使用“lscalar”,它指的是'int64'变量

希望有所帮助