# How to calculate accuracy

hi, i have a semi - multi label problem

my specific problem is a bit different from a classic multi-label problem
i want to minimize my loss when the prediction is correct in only one class (or more)
i have a costume loss for my problem:

``````def new_loss_function(p, y, b):
eps = 0.000000000000000000000000001
losses = 0
k = len(y)
ones = torch.ones(1, 1).expand(b, k).cuda()
loss1 = -((ones-y)*(((ones-p)+(eps)).log())).sum(dim=1)
prod = (ones-y)*k - y*((p+ eps).log())
loss2 = torch.min(prod, dim=1)
losses = (loss1 + loss2).sum()
return losses / b
``````

it means, if the model was right in one class:
label = [1,1,0,0,1]
predication = [1,0,0,0,0]
in my case this is a success

im not sure how to calculate the accuracy of the model in that case

Based on your description you could probably use:

``````if (prediction == label).any():
nb_correct += 1
``````

to calculate the number of correct samples and the accuracy by dividing it by the number of samples.

without threashold?
the predictions are between 0 and 1

In your first post you’ve posted the predictions as zeros and ones, so I assumed you’ve already applied a threshold. If that’s not the case, you should use a threshold to get the predictions.
The simplest case would be `0.` for logits and `0.5` for probabilities (after `sigmoid`).
The threshold can then be tuned using the ROC etc.