CrossEntropyLoss for multi-target

I know CrossEntropyLoss expects the correct class index as target instead of a one-hot encoded vector.
But I want my target vector to be the value distribution the network should output, like targets = [0.7, 0.1, 0.2].
I could write my own function, but I guess autograd would be much slower?
Why is multi-target not supported, is there an alternative?
I know of BCELoss, but it has an unnecessary second part which from what I understand punishes overvaluation of high target values to get closer to the exact distribution, like when the network outputs = [9.0, 0.0, 0.1] instead of [0.7, 0.1, 0.2], which I don’t want to punish.