Thank you for the reply.
I find it weird that the model convergence is dependent on the execution. That is, sometimes it has high loss and other times the loss is low.
I have kept all hyperparameters at fixed values and have always used the same model for different executions.
class Regressor(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(4, 144)
        self.fc2 = nn.Linear(144, 72)
        self.fc3 = nn.Linear(72, 18)
        self.fc4 = nn.Linear(18, 2)


    def forward(self, x):


        #print("fc1", x.shape)
        x = F.relu(self.fc1(x))
        #print("fc2", x.shape)
        x = F.relu(self.fc2(x))
        #print("fc3", x.shape)
        x = F.relu(self.fc3(x))
        #print("fc4", x.shape)
        x = F.relu(self.fc4(x))
        #print("last", x.shape)

        return x

Do you think it might have something to do with autograd or random weight initialization?