Custom Loss in Fastai

Hello everyone

Recently as part of one of the Kaggle Competitions, I needed to build a custom loss function which calculates the “Pearson’s correlation coefficients”.

Here is this loss function code:

class Regress_Loss_1(torch.nn.Module):
    
    def __init__(self):
        super(Regress_Loss_1,self).__init__()
        
    def forward(self,x,y):
        x = input
        y = target
        vx = x - torch.mean(x)
        vy = y - torch.mean(y)
        
        cost = torch.sum(vx * vy) / (torch.sqrt(torch.sum(vx ** 2)) * torch.sqrt(torch.sum(vy ** 2)))
        loss = cost.mean()
        loss = loss*(-1)
        return loss

Now, after defining my learner, I am using this custom loss function to be used in my training as follows:

learn_tfidf.crit = Regress_Loss_1

While this does not give me any error, I wanted to check whether this is a right approach?

Best Regards
Abhik

I am following what’s written here by Jeremy:

and one more post here: