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
相关产品推荐
相关产品推荐

