Pytorch “我的”中是否有逻辑错误;焦点损失“;功能?
“焦距损失”就是为了解决这些困难的样本而诞生的。我用二进制交叉来包装焦距损失函数 Pytork中的熵:Pytorch “我的”中是否有逻辑错误;焦点损失“;功能?,pytorch,loss,Pytorch,Loss,“焦距损失”就是为了解决这些困难的样本而诞生的。我用二进制交叉来包装焦距损失函数 Pytork中的熵: class FocalLoss(nn.Module): def __init__(self, gamma=2): super(FocalLoss, self).__init__() self.gamma = gamma def forward(self, pred, label): # label is not the
class FocalLoss(nn.Module):
def __init__(self, gamma=2):
super(FocalLoss, self).__init__()
self.gamma = gamma
def forward(self, pred, label):
# label is not the one-hot
true = torch.zeros_like(pred, dtype=torch.float)
for i, j in enumerate(label):
true[i, j] = 1.0
loss = nn.BCEWithLogitsLoss(pred, true)
pred_prob = torch.sigmoid(pred) # sigmoid
p_t = true * pred_prob + (1 - true) * (1 - pred_prob)
modulating_factor = (1.0 - p_t) ** self.gamma
loss *= modulating_factor
return loss.mean()
我在cifar10数据集中训练resnet18,以完成Classific任务,并使用它和nn.CrossEntropyLoss为
准确度的比较
但结果与我的预期相差甚远:交叉熵的准确度比我的焦距损失高出约5%!有人能在我上面的焦点丢失代码中找到逻辑错误吗