2
让我们假设我有一个4维张量A
,我想用下面的方式3维张量B
乘以它:如何在Theano中进行“广义”矩阵运算?
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]
换言之,我将第一张量的一些指标与第二张量的一些指标进行配对,然后将它们相加。
让我们假设我有一个4维张量A
,我想用下面的方式3维张量B
乘以它:如何在Theano中进行“广义”矩阵运算?
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]
换言之,我将第一张量的一些指标与第二张量的一些指标进行配对,然后将它们相加。
如果我找到你的话,这是由theano.tensor
模块的dot
功能完成的。
的所有相关信息是在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