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

PyTorch中如何无循环实现两个张量所有批次配对的拼接操作

PyTorch 批次张量两两配对拼接的高效实现

你要的功能可以通过张量扩维+广播拼接一行实现,完全不需要嵌套循环,性能远高于Python层循环写法,适配任意批次规模:

import torch

# 你原来的张量定义
S = torch.rand((3,2,1))
T = torch.ones((3,2,1))

# 高效实现代码
C = torch.cat([S.unsqueeze(1), T.unsqueeze(0)], dim=2)

# 验证形状符合要求:输出torch.Size([3, 3, 4, 1])
print(C.shape)

实现原理

  • S.unsqueeze(1):给S新增第1维,形状从(3,2,1)变为(3,1,2,1)
  • T.unsqueeze(0):给T新增第0维,形状从(3,2,1)变为(1,3,2,1)
  • 两个张量会自动在新增的维度上广播,都扩展为(3,3,2,1)的形状
  • 沿第2维拼接后,第2维长度变为2+2=4,最终得到形状为(3,3,4,1)的结果,和你嵌套循环的计算结果完全一致,你可以通过torch.allclose(C, 循环生成的C)验证正确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:00:00