Hi, we use convolutional networks (like shufflenet) and are training single, multi-label and (single label) multi-class PyTorch models. We also need probability values for each prediction.
We would like to check best practice for these cases, and we haven’t found a clear answer online so far.
Describing each scenario:
Single label / binary

training label: single label (0/1)
training criterion: CrossEntropyLoss
prediction class: max(outputs)
prediction probability: softmax(outputs)

Single label / multi-class

training label: single label (0-X)
training criterion: CrossEntropyLoss
prediction class: max(outputs)
prediction probability: softmax(outputs)

Multi-label / binary

training label: an array of binary labels [0/1, 0/1, …]
training criterion: BCEWithLogitsLoss
prediction class: for each output > 0
prediction probability: sigmoid(outputs)

Is this the right way of doing this?
For single binary label, is it better to use arrays with single elements for training data and subsequently treat similar to multi-label? Should the same be done to train multi-class using input values no greater than 1?
Also for single binary label (2 classes), what’s the right way of obtaining a meaningful probability?
All feedback appreciated!