我得到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),则不会出错。
答案 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]
以解决问题,尽管这很麻烦,更清洁的解决方案将取决于您尝试实现的目标。