You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PyTorch中实现张量转置并与自身相乘得到指定矩阵

在PyTorch中计算目标矩阵的方法

你需要的其实是原张量与其转置的矩阵乘法结果(本质是Gram矩阵,每个元素对应原张量两行的点积),以下是几种简洁的实现方式:

方法1:直接使用矩阵乘法运算符@

这是最直观的写法,Python的矩阵乘法运算符@在PyTorch张量上同样适用:

result = t @ t.T

方法2:使用torch.matmul函数

如果需要更明确的函数调用方式,可以用PyTorch的矩阵乘法函数:

result = torch.matmul(t, t.T)

方法3:使用torch.einsum(爱因斯坦求和约定)

这种方式灵活性更高,适合理解底层的运算逻辑:

result = torch.einsum('ij,kj->ik', t, t)

这里的'ij,kj->ik'表示:对j维度求和,将t的第i行、第j列元素,和t的第k行、第j列元素相乘后累加,最终得到维度为i×k的结果,正好符合你的需求。

验证结果

运行上述任意一种方法后,得到的结果张量为:

tensor([[ 2,  4,  6],
        [ 4,  8, 12],
        [ 6, 12, 18]])

完全匹配你描述的计算规则:对角线第一个元素是1×1+1×1=2,第二个是2×2+2×2=8,第一列第二个元素是2×1+2×1=4等。

内容的提问来源于stack exchange,提问作者zbot_348

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:10:25