3,4轴pytorch中的矩阵乘法
Matrix Multiplication in 3,4 axes pytorch
我有两个形状为 a(16,8,8,64)
和 b(64,64)
的张量。假设,我将 a
的最后一个维度提取到另一个列向量 c
中,我想计算 matmul(matmul(c.T, b), c)
。我希望在 a
的前 3 个维度中的每个维度中完成此操作。即最终产品的形状应该是(16,8,8,1)
。我怎样才能在 pytorch 中实现这一点?
可按如下方式进行:
row_vec = a[:, :, :, None, :].float()
col_vec = a[:, :, :, :, None].float()
b = (b[None, None, None, :, :]).float()
prod = torch.matmul(torch.matmul(row_vec, b), col_vec)
我有两个形状为 a(16,8,8,64)
和 b(64,64)
的张量。假设,我将 a
的最后一个维度提取到另一个列向量 c
中,我想计算 matmul(matmul(c.T, b), c)
。我希望在 a
的前 3 个维度中的每个维度中完成此操作。即最终产品的形状应该是(16,8,8,1)
。我怎样才能在 pytorch 中实现这一点?
可按如下方式进行:
row_vec = a[:, :, :, None, :].float()
col_vec = a[:, :, :, :, None].float()
b = (b[None, None, None, :, :]).float()
prod = torch.matmul(torch.matmul(row_vec, b), col_vec)