PyTorch 中的标签平滑 - 使用 BCE 损失 - >数据本身进行平滑



我正在PyTorch中执行分类任务(二进制(,因此标签为0和1。不,我想引入标签平滑作为另一种正则化技术。因为我使用冰损失,所以没有这样的功能可以使用标签平滑在交叉熵损失中(对于大于0,1的人(。现在我正在考虑不是在损失中实现它,而是在数据本身中实现它。将我的y_true替换为例如0->0.1和1->0.9在他们陷入亏损之前?

如果标签平滑度为0.1 ,则可以将0替换为0.1,将1替换为0.9

criterion(disc_fake_pred, torch.zeros_like(disc_fake_pred)+0.1) #0.1
criterion(disc_real_pred, torch.ones_like(disc_real_pred)-0.1)  #0.9

两个简单的替代方案:

eps = 0.1
y_true = (1 - 2 * eps) * y_true + eps

或者使用clamp:

eps = 0.1
y_true = y_true.clamp(eps, 1 - eps)

最新更新