【发布时间】:2015-12-23 11:30:26
【问题描述】:
我正在尝试类似于下面的代码
datax=theano.shared(value=rng.rand(5,500,45))
x=T.dmatrix('x')
i=T.lscalar('i')
W=theano.shared(value=rng.rand(90,45,500))
Hb=theano.shared(value=np.zeros(90))
w_v_bias=T.dot(W,x).sum(axis=2).sum(axis=1)+Hb
z=theano.function([i],w_v_bias,givens={x:datax[i*5:(i+1)*5]})
z(0)
Theano 给我一个带有 msg 的 TypeError:
无法将类型 TensorType(float64, 3D)(变量 Subtensor{int64:int64:}.0)转换为类型 TensorType(float64, matrix)。您可以尝试手动将 Subtensor{int64:int64:}.0 转换为 TensorType(float64, matrix)
我在这里做错了什么?
编辑
正如丹尼尔所说,将 x 更改为 dtensor3 将导致另一个错误。
ValueError:输入维度不匹配。 (输入[0].shape[1] = 5, input[1].shape[1] = 90)
应用导致错误的节点:Elemwise{add,no_inplace}(Sum{axis=[1], acc_dtype=float64}.0, DimShuffle{x,0}.0)
另一种方法是修改我的训练功能,但我将无法进行批量学习。
z=theano.function([x],w_v_bias)
z(datax[0])
我正在尝试使用可见单位的整数值来实现 RBM。
【问题讨论】: