【发布时间】:2021-08-28 13:17:59
【问题描述】:
我想计算洛伦兹内积,即
res = torch.sum(x * y, dim=-1) - 2 * x[..., 0] * y[..., 0]
但这不起作用,因为我不断收到此错误 - RuntimeError:张量 a (450) 的大小必须与非单维 0 处的张量 b (30) 的大小相匹配
我需要矩阵形式的内积。所以我这样做了-
res = torch.matmul(x,torch.transpose(y,0,1))
-2*torch.matmul(x[...,0],torch.transpose(y[...,0],0,0))
但我收到一个新错误 RuntimeError:张量大小不一致,预计张量 [450] 和 src [30] 具有相同数量的元素,但分别获得了 450 和 30 个元素。
我已经在一个简单的玩具示例中尝试过这个 -
x = torch.tensor([[1, 2, 3]])
y = torch.tensor([[2, 2, 2]])
prod = torch.matmul(x,torch.transpose(y,0,1))-2*torch.matmul(x[...,0],torch.transpose(y[...,0],0,0))
print(prod)
输出:张量([[8]]),这是正确的。但不知何故在我正在处理的应用程序中似乎不起作用。
我不知道如何解决这个问题。欢迎任何见解!
【问题讨论】:
-
你能在真实场景中获取/打印输入向量的形状吗?如果是这样,请使用这些形状创建一个玩具示例。只需在内积前添加
print(x.shape, y.shape)。 -
您好,感谢您的意见。我这样做了 - import torch x = torch.tensor([[1, 2, 3]]) y = torch.tensor([[2, 2, 2]]) x[...,0] *= -1 res = torch.matmul(x,torch.transpose(y,0,1)) 打印 (res)。我的应用程序代码开始工作了。
-
不错!随意用解决它的代码回答你自己的问题。它可能对其他人有用。
标签: python numpy pytorch matrix-multiplication