Как реализовать дифференцируемую функцию потерь, которая подсчитывает количество неправильных прогнозов?
output = [1,0,4,10]
target = [1,2,4,15]
loss = np.count_nonzero(output != target) / len(output) # [0,1,0,1] -> 2 / 4 -> 0.5
Я пробовал несколько реализаций, но они не дифференцируемы. RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
def hamming_loss(output, target):
#loss = torch.tensor(torch.nonzero(output != target).size(0)).double() / target.size(0)
#loss = torch.sum((output != target), dim=0).double() / target.size(0)
loss = torch.mean((output != target).double())
return loss
Может быть, есть какая-то похожая, но дифференциальная функция потерь?