theano中共享变量的类型错误

时间:2016-01-12 19:25:03

标签: typeerror theano

我得到TypeError:第5行需要一个整数:

rng1=np.random.RandomState(1234)
dtensor = T.TensorType(dtype=theano.config.floatX,broadcastable=  (False,)*5)
V=dtensor('V')
b_shp=(W.shape[0],)
b=theano.shared(np.asarray(rng1.uniform(low=-5,high=5,size=b_shp),dtype=V.dtype),name='b',borrow=True)

但是,如果我将b_shape更改为b_shp =(2,0),则不会出错。

1 个答案:

答案 0 :(得分:0)

我的猜测是W是符号张量(例如共享变量)。例如,

import numpy as np
import theano
import theano.tensor as T

rng1 = np.random.RandomState(1234)
dtensor = T.TensorType(dtype=theano.config.floatX, broadcastable=(False,) * 5)
V = dtensor('V')
W = theano.shared(np.asarray(rng1.uniform(low=-5, high=5, size=(2, 3)), dtype=V.dtype), name='W', borrow=True)
b_shp = (W.shape[0],)
b = theano.shared(np.asarray(rng1.uniform(low=-5, high=5, size=b_shp), dtype=V.dtype), name='b', borrow=True)

如果这个假设是正确的,则会出现错误TypeError: an integer is required,因为W.shape[0]是一个符号表达式,但是numpy需要一个具体的整数。您可以将其更改为W.get_value().shape[0]以解决问题,尽管这很麻烦,更清洁的解决方案将取决于您尝试实现的目标。