PyTorch如何将固定数值作为新列追加到二维张量的最后一维
实现方案
你需要先将浮点数值扩展为和原始张量行数一致的单列张量,再沿列维度拼接即可,完整代码如下:
import torch # 构造原始2行7列张量 x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14] x = torch.tensor(x).reshape(-1,7) # 转换为浮点类型,避免和浮点数拼接时报类型错误 x = x.float() # 处理待追加的浮点值 a = 0.19 # 将单值张量扩展为2行1列,所有行的数值都是0.19 b = torch.tensor([a]).expand(x.shape[0], 1) # 沿列维度(dim=1)拼接,得到目标形状[2,8]的张量 res = torch.cat([x, b], dim=1) print(res.shape) print(res)
运行输出:
torch.Size([2, 8]) tensor([[ 1.0000, 2.0000, 3.0000, 4.0000, 5.0000, 6.0000, 7.0000, 0.1900], [ 8.0000, 9.0000, 10.0000, 11.0000, 12.0000, 13.0000, 14.0000, 0.1900]])
问题说明
你之前的操作存在两个问题:
torch.stack是在新维度拼接张量,要求两个输入张量形状完全一致,不符合追加列的需求,追加现有维度的内容应该使用torch.cat- 你构造的
b张量形状为[1,1],和原始张量的2行不匹配,无法直接沿列维度拼接,需要先扩展为匹配的形状。
内容的提问来源于stack exchange,提问作者bapors
相关产品推荐
相关产品推荐

