【问题标题】:Multiplying two 3D Pytorch tensors iteratively迭代地将两个 3D Pytorch 张量相乘
【发布时间】:2021-03-05 05:46:18
【问题描述】:

我有两个 3 维 Pytorch 张量,一个维度为 (8, 1, 1024),另一个维度为 (8, 59, 77)。我希望将这两个 tnesor 相乘。

我知道它们在当前状态下不能相乘,所以我想将它们迭代地相乘并附加到单个张量中。 当我们迭代第二个维度时,第二个张量可以表示为 (8, 59, 1)。在这种状态下,将其与形状为 (8, 1, 1024) 的第一个张量相乘,得到形状为 (8, 59, 1024) 的张量,最后将所有这 77 个输出附加到一个中,得到最终形状为 (8, 1, 1024) 8、59、1024、77)。

但是我在它的实施中遇到了问题。有人可以帮我吗?

【问题讨论】:

    标签: python python-3.x pytorch matrix-multiplication tensor


    【解决方案1】:

    如果我没有搞砸计算,那就相当于:

    import torch
    
    x = torch.rand(8, 1, 1024)
    y = torch.rand(8, 59, 77)
    
    torch.matmul(
        y.unsqueeze(-1),   # shape = (8, 59, 77, 1)
        x.unsqueeze(1)     # shape = (8, 1, 1, 1024)
    ).permute(0, 1, 3, 2)  # output shape = (8, 59, 1024, 77)
    

    请注意,在这种情况下,matmul 执行批处理矩阵乘法。

    【讨论】:

      猜你喜欢
      • 2020-10-14
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-01
      • 2020-06-05
      • 2019-02-10
      • 1970-01-01
      相关资源
      最近更新 更多