如何在Theano中进行“广义”矩阵运算?

时间:2017-01-11 16:11:47

标签: python matrix theano

让我们假设我有一个4维张量A,我希望用以下方式将它与3维张量B相乘:

C[i,k,a,b] = sum_{j,l} A[i,j,k,l]*B[a,j,b,l]

这是矩阵乘法的推广:

z[i,k] = sum_j x[i,j]*y[j,k]

换句话说,我将第一张量的一些索引与第二张量的某些索引配对,然后对它们求和。

1 个答案:

答案 0 :(得分:2)

如果我说得对,这是由dot模块的theano.tensor功能完成的。

所有相关信息均在the doc on linear algebra for tensor with theano

您甚至可以使用theano.tensor.tensordot进一步指定求和轴,因此要重现您的示例,可能是:

import theano.tensor as T

A = T.ftensor4() # create a 4 dimensional float32 tensor
B = T.ftensor4()

C = T.tensordot(A,B, axes=[[1,3],[1,3]]) # here you can specify on which indices to sum

print C.ndim
# >> 4