按元素矩阵向量乘法

Element-wise matrix vector multiplication

我有一个张量 m 存储 n 3 x 3 矩阵与暗 n x 3 x 3 和张量 vn 3x1 向量和 dim n x 3。如何应用逐元素矩阵向量乘法,即将第 i 矩阵与第 i 向量相乘,以获得输出张量暗 n x 3?

感谢您的帮助。

您想执行矩阵乘法运算 (__matmul__) in a batch-wise manner. Intuitively you can use the batch-matmul operator torch.bmm。请记住,您首先需要在 v 上取消压缩一维,使其成为 3D 张量。在这种情况下,索引最后一个Nonev[..., None] 的维度将提供 (n, 3, 1).

的形状

torch.bmm:

>>> torch.bmm(m, v[..., None])

事实证明,torch.matmul 处理了这种情况 out-of-the-box:

>>> torch.matmul(m, v[..., None]) # same as m@v[..., None]

如果您想明确控制操作,可以使用 torch.einsum:

>>> torch.einsum('bij,bj->bi', m, v)