Remove the nn.Softmax at the end of the model, since nn.CrossEntropyLoss will internally apply F.log_softmax and nn.NLLLoss.
Also, probably unrelated to the training issue, but your linear layers are quite big.
I’m also a bit skeptical about using a dropout layer at the end of the model as it would mask logits.