Pytorch 加权随机取样器-过采样还是欠采样? 问题
我正在PyTorch中为二进制分类培训一个深度学习模型,我有一个包含不平衡类比例的数据集。我的少数派班级占了给定观察值的10%。为了避免模型学习仅仅预测大多数类,我想在我的Pytorch 加权随机取样器-过采样还是欠采样? 问题,pytorch,oversampling,pytorch-dataloader,Pytorch,Oversampling,Pytorch Dataloader,我正在PyTorch中为二进制分类培训一个深度学习模型,我有一个包含不平衡类比例的数据集。我的少数派班级占了给定观察值的10%。为了避免模型学习仅仅预测大多数类,我想在我的DataLoader中使用torch.utils.data中的WeightedRandomSampler 假设我有1000观察值(900在类0,100在类1),我的数据加载器的批量大小为100 如果没有加权随机抽样,我希望每个训练阶段由10个批次组成 问题 当使用此采样器时,每个历元将只对10个批次进行采样-因此,模型是否会
DataLoader
中使用torch.utils.data
中的WeightedRandomSampler
假设我有1000
观察值(900
在类0
,100
在类1
),我的数据加载器的批量大小为100
如果没有加权随机抽样,我希望每个训练阶段由10个批次组成
问题
- 当使用此采样器时,每个历元将只对10个批次进行采样-因此,模型是否会在每个历元中“遗漏”大部分多数类,因为现在少数类在训练批次中的比例过高
- 使用采样器是否会导致每个历元取样超过10批(这意味着相同的少数群体观察可能会出现多次,而且训练速度会减慢)
num\u samples
,允许您指定当Dataset
与torch.utils.data.DataLoader
组合时实际创建的样本数(假设您正确加权):
- 如果将其设置为
,您将得到第一个案例len(数据集)
- 如果将其设置为
(在您的情况下),您将获得第二个案例1800
培训不会放慢速度,每个历元将花费更长的时间,但收敛应该大致相同(因为每个历元中的数据较多,因此需要较少的历元)。这是否回答了您的问题?还涉及: