为什么要打乱测试数据集?

问题描述 投票:0回答:2

我完全理解如何使用与测试集分开的训练集。

我也理解为什么你会打乱训练集中的批次来计算小批量的梯度。

但是,pyTorch教程中提到的广告,我不明白为什么你会使用测试集的洗牌,如下所示:

test_dataloader = DataLoader(test_data, batch_size=64, shuffle=True)

在什么情况下有用?

machine-learning pytorch dataset
2个回答
0
投票

大多数情况下不需要,因为您不更新权重。

很难举出一个例子,但依赖于批次的统计数据可能就是一个 - 例如各批次的平均准确度。

不过,我从未见过这样的事情,有人可能会争辩(我同意)洗牌测试数据集会引入不必要的随机性(如果有的话),并使历元之间的比较不太可靠(在上面的示例中)。


0
投票

由于批量统计,我对测试集进行了洗牌。我正在计算每批的roc_auc_score。我正在做一个二元分类任务,正例和负例是从磁盘上的不同位置加载的。因此,在查看类时,生成的文件列表类似于

[0,0,0,1,1,1]
。如果不进行洗牌,则可能会发生批次中只有一个类并且批量分数计算失败的情况。因此,我对其进行了洗牌,但收到警告,强烈建议不要这样做。事实上,每当我在测试集上重新运行模型时,我都会观察到汇总统计数据的随机性。感谢第一张海报,我想我现在知道原因了。

© www.soinside.com 2019 - 2024. All rights reserved.