我在学习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
以便编译器关闭?
答案 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'变量
希望有所帮助