I wanted to set class weights in binary classification problem. My code looked like this
weights = [1, 20] class_weights = torch.FloatTensor(weights).cuda() class_learner = text_classifier_learner(data_cls, AWD_LSTM) class_learner.loss_func = torch.nn.NLLLoss(weight=class_weights)
and I’ve got negative values of a loss. First negative values were quite small about -0.01 but they started to converge to minus infinity. Does anyone know why this might happen? I also tried Flattening the loss function like this but the results were the same.
def NNLLossFlat(*args, axis:int=-1, **kwargs): return FlattenedLoss(torch.nn.NLLLoss, *args, axis=axis, **kwargs)
Btw when I used
CrossEntropyFlat instead of
torch.nn.NLLLoss it worked fine.