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

PyTorch合并不同形状张量遇RuntimeError,求解决方法

PyTorch中合并不同形状张量的正确方法

错误原因分析

你遇到的RuntimeError本质是:pfinal的第0维度大小是6,而你试图通过expand将其扩展为15行,但expand要求被扩展的维度要么是1,要么与目标维度大小完全匹配——6和15不满足这个条件,所以无法扩展。另外,91并不是6的整数倍(91=6×15+1),用整除得到的15次也无法凑出和x一致的91行。

正确解决方案

要合并x(形状[91,6])和pfinal(形状[6,6]),必须让两者的行维度(第0维)大小一致,再按列维度(dim=-1)拼接。以下是两种可行方法:

方法1:重复后切片(简单直接)

先将pfinal重复足够多次,再截取前91行,确保行维度与x匹配:

# 重复pfinal 16次得到96行,再取前91行
pfinal_expanded = pfinal.repeat(16, 1)[:91, :]
# 按列拼接
x = torch.cat((x, pfinal_expanded), dim=-1)

方法2:指定每行重复次数(精准控制)

如果需要精准分配每行的重复次数(比如让pfinal的第一行重复16次,其余5行各重复15次,刚好凑出91行),可以用repeat_interleave:

# 定义每行的重复次数:第一行16次,剩下5行各15次
repeat_counts = [16] + [15] * 5
pfinal_expanded = pfinal.repeat_interleave(repeat_counts, dim=0)
# 按列拼接
x = torch.cat((x, pfinal_expanded), dim=-1)

核心逻辑

张量拼接torch.cat要求除了拼接维度外,其余所有维度的大小必须完全一致。这里拼接维度是列维度(dim=-1),所以必须保证两个张量的行维度都是91,通过重复pfinal并调整行数即可实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 07:45:19