chaslie:

Should i use a sigmoid function to normalise the results?


No, F.binary_cross_entropy_with_logits expects logits, so applying a sigmoid will yield wrong results.
The statistics between BCE and MSE losses are quite different, so you can’t expect loss values in the same range.



 chaslie:

how to choose the loss function?


Usually you won’t use MSELoss for a classification use case, but a regression one.
A multi-class classification use case will most likely work fine with nn.CrossEntropyLoss etc.
There are some baseline loss function, which should just work for the specific use cases, but of course there are exceptions as always.
That being said, your loss using BCE looks a bit strange. Could you post the output and target which creates this low loss value?