nn.CrossEntropyLoss combines log_softmax and NLLLoss which means you should not apply softmax at the end of your network output.
So you are not required to apply softmax since the criterion takes care of it.
If you want to use softmax at the end, then you should apply log after that(as you mentioned above) and use NLLLoss as the criterion.