Итак, я хотел бы рассчитать кривую RO C и AU C моего кода, где у меня есть 28 классов, и мои изображения могут быть несколькими одновременно. Например, изображение может принадлежать классам 1, 2 и 3 одновременно. У меня есть вектор из 28 позиций в качестве метки в y_true, и там он отмечен 1 в позиции для класса. Например, если изображение принадлежит классам 2, 3 и 5 в позициях 2, 3 и 5 вектора, они будут помечены 1 -> [0,0,1,1,0,1,0,0, 0, ..., 0]
def data_validate(samples, loss, network, f1_class):
x, y_true = samples #x-->valor na matriz, y --> label
x = x.cuda() #to GPU
y_true = y_true.cuda() #to GPU
y_pred = network(x) #aqui executa o forward do model.py dos {batch_size} e retorna o fc
y_pred = torch.sigmoid(y_pred)
erro = loss(y_pred, y_true)
f1_class.acumulate(y_pred.cpu().detach(), y_true.cpu().detach(),th=0.5)
print(y_pred)
for i in range(28):
auc_score = roc_auc_score(y_true[:][i].cpu().detach(), y_pred.cpu().detach(), multi_class='ovr')
return erro, y_pred.cpu().detach(), y_true.cpu().detach()
но я получаю эту ошибку -> ValueError: целевые оценки должны быть вероятностями для мультикласса roc_au c, т.е. они должны составлять до 1,0 более классов