如何将PyTorch张量维度从(210,2)转换为(15,14,2)?
PyTorch张量维度转换:(210,2) → (15,14,2)
因为15×14=210,和原张量第一维度的元素总数完全匹配,所以可以直接使用PyTorch的view()或reshape()方法调整张量形状,两种方式都能实现需求,区别在于适用场景:
方法1:使用view()
view()适用于连续存储的张量(可通过is_contiguous()方法检查),操作更高效:
import torch # 创建示例(210, 2)张量 original_tensor = torch.randn(210, 2) # 转换为(15,14,2) reshaped_tensor = original_tensor.view(15, 14, 2) print(reshaped_tensor.shape) # 输出: torch.Size([15, 14, 2])
如果张量是非连续的,view()会报错,此时可先调用contiguous()再使用view():
# 模拟非连续张量 non_contiguous_tensor = original_tensor.transpose(0, 1).transpose(0, 1) # 先转为连续张量再调整形状 fixed_tensor = non_contiguous_tensor.contiguous().view(15, 14, 2)
方法2:使用reshape()
reshape()更通用,会自动处理非连续张量的情况,内部会根据张量存储情况选择调用view()或先调整存储再重塑:
import torch original_tensor = torch.randn(210, 2) # 直接转换维度 reshaped_tensor = original_tensor.reshape(15, 14, 2) print(reshaped_tensor.shape) # 输出: torch.Size([15, 14, 2]) # 非连续张量也可直接处理 non_contiguous_tensor = original_tensor.transpose(0, 1).transpose(0, 1) reshaped_non_contiguous = non_contiguous_tensor.reshape(15, 14, 2)
内容的提问来源于stack exchange,提问作者ryan chandra
相关产品推荐
相关产品推荐

