If you are dealing with a binary classification use case, a single output channel and nn.BCEWithLogitsLoss should be working.
Make sure to pass raw logits to the criterion (no sigmoid at the end).
nn.CrossEntropyLoss is usually applied for multi class classification/segmentation use cases, where you are dealing with more than two classes.
In this case, your target should be a LongTensor, should not have the channel dimension, and should contain the class indices in [0, nb_classes-1].
Since your accuracy is low, could you try to overfit a small data sample and see, if your model and training routine can successfully overfit this sample?