如何按列拼接行数相同但形状不同的PyTorch张量?
PyTorch张量A与B的拼接方案
要拼接形状分别为torch.Size([17809, 6])的张量A和torch.Size([17809, 3, 256])的张量B,核心是先对齐二者的维度结构,再进行拼接,具体步骤如下:
步骤1:扩展张量A的维度
由于B是三维张量(样本数×节点数×节点嵌入维度),而A是二维张量(样本数×特征数),需要先把A扩展为三维,让每个样本的6维特征对应B中的3个节点。可以通过unsqueeze增加节点维度,再用repeat复制到3个节点上:# 将A从(17809, 6)转为(17809, 1, 6),再扩展为(17809, 3, 6) A_expanded = A.unsqueeze(1).repeat(1, 3, 1)这里利用
unsqueeze(1)在第1个位置插入新维度,再通过repeat在节点维度(第1维)重复3次,保证每个样本的特征能对应B中的所有节点。步骤2:拼接两个张量
维度对齐后,使用torch.cat在**节点嵌入维度(第2维)**进行拼接,这样每个节点的嵌入会附加A的特征:# 在最后一个维度拼接,得到形状为(17809, 3, 262)的张量 combined_tensor = torch.cat([A_expanded, B], dim=2)
最终得到的combined_tensor每个节点的嵌入维度为256+6=262,完美结合了A的数值特征和B的节点嵌入。
内容的提问来源于stack exchange,提问作者sAguinaga
相关产品推荐
相关产品推荐

