It seems you are using .round() in the wrong place.
As mentioned in each of my comments, knowing that the probability (after the sigmoid) is in the range [0,1], probability.round() is just an elegant way of doing probability >= 0.5, which returns 0. (False) if the value is in the range [0, 0.5[ and 1. (True) if the value is in the interval [0.5, 1]
And in both cases, I do .int() to convert them to integers (0. becomes 0 and 1. becomes 1)
So don’t use it anyhow.
It is important to distinguish between logits, probabilities and the final prediction of the model.
BCE with logits waits for the logits, BCE simply waits for the probabilities,   acc_score … waits for the predictions