在theano中张量的元素明智的点积

时间:2016-06-23 18:24:23

标签: python theano deep-learning lstm

有没有办法在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)))

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])
>>>