我正在尝试类似于以下代码的内容
select new MyModel
{
NS = tmp[0],
Sek = tmp[1],
Radial = tmp[2]
};
Theano给我一个带有msg的TypeError:
无法将Type TensorType(float64,3D)(Variable Subtensor {int64:int64:}。0)转换为Type TensorType(float64,matrix)。您可以尝试手动将Subtensor {int64:int64:}。0转换为TensorType(float64,矩阵)
我在这里做错了什么?
修改
正如daniel将x更改为dtensor3所述,将导致另一个错误。
ValueError:输入维度不匹配。 (输入[0] .shape [1] = 5,输入[1] .shape [1] = 90)
应用导致错误的节点:Elemwise {add,no_inplace}(Sum {axis = [1],acc_dtype = float64} .0,DimShuffle {x,0} .0)
另一种方法是修改我的列车功能,但之后我将无法进行批量学习。
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)
我正在尝试使用可见单位的整数值来实现RBM。
答案 0 :(得分:0)
问题在于datax
是一个3D张量,而datax[index*5:(index+1)*5]
也是一个3D张量,但你试图将它分配给x
这是一个2D张量(即一个矩阵) )。
更改
x = T.dmatrix('x')
到
x = T.dtensor3('x')
解决了这个问题,但是创建了一个新问题,因为W和x的尺寸不匹配来执行点积。目前尚不清楚预期的结果是什么。
答案 1 :(得分:0)
在几次击中和试验后解决了它。
我需要的是改变
x=T.dmatrix('x')
w_v_bias=T.dot(W,x).sum(axis=2).sum(axis=1)+Hb
到
x=T.dtensor3('x')
w_v_bias=T.dot(x,W).sum(axis=3).sum(axis=1)+Hb
现在,在向点积的五个向量中的每个向量中添加元素之后,它会生成(5,90)数组。