nn.CrossEntropyLoss uses F.log_softmax and nn.NLLLoss internally.
Since you are using softmax as your last activation, note that log_softmax will be applied on these activations again in the criterion.
Could you remove the softmax and rerun the code, please?