pytorch - 在 PyTorch 中计算两个相同大小的方阵的逐行点积的有效方法
问题描述
假设我有两个大小相同的方阵 A、B
A = torch.tensor([[1, 2], [3, 4]])
B = torch.tensor([[1, 1], [1, 1]])
我想要一个由逐行点积组成的结果张量,比如说
tensor([3, 7]) # i.e. (1*1 + 2*1, 3*1 + 4*1)
在 PyTorch 中实现这一目标的有效方法是什么?
解决方案
正如你所说,你可以使用torch.bmm
,但你首先需要广播你的输入:
>>> torch.bmm(A[..., None, :], B[..., None])
tensor([[[3]],
[[7]]])
或者,您可以使用torch.einsum
:
>>> torch.einsum('ij,ij->i', A, B)
tensor([3, 7])
推荐阅读
- google-cloud-platform - 无法访问服务
- python - 无法使用 pipenv 安装频道(django)
- swift - NSAttributedStringKey.foregroundColor 不起作用
- excel - 在 Excel 中,如何从按等级排序的两个“向量”中添加值?
- c - C中的指针和二维数组
- ios - 在 iOS 上在线验证非消耗性应用内购买收据的正确工作流程?
- c# - 实体状态值不能为空
- c++ - 将偏移表示法转换为二维数组中的指针算术 c++
- regex - 替换 Notepad++ 中 CDATA 部分之间的换行符
- mongodb - 在单个查询中从 mongodb 中的 2 个集合中获取数据