有没有办法在theano中进行张量的元素明智点积。假设我有以下张量:
>>>t1.shape.eval()
array([5, 3, 3])
>>>t2.shape.eval()
array([5, 3, 1)])
我怎样才能做一个点积,这样t1的5(3 * 3)个矩阵中的每一个都用t2的每个(3 * 1)矩阵点缀,最后给我:
< / p>
output.shape.eval()
array([5, 3, 1])
t1和t2都是Theano的共享变量。
t1=T.shared(np.ones((5,3,3)))
t2=T.shared(np.ones((5,3,1)))
答案 0 :(得分:0)
我相信如果你沿着第二轴(指数= 1,因为它的0索引)洗牌你的第二个张量t2
,你可以使用theano.tensor.tensordot()
(reference)来得到想要的结果。
>>> import theano
>>> import theano.tensor as T
>>> import numpy as np
>>>
>>> t1 = theano.shared(np.ones((5, 3, 3)))
>>> t2 = theano.shared(np.ones((5, 3, 1)))
>>>
>>> t2_new = t2.dimshuffle(0, 'x', 1, 2) # will have shape (5, 1, 3, 1)
>>> desired_tensor = T.tensordot(t1, t2_new)
>>> desired_tensor.shape.eval()
array([5, 3, 1])
>>>