torch.softmax and torch.sigmoid are not equivalent in the binary case
Given:
x_batch = torch.tensor([[-0.3, -0.7], [0.3, 0.7], [1.1, -0.7], [-1.1, 0.7]])

and then applying torch.sigmoid(x_batch):
tensor([[0.4256, 0.3318],
        [0.5744, 0.6682],
        [0.7503, 0.3318],
        [0.2497, 0.6682]])

gives a completely different result to torch.softmax(x_batch,dim=1):
tensor([[0.5987, 0.4013],
        [0.4013, 0.5987],
        [0.8581, 0.1419],
        [0.1419, 0.8581]])

As per my understanding, isn't the softmax is exactly the same as the sigmoid in the binary case?

You are misinformed. Sigmoid and softmax are not equal, even for the 2 element case.
Consider x = [x1, x2].
sigmoid(x1) = 1 / (1 + exp(-x1))

but
softmax(x1) = exp(x1) / (exp(x1) + exp(x2))
            = 1 / (1 + exp(-x1)/exp(-x2))
            = 1 / (1 + exp(-(x1 - x2))
            = sigmoid(x1 - x2)

From the algebra we can see an equivalent relationship is
softmax(x, dim=1) = sigmoid(x - fliplr(x))

or in pytorch
x_softmax = torch.sigmoid(x_batch - torch.flip(x_batch, dims=(1,))

