python - 使用 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)
输出: 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)
它开始为我的应用程序工作。
推荐阅读
- java - 如何调整我的图标(图像按钮)以使其不会放大?
- reactjs - ReactJS Datepicker 多个日期选择
- javascript - Nodemailer,在本地工作正常,但在我的服务器上不起作用
- java - JavaFx GetChildern() 函数不可用
- perl - Perl — HTTP::Request::Common — POST 文件和数组
- angularjs - 如果我安装了 Angular 6,如何运行 Angular 1.4 应用程序
- javascript - JVM 上跨 Scala.js 和 Scala 的 JSON I/O
- entity-framework - 工作单元如何与批处理一起使用?
- scala - 将数据从 kafka 流式传输到 http
- python - 当日期属于特定月份时,python pandas过滤日期列