python – Theano:如何采用元素为矩阵的“矩阵外部产品”

基本上,我有2个张量:A,其中A.shape =(N,H,D)和B,其中B.shape =(K,H,D).我想做的是得到一个具有形状(N,K,D,H)的张量C,这样:

C[i, j, :, :] = A[i, :, :] * B[j, :, :]. 

这可以在Theano中有效地完成吗?

附注:我想要实现的实际最终结果是具有形状(N,K,D)的张量E,使得:

E[i, j, :] = (A[i, :, :]*B[j, :, :]).sum(0)

所以,如果有办法直接得到这个,我更喜欢它(希望节省空间).

最佳答案
可以建议使用broadcasting的一种方法 –

(A[:,None]*B).sum(2)

请注意,正在创建的中间阵列的形状(N,K,H,D)在轴= 2上的总和减少之前将其减少为(N,K,D).

转载注明原文:python – Theano:如何采用元素为矩阵的“矩阵外部产品” - 代码日志