You are right that nn.BCEWithLogitsLoss is used for binary classification use cases, but can also be used for multi-label classifications, while nn.CrossEntropyLoss is used for multi-class classifications (each sample has a single label only, which isn’t the case here).
@Krys try to overfit a small dataset (e.g. just 10 samples) and make sure your model is able to do so by playing around with some hyperparamters. Once this is done you could try to scale up the use case again.