首页 文章

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

提问于
浏览
0

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

在Numpy工作's not clear to me how to do this. In their current shape it doesn'看起来像 np.dot 的任何变体都存在这样做 . 操纵形状以利用广播规则似乎没有提供任何帮助 . np.tensordotnp.einsum 可能很有用,但查看文档正好在我脑海中 .

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

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 的其余部分保持不变 .

相关问题