pytorch 你为什么要打乱测试数据集

qojgxg4l  于 6个月前  发布在  其他
关注(0)|答案(2)|浏览(187)

我完全理解使用与测试集分离的训练集。
我也理解为什么你会在训练集中打乱批次来计算迷你批次的梯度。
但是,广告中提到的pyTorch tutorial,我不明白为什么你会使用一个 Shuffle 的测试集一样:

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

字符串
这在什么情况下有用?

ni65a41a

ni65a41a1#

由于batch wise statistics,我对测试集进行了 Shuffle 。我正在计算每个批次的roc_auc_score。我正在执行二进制分类任务,并且从磁盘上的不同位置加载正面和负面示例。因此,在查看类时,生成的文件列表类似于[0,0,0,1,1,1]。如果不进行 Shuffle ,则可能会发生一个批次中只有一个类,并且batchwise分数计算失败。因此,我进行了 Shuffle ,但得到了强烈建议不要这样做的警告。事实上,每当我在测试集上对模型进行测试时,我都观察到了汇总统计中的随机性。感谢第一张海报,我想我现在知道为什么了。

uplii1fm

uplii1fm2#

在大多数情况下不需要,因为您不更新权重。
很难给出一个例子,但是依赖于批次的统计数据可能是一个例子-例如,跨批次的平均准确度。
尽管如此,我从来没有见过这样的事情,有人可能会认为(我同意), Shuffle 测试数据集引入了不必要的随机性(如果有的话),并使比较不可靠(在上面的例子中)之间的时代。

相关问题