Dace:

loss_fn = nn.MSELoss()


Mean Squared Error is not a good loss function for classification (Why MSE Cost Function for Binary Classification is a Bad Idea? 3)
Replace loss_fn = nn.MSELoss() by loss_fn = nn.CrossEntropyLoss() and let me know if it solved your problem.