To get back to the original question:
F.log_softmax + nn.NLLLoss work exactly as raw logits + nn.CrossEntropyLoss.
I think this issue is now more of a general nature.
The validation loss might increase after a while. Sometimes your model just gets stuck and both losses stay the same for a (long) while.
I like to check for code or model bugs by using a small part of my training data and try to overfit my model on it, so that it reaches approx. 0 loss.
If that’s not possible with the current code, I will be looking for bugs or change the model architecture.