【问题标题】:Batch-Matrix multiplication in Pytorch - Confused with the handling of the output's dimensionPytorch 中的批量矩阵乘法 - 对输出维度的处理感到困惑
【发布时间】:2019-06-11 12:37:27
【问题描述】:

我有两个数组:

A
B

数组A包含一批RGB图像,形状为:

[batch, Width, Height, 3]

而数组B 包含对图像进行“类转换”操作所需的系数,其形状为:

[batch, 4, 4, 3]

简单来说,对单张图片的运算就是输出环境贴图的乘法(normalMap * Coefficients)。

我想要的输出应该保持形状:

[batch, Width, Height, 3]

我尝试使用torch.bmm,但失败了。这有可能吗?

【问题讨论】:

  • 看不懂矩阵乘法的维数?乘法是否需要在通道轴上工作?也许看看torch.nn.functional.conv2d
  • @Danos 我希望来自张量 A 的批次中的每个图像与来自张量 B 的 4*4 矩阵相乘,分别在通道轴上是的。
  • 根据torch.bmm的文档,矩阵尺寸必须一致(即,如果是A*B,高度等于4)。如果不是这种情况,则操作失败是有道理的。如果您想要逐元素乘法,请查看torch.mul,在这种情况下,我认为您需要确保 B 是可广播的。

标签: python vectorization pytorch batch-processing matrix-multiplication


【解决方案1】:

我认为你需要计算一下 PyTorch 可以使用

BxCxHxW : number of mini-batches, channels, height, width

格式,也可以使用matmul,因为bmm 适用于张量或ndim/dim/rank =3。

我知道你可以在网上找到这个,但无论如何:

batch1 = torch.randn(10, 3, 20, 10)
batch2 = torch.randn(10, 3, 10, 30)
res = torch.matmul(batch1, batch2)
res.size() # torch.Size([10, 3, 20, 30])

【讨论】:

    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多