Numpy / Tensorflow:将3D张量的每个深度矢量乘以2D矩阵

问题描述 投票:0回答:1

我有一个4x4x256张量和一个128x256矩阵。我需要将矩阵的每个256-d深度向量乘以矩阵,这样我得到一个4x4x128张量。

在Numpy工作,我不清楚如何做到这一点。在他们目前的形状中,它看起来不像np.dot的任何变体存在。操纵形状以利用广播规则似乎没有提供任何帮助。 np.tensordotnp.einsum可能很有用,但看着文档正在我的脑海中。

有没有一种有效的方法来做到这一点?

python numpy tensorflow matrix-multiplication
1个回答
1
投票

您可以使用np.einsum执行此操作。随机值的示例:

a = np.arange(4096.).reshape(4,4,256)
b = np.arange(32768.).reshape(128,256)
c = np.einsum('ijk,lk->ijl',a,b)
print(c.shape)

在这里,subscripts论证是:ijk,lk->ijl 根据您的要求,i=4, j=4, k=256, l=128 逗号分隔两个操作数的下标,下标表示应该在每个张量中的最后一个下标(对于两个张量共有的下标k)上执行乘法。 ->之后的张量下标表明合成张量应该具有(i,j,l)的形状。现在,根据您正在执行的操作类型,您可能必须保留此下标或将此下标更改为jil,但其余的subscripts保持不变。

© www.soinside.com 2019 - 2024. All rights reserved.