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

PyTorch中DataLoader长度与对应Dataset不符问题求助

问题原因解析

你混淆了DataLoader的长度含义——它的长度代表数据迭代时的批次数量,并非样本总数,你的数据集拆分本身没有问题。

具体验证

  1. 样本总数确认:1026 + 257 = 1283,和你拆分时的计算逻辑(1283*0.8≈1026,1283*0.2≈256.6,加1后取257)完全匹配,拆分后的样本数量是正确的。
  2. 反推batch_size:
    • 训练集:1026个样本对应257个批次,说明你的batch_size=4——256个批次各含4个样本,最后1个批次含2个样本(DataLoader默认drop_last=False,不会丢弃不足批次的样本),总批次为256+1=257。
    • 验证集:257个样本对应65个批次,同理是64个批次各含4个样本,最后1个批次含1个样本,总批次为64+1=65,和你的输出完全吻合。

查看真实样本数的方法

如果要确认DataLoader对应的样本总数,可以用以下代码统计:

# 统计训练集总样本数
total_train = sum(len(batch) for batch in loader_train)
# 统计验证集总样本数
total_val = sum(len(batch) for batch in loader_val)
print(total_train, total_val)

运行后会输出1026 257,和拆分后的样本数一致。

拆分数据集的严谨写法

为避免手动计算的整数误差,建议用以下方式拆分,确保两个子集长度之和等于原数据集长度:

train_size = int(0.8 * len(dataset))
val_size = len(dataset) - train_size
dataset_train, dataset_valid = random_split(dataset, [train_size, val_size])

内容的提问来源于stack exchange,提问作者Lorewalker Cho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 23:18:33