小编clu*_*ess的帖子

在 CrossEntropyLoss 和 BCELoss (PyTorch) 中使用权重

我正在训练 PyTorch 模型来执行二元分类。我的少数群体约占数据的 10%,所以我想使用加权损失函数。的文档BCELossCrossEntropyLoss我可以为每个示例使用 a 'weight'

但是,当我声明CE_loss = nn.BCELoss()ornn.CrossEntropyLoss()然后 do CE_Loss(output, target, weight=batch_weights), where output, target, and batch_weightsare Tensors of 时batch_size,我收到以下错误消息:

forward() got an unexpected keyword argument 'weight'
Run Code Online (Sandbox Code Playgroud)

pytorch loss-function

14
推荐指数
3
解决办法
2万
查看次数

加权随机采样器 - 过采样还是欠采样?

问题

我正在 PyTorch 中训练一个用于二元分类的深度学习模型,并且我有一个包含不平衡类比例的数据集。10%我的少数派课程由给定的观察结果组成。为了避免模型学习只预测多数类,我想WeightedRandomSamplertorch.utils.data我的DataLoader.

假设我有1000观察结果(900在类中0100在类中1),并且我的数据加载器的批量大小100为。

如果没有加权随机抽样,我预计每个训练周期将包含 10 个批次。

问题

  • 使用此采样器时,每个时期只会对 10 个批次进行采样 - 因此,由于少数类别现在在训练批次中所占比例过高,模型是否会在每个时期“错过”大部分类别的大部分?
  • 使用采样器是否会导致每个 epoch 采样超过 10 个批次(这意味着相同的少数类观察结果可能会出现多次,并且训练速度也会减慢)?

pytorch oversampling pytorch-dataloader

9
推荐指数
1
解决办法
1万
查看次数