PyTorch DataLoader返回的torch.Size([64])与(64,)有何差异?
核心结论
torch.Size([64]) 与 (64,) 没有本质区别,二者表示的张量形状完全等价,仅所属类型不同。
二者的类型差异
torch.Size([64])是PyTorch内置的形状类,继承自Python原生的tuple类型,专门用来表示张量的维度属性。(64,)是Python原生的元组,是通用的形状表示写法,不绑定特定框架。
等价性验证
你可以通过简单代码验证二者的等价关系:
import torch # 模拟DataLoader返回的y张量 y = torch.tensor([i for i in range(64)]) # 形状相等判断 print(y.shape == (64,)) # 输出 True # 类型校验 print(isinstance(y.shape, tuple)) # 输出 True
输出差异的原因
教程中使用(64,)描述形状是通用写法,用来直观表示1维、长度为64的张量维度;而你实际运行得到的torch.Size([64])是PyTorch对该形状的原生输出形式,二者在做维度判断、形状匹配、索引取值等操作时用法完全一致,不会影响后续逻辑。
代码是否需要修改
不需要。你当前生成的标签张量形状完全符合预期,没有错误。
内容的提问来源于stack exchange,提问作者Melody Gao
相关产品推荐
相关产品推荐

