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

PyTorch中验证集与测试集DataLoader是否应开启shuffle?

在PyTorch中是否应该对验证集和测试集进行shuffle?

我认为答案是否定的,应该设置shuffle=False。

官方教程提到:‘训练模型时,我们通常以“小批量”传递样本,每个epoch重新打乱数据以减少模型过拟合’——这说明只有训练集需要设置shuffle=True,但官方示例里却把验证集和测试集也都设成了True,这让我有点困惑,希望能得到明确指导。

我现在遇到的问题是:把测试集的shuffle设为True后,测试准确率低得离谱,训练和测试的指标如下:

Epoch: 1 | Train Loss: 2.1650 | Train Acc: 0.4683 | Test Loss: 6.2742 | Test Acc: 0.0349
Epoch: 2 | Train Loss: 1.2008 | Train Acc: 0.6624 | Test Loss: 6.9259 | Test Acc: 0.0359
Epoch: 3 | Train Loss: 0.9474 | Train Acc: 0.7325 | Test Loss: 7.3948 | Test Acc: 0.0365
Epoch: 4 | Train Loss: 0.7897 | Train Acc: 0.7808 | Test Loss: 7.7263 | Test Acc: 0.0352
Epoch: 5 | Train Loss: 0.6799 | Train Acc: 0.8186 | Test Loss: 8.0628 | Test Acc: 0.0377
Epoch: 6 | Train Loss: 0.5953 | Train Acc: 0.8374 | Test Loss: 8.3828 | Test Acc: 0.0351
Epoch: 7 | Train Loss: 0.5269 | Train Acc: 0.8647 | Test Loss: 8.5854 | Test Acc: 0.0351
Epoch: 8 | Train Loss: 0.4693 | Train Acc: 0.8791 | Test Loss: 8.9052 | Test Acc: 0.0337
Epoch: 9 | Train Loss: 0.4234 | Train Acc: 0.8955 | Test Loss: 9.1290 | Test Acc: 0.0354

我的代码片段如下:

train_ds = ImageFolder(
    root=TRAIN_DIR,
    transform=pretrained_weights.transforms(),
)

test_ds = ImageFolder(
    root=TEST_DIR,
    transform=pretrained_weights.transforms(),
)

train_dl = DataLoader(
    dataset=train_ds, batch_size=BATCH_SIZE, shuffle=True
)

test_dl = DataLoader(
    dataset=test_ds, batch_size=BATCH_SIZE, shuffle=True
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 04:20:19