如何将(2,3)的Torch Tensor转为(2,5)形式并实现逆变换?
张量维度变换与逆变换实现
给定形状为(2, 3)的PyTorch张量:
import torch src = torch.tensor([[1,2,3], [4,5,6]])
要转成形状为(2, 5)的张量,最终形式如下:
tensor([[1, 2, 3, 4, 5], [6, 0, 0, 0, 0]])
正变换((2,3) → (2,5))
直接展平原张量后,按目标格式填充到全0的新张量里,高效且直观:
# 展平原张量 flat_src = src.flatten() # 创建目标形状的全0张量 dst = torch.zeros(2, 5, dtype=src.dtype) # 填充第一行:取前5个元素 dst[0] = flat_src[:5] # 填充第二行第一个位置:取第6个元素 dst[1, 0] = flat_src[5]
逆变换((2,5) → (2,3))
提取有效元素、忽略补的0,再重塑回原形状即可:
# 展平目标张量,取前6个有效元素 flat_dst = dst.flatten()[:6] # 重塑回原形状 restored_src = flat_dst.reshape(2, 3)
内容的提问来源于stack exchange,提问作者Ars ML
相关产品推荐
相关产品推荐

