As far as I know, Cross-entropy Loss for Hard-label is:
def hard_label(input, target):
    log_softmax = torch.nn.LogSoftmax(dim=1)
    nll = torch.nn.NLLLoss(reduction='none')
return nll(log_softmax(input), target) 

And then, How to implement Cross-entropy Loss for soft-label?

What kind of Softmax should I use ?
 nn.Softmax() or nn.LogSoftmax() ?
How to make target labels?
Just add random noise values to the zeros.?
[0,0,1] -> [0.1,0.2,0.7]