You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch Map式DataLoader迭代返回内容及代码逻辑疑问咨询

PyTorch Map风格DataLoader的迭代返回内容说明

Map风格Dataset的核心逻辑是:迭代返回的内容完全由你在Dataset的__getitem__方法里定义,DataLoader只是把__getitem__返回的单个样本按batch_size打包成批量数据。

你代码里能直接用x,y=batch,说明你的train_dataset的__getitem__方法返回的是(输入数据x, 标签y),所以DataLoader每次迭代会把3个(你的batch_size=3)这样的样本打包,返回一个包含两个张量的元组:第一个是批量的输入数据,第二个是批量的标签。这时候的x就是模型需要的输入特征,自然可以用来喂模型生成预测结果。

你误以为会返回索引,是混淆了默认逻辑——Map风格Dataset不会主动返回索引,除非你在__getitem__里特意把索引加入返回值。比如如果你的__getitem__写成:

def __getitem__(self, idx):
    x = self.data[idx]
    y = self.labels[idx]
    return idx, x, y

那迭代DataLoader的时候,就需要用idx, x, y = batch才能拿到索引。

内容的提问来源于stack exchange,提问作者J Sravan Sainath Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 04:05:21