繁体   English   中英

使用 Pytorch 的矩阵形式的洛伦兹内积

[英]Lorentzian inner product in matrix form using Pytorch

我想计算洛伦兹内积,即 <x,y> = -x1y1 + x2y2 + x3y3 +... 我有代码

 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)

Output: tensor([[8]]) 这是正确的。 但不知何故,在我正在处理的应用程序中似乎不起作用。

我不知道如何解决这个问题。 欢迎任何见解!

所以我做了这个 -

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))
print (res)

它开始为我的应用程序工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM