The code looks generally alright.
We recommend using raw logits and nn.BCEWithLogitsLoss, as the numerical stability is better than sigmoid + nn.BCELoss.
F.log_softmax is used together with e.g. nn.NLLLoss for a multi-classification use case.
You could rewrite the binary classification to a 2 class multi-class classification, but your approach should work.
If you want to try to reproduce your TensorFlow model, I would recommend to also check the parameter initializations, as they might differ for the used layers.