RuntimeError: cannot unsqueeze empty tensor

The loss is decreasing in the first epoch and gets stuck in the second.
Maybe your setup is not optimal for your data.
Try to overfit a small sample of your data, i.e. take just a few samples (just up to 10 samples for each class), and try to decrease the training error to approx. zero.
Also, your learning rate might be a bit too high, which often yields an approx. constant loss.

I don’t really like the fact that the loss changes that much regarding the batch size.
Are you seeing the same effect for other batch sizes, i.e. 0.25*batch_size == 0.25*loss?
This should usually not be the case, as the loss is averaged over the batch dimension using the default settings for the loss function.