There are a few small mistakes in your code.
In a vanilla classification use case, your target should be a LongTensor containing the class indices in the range [0, num_classes-1].
As it seems your target is one-hot encoded, so you could get the class indices by:
y_train_torch = torch.from_numpy(y_train).argmax()

This will also cast your target to torch.long, which is needed in nn.CrossEntropyLoss.
Since you are using nn.CrossEntropyLoss, you should pass raw logits into the loss function instead of the softmax probabilities. Just remove the last softmax layer and you should be good to go!