本人kaggle分享链接:https://www.kaggle.com/c/bengaliai-cv19/discussion/128115
def onehot_encoding(label, n_classes):
return torch.zeros(label.size(0), n_classes).to(label.device).scatter_(
1, label.view(-1, 1), 1)
def cross_entropy_loss(input, target, reduction):
logp = F.log_softmax(input, dim=1)
loss = torch.sum(-logp * target, dim=1)
if reduction == 'none':
return loss
elif reduction == 'mean':
return loss.mean()
elif reduction == 'sum':
return loss.sum()
else:
raise ValueError(
'`reduction` must be one of \'none\', \'mean\', or \'sum\'.')
def label_smoothing_criterion(epsilon=0.1, reduction='mean'):
def _label_smoothing_criterion(preds, targets):
n_classes = preds.size(1)
device = preds.device
onehot = onehot_encoding(targets, n_cl