Hi Julio!



 Julio:

if exists any activation function that returns a number of the probability of each class being correct, independently of the others


sigmoid() 2 should do what you want.
A couple of points:
I imagine that you have a Linear layer feeding your activation function.
The Linear layer produces a set raw-score logits.  softmax() converts
these to a set class probabilities that sum to one.  sigmoid() converts
each logit individually to the (binary) probability of the corresponding
class be “active” or “inactive.”
No (built-in) loss function can be used directly with softmax().  For
the single-label, multi-class  case, you should  either feed the logits to
CrossEntropyLoss, or use log_softmax() as the activation function,
and pass its output to the NLLLoss loss function.
For the multi-label, multi-class case, you can feed sigmoid() to
BCELoss, but you will be better off, for numerical reasons feeding the
logits to BCEWithLogitsLoss.
I wouldn’t just take your trained single-label model and replace
softmax() with sigmoid() to make multi-label predictions.  You
can start with your trained single-label model, and use it as a
pre-trained starting point for further training of your multi-label
model.
Best.
K. Frank