Sorry, I haven’t used MultiLabelMarginLoss
yet and would have to get familiar with it, before posting a wrong approach.
However, for multi-label classification, you could use a sigmoid
in your last layer and feed it to BCELoss
:
x = Variable(torch.randn(10, 3))
output = F.sigmoid(x)
target = Variable(torch.Tensor(10, 3).random_(2))
criterion = nn.BCELoss(reduce=False)
loss = criterion(output, target)
print(loss)
Hope this snippet is helpful.