The ground truth is already one hot encoded (as you mentioned), you do not have to use torch.max for it.  Following your code, y_test does not have to go through torch.max.
_,y_pred_tags = torch.max(y_pred,dim=1) is correct in my opinion (I use it too) as it gives the indices of the max output which is the position of the label (one-hot).
You can print y_pred_tags and compare it to the ground truth (y_train_batch) to get a clearer picture, .shape to also ensure that you are on the right track.