我有 4x4x256 张量和 128x256 矩阵 . 我需要通过矩阵乘以张量的每个 256-d 深度方向向量,这样我得到一个 4x4x128 张量 .
在Numpy工作's not clear to me how to do this. In their current shape it doesn'看起来像 np.dot
的任何变体都存在这样做 . 操纵形状以利用广播规则似乎没有提供任何帮助 . np.tensordot
和 np.einsum
可能很有用,但查看文档正好在我脑海中 .
有没有一种有效的方法来做到这一点?
1 回答
您可以使用
np.einsum
执行此操作 . 随机值的示例:这里,
subscripts
参数是:ijk,lk->ijl
根据您的要求,
i=4, j=4, k=256, l=128
逗号分隔两个操作数的下标,下标表示应该对每个张量中的最后一个下标执行乘法(下标
k
,这对于两个张量都是通用的) .->
之后的张量下标表明合成张量的形状应为(i,j,l)
. 现在,根据您正在执行的操作类型,您可能必须保留此下标或将此下标更改为jil
,但subscripts
的其余部分保持不变 .