Hi,

This and this didn’t really help.

I want to use two losses. First loss uses smooth labels and the second one uses the one_hot vector. For the smooth label, i converted the one_hot vector `targets = torch.tensor([[1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0] ...)`

into a smooth vector. Since pytorch doesn’t provide a ready function for smooth target, I did this and want to confirm I’m doing things right?

```
outputs = torch.randn(6, 10)
targets_onehot = torch.zeros(outputs.size())
smooth_label = 1. / self.eps # 0.2
smooth_target = targets_onehot.scatter(1, targets.unsqueeze(1), smooth_label)
logfeat = F.log_softmax(outputs, dim=1)
smooth_loss = logfeat * smooth_target
smooth_loss = torch.sum(smooth_loss, 1) / smooth_loss.size(1)
real_target = targets_onehot.scatter(1, targets.unsqueeze(1), float(1))
real_loss = logfeat * real_target
real_loss = torch.sum(real_loss, 1) / real_loss.size(1)
loss = - real_loss * ( 1 - self.flags) - self.flags * smooth_loss
```

I short, i would like to use a loss based on `torch.tensor([[0.2, 0, 0, 0, 0, 0, 0], [0, 0.2, 0, 0, 0, 0], [0, 0, 0.2, 0, 0, 0] ...)`` and another one based on `

targets `

Looking at torch.scatter, I’m a little bit confused how the operation is done. Am I doing things right?

Thank you.