Well, I think the implementation is correct. I was only missing a
super(MultiLLFunction, self).__init__()

in the instance initialization. The following is the code again.
class MultiLLFunction(nn.Module):

     def __init__(self, beta):
         super(MultiLLFunction, self).__init__()
         self.beta = beta

     def forward(self, predictions, targets):
             """Multilabel loss
             Args:
                 predictions: a tensor containing pixel wise predictions
                     shape: [batch_size, num_classes, width, height]
                 ground_truth: a tensor containing binary labels
                     shape: [batch_size, num_classes, width, height]
             """
         log1 = torch.log(predictions)
         log2 = torch.log(1-predictions)
         term1 = torch.mul(torch.mul(targets, -self.beta), log1)
         term2 = torch.mul(torch.mul(1-targets, 1-self.beta), log2)
         sum_of_terms = term1 - term2
         return torch.sum(sum_of_terms)

I tested it against torch.nn.BCELoss() removing the (1-beta) term and dividing the returned loss by number of samples and it worked just fine.
I had to pass the predictions through a sigmoid to make it work, otherwise it outputs NaN.