假设我有一个 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]
换句话说,我将第一个张量的一些指标与第二个张量的一些指标配对,然后对它们求和。
如果我没听错,这是由 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
我是一名优秀的程序员,十分优秀!